sys-cluster/lwgrp: initial import

Signed-off-by: Alessandro Barbieri <lssndrbarbieri@gmail.com>
This commit is contained in:
Alessandro Barbieri
2021-07-29 01:27:11 +02:00
parent 62ff0ec718
commit 8c606849fd
3 changed files with 96 additions and 0 deletions

View File

@@ -0,0 +1 @@
DIST lwgrp-1.0.3.tar.gz 39217 BLAKE2B 2e17fce02989832670a7bcd73f80e3aabe185b5d1120777f3d3d2e0bd630e62b6ae64638b724ca3edd9d9c7d7177e505433c16382b5e1fdbc79e8a1b1de1a622 SHA512 b8acdd5fcec8de01f80acfe0f6df33fe3281bd6465a33ad739af06189782f116ac32caacbd458d2e04ba2eaedfbebf67f42cc343f7bee43f8d708e2b8b3c1565

View File

@@ -0,0 +1,37 @@
# Copyright 2019-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit autotools
DESCRIPTION="Light-weight Group Library"
HOMEPAGE="https://github.com/LLNL/lwgrp"
SRC_URI="https://github.com/LLNL/lwgrp/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="BSD"
SLOT="0"
KEYWORDS="~amd64"
IUSE="mpianysource"
RDEPEND="virtual/mpi"
DEPEND="${RDEPEND}"
src_prepare() {
default
eautoreconf
}
src_configure() {
local myconf=(
$(use_enable mpianysource)
)
econf "${myconf[@]}"
}
src_install() {
default
rm -r "${ED}/usr/share/${PN}" || die
find "${ED}" -name '*.la' -delete || die
find "${ED}" -name '*.a' -delete || die
}

View File

@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>lssndrbarbieri@gmail.com</email>
<name>Alessandro Barbieri</name>
</maintainer>
<longdescription lang="en">
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.
</longdescription>
<use>
<flag name="mpianysource">Specify whether to use MPI_ANY_SOURCE</flag>
</use>
<upstream>
<bugs-to>https://github.com/LLNL/lwgrp/issues</bugs-to>
<remote-id type="github">LLNL/lwgrp</remote-id>
</upstream>
</pkgmetadata>