Git Product home page Git Product logo

lwgrp's Introduction

The light-weight group library defines data structures and collective
operations to group MPI processes as an ordered set.  Such groups are
useful as substitutes for MPI communicators when the overhead of
communicator creation is too costly.  For example, certain sorting
algorithms recursively divide processes into subgroups as the sort
algorithm progresses.  These groups may be different with each
invocation, so that it is inefficient to create and destroy
communicators during the sort routine.

Data structures:
  chain    - each member records addresses of left and right members
             first and last rank set boundary to MPI_PROC_NULL
  ring     - like the chain, except first and last rank wrap around 
  logchain - each member records addresses of each member 2^d hops
             to left and right d=0..log(N)-1 (MPI_PROC_NULL at ends)
  logring  - each member records addresses of each member 2^d hops
             to left and right with wrap at ends

We represent groups of processes using a doubly-linked list called
a "chain".  This is a very simple struct that records the number
of processes in the group, the rank of the local process within the
group, the address of the local process, and the addresses of the
processes having ranks one less (left) and one more (right) than the
local process.  We implement the LWGRP library on top of MPI, so for
addresses we record a parent communicator and ranks within that
communicator.  To be light-weight, the reference to the communicator
is a literal copy of the handle value, not a full dup.

Since each member only stores the addresses for a few other group
members, it is the responsibility of higher level software to exchange
address information for more general point-to-point communication.
Additionally, the caller is responsible for choosing tag values as a
group context.

There is also a "ring", which is like a chain, but it wraps around
at the ends.

There are two structures, called a logchain and logring, used to cache
adddresses of more group members.  These structures must be used in
conjunction with either a chain or ring, respectively.  They cache
addresses for processes that are 2^d hops to the left and right sides
where d ranges from 0 to log(N)-1 inclusive.  This pattern enables
one to construct trees, and so it's useful to cache this information
for use in collective operations.

lwgrp's People

Contributors

adammoody avatar gonsie avatar camstan avatar

Stargazers

 avatar Edgar Leon avatar Jon Bringhurst avatar David Beckingsale avatar Todd Gamblin avatar

Watchers

 avatar Jharrod LaFon avatar Mark Grondona avatar James Cloos avatar Dong H. Ahn avatar Kento Sato avatar  avatar Nathan Hjelm avatar Anthony M. Agelastos avatar Graham Van Heule avatar Jeff Long avatar Matthew LeGendre avatar Devendar Bureddy avatar  avatar Giuseppe Di Natale avatar Greg Becker avatar Danielle Sikich avatar  avatar

lwgrp's Issues

please port to cmake

I cannot build this using spack on Sierra-like platforms because it doesn't know ppc64le.

configure: error: unable to locate liblwgrp installation

/usr/local/lib $ ls liblwgrp.a libyogrt libyogrt.so.1 pkgconfig python3.5 liblwgrp.la libyogrt.la libyogrt.so.1.0.0 pypy2.7 liblwgrp.so libyogrt.so pdsh python2.7
./configure --with-lwgrp="/usr/local/lib/"
Checking whether /usr/bin/mpicc responds to '-showme:compile'... yes checking for liblwgrp installation... configure: error: unable to locate liblwgrp installation

This was run on a raspbian stretch release: https://www.raspberrypi.org/downloads/raspbian/ dated April 2019
Other packages related to SCR compiled and built without problem. This is a Raspberry PI 3B with an armv71 CPU with 4 64-bit cores.

Note that this appears to build correctly in the context of scr/buildmedeps but not from a git clone, so I suspect a minor configuration/context issue.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.