llnl / lwgrp Goto Github PK
View Code? Open in Web Editor NEWThe Light-weight Group Library provides methods for MPI codes to quickly create and destroy process groups
License: Other
The Light-weight Group Library provides methods for MPI codes to quickly create and destroy process groups
License: Other
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.
Needs a release to be published -- for another project. :)
I suggest http://semver.org/ for a release string.
I cannot build this using spack on Sierra-like platforms because it doesn't know ppc64le.
/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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.