Gentoo Archives: gentoo-commits

From: Andrew Ammerlaan <andrewammerlaan@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/proj/guru:master commit in: sys-cluster/lwgrp/
Date: Fri, 30 Jul 2021 10:05:11
Message-Id: 1627515576.8c606849fd4e35202f211dc20f92cce32e576eb7.andrewammerlaan@gentoo
1 commit: 8c606849fd4e35202f211dc20f92cce32e576eb7
2 Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
3 AuthorDate: Wed Jul 28 23:27:11 2021 +0000
4 Commit: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
5 CommitDate: Wed Jul 28 23:39:36 2021 +0000
6 URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=8c606849
7
8 sys-cluster/lwgrp: initial import
9
10 Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>
11
12 sys-cluster/lwgrp/Manifest | 1 +
13 sys-cluster/lwgrp/lwgrp-1.0.3.ebuild | 37 +++++++++++++++++++++++
14 sys-cluster/lwgrp/metadata.xml | 58 ++++++++++++++++++++++++++++++++++++
15 3 files changed, 96 insertions(+)
16
17 diff --git a/sys-cluster/lwgrp/Manifest b/sys-cluster/lwgrp/Manifest
18 new file mode 100644
19 index 000000000..449722ba3
20 --- /dev/null
21 +++ b/sys-cluster/lwgrp/Manifest
22 @@ -0,0 +1 @@
23 +DIST lwgrp-1.0.3.tar.gz 39217 BLAKE2B 2e17fce02989832670a7bcd73f80e3aabe185b5d1120777f3d3d2e0bd630e62b6ae64638b724ca3edd9d9c7d7177e505433c16382b5e1fdbc79e8a1b1de1a622 SHA512 b8acdd5fcec8de01f80acfe0f6df33fe3281bd6465a33ad739af06189782f116ac32caacbd458d2e04ba2eaedfbebf67f42cc343f7bee43f8d708e2b8b3c1565
24
25 diff --git a/sys-cluster/lwgrp/lwgrp-1.0.3.ebuild b/sys-cluster/lwgrp/lwgrp-1.0.3.ebuild
26 new file mode 100644
27 index 000000000..d74dc038e
28 --- /dev/null
29 +++ b/sys-cluster/lwgrp/lwgrp-1.0.3.ebuild
30 @@ -0,0 +1,37 @@
31 +# Copyright 2019-2021 Gentoo Authors
32 +# Distributed under the terms of the GNU General Public License v2
33 +
34 +EAPI=7
35 +
36 +inherit autotools
37 +
38 +DESCRIPTION="Light-weight Group Library"
39 +HOMEPAGE="https://github.com/LLNL/lwgrp"
40 +SRC_URI="https://github.com/LLNL/lwgrp/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
41 +
42 +LICENSE="BSD"
43 +SLOT="0"
44 +KEYWORDS="~amd64"
45 +IUSE="mpianysource"
46 +
47 +RDEPEND="virtual/mpi"
48 +DEPEND="${RDEPEND}"
49 +
50 +src_prepare() {
51 + default
52 + eautoreconf
53 +}
54 +
55 +src_configure() {
56 + local myconf=(
57 + $(use_enable mpianysource)
58 + )
59 + econf "${myconf[@]}"
60 +}
61 +
62 +src_install() {
63 + default
64 + rm -r "${ED}/usr/share/${PN}" || die
65 + find "${ED}" -name '*.la' -delete || die
66 + find "${ED}" -name '*.a' -delete || die
67 +}
68
69 diff --git a/sys-cluster/lwgrp/metadata.xml b/sys-cluster/lwgrp/metadata.xml
70 new file mode 100644
71 index 000000000..b04f0479f
72 --- /dev/null
73 +++ b/sys-cluster/lwgrp/metadata.xml
74 @@ -0,0 +1,58 @@
75 +<?xml version="1.0" encoding="UTF-8"?>
76 +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
77 +<pkgmetadata>
78 + <maintainer type="person">
79 + <email>lssndrbarbieri@×××××.com</email>
80 + <name>Alessandro Barbieri</name>
81 + </maintainer>
82 + <longdescription lang="en">
83 +The light-weight group library defines data structures and collective
84 +operations to group MPI processes as an ordered set. Such groups are
85 +useful as substitutes for MPI communicators when the overhead of
86 +communicator creation is too costly. For example, certain sorting
87 +algorithms recursively divide processes into subgroups as the sort
88 +algorithm progresses. These groups may be different with each
89 +invocation, so that it is inefficient to create and destroy
90 +communicators during the sort routine.
91 +
92 +Data structures:
93 +chain - each member records addresses of left and right members first and last rank set boundary to MPI_PROC_NULL
94 +ring - like the chain, except first and last rank wrap around
95 +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)
96 +logring - each member records addresses of each member 2^d hops to left and right with wrap at ends
97 +
98 +We represent groups of processes using a doubly-linked list called
99 +a "chain". This is a very simple struct that records the number
100 +of processes in the group, the rank of the local process within the
101 +group, the address of the local process, and the addresses of the
102 +processes having ranks one less (left) and one more (right) than the
103 +local process. We implement the LWGRP library on top of MPI, so for
104 +addresses we record a parent communicator and ranks within that
105 +communicator. To be light-weight, the reference to the communicator
106 +is a literal copy of the handle value, not a full dup.
107 +
108 +Since each member only stores the addresses for a few other group
109 +members, it is the responsibility of higher level software to exchange
110 +address information for more general point-to-point communication.
111 +Additionally, the caller is responsible for choosing tag values as a
112 +group context.
113 +
114 +There is also a "ring", which is like a chain, but it wraps around
115 +at the ends.
116 +
117 +There are two structures, called a logchain and logring, used to cache
118 +adddresses of more group members. These structures must be used in
119 +conjunction with either a chain or ring, respectively. They cache
120 +addresses for processes that are 2^d hops to the left and right sides
121 +where d ranges from 0 to log(N)-1 inclusive. This pattern enables
122 +one to construct trees, and so it's useful to cache this information
123 +for use in collective operations.
124 + </longdescription>
125 + <use>
126 + <flag name="mpianysource">Specify whether to use MPI_ANY_SOURCE</flag>
127 + </use>
128 + <upstream>
129 + <bugs-to>https://github.com/LLNL/lwgrp/issues</bugs-to>
130 + <remote-id type="github">LLNL/lwgrp</remote-id>
131 + </upstream>
132 +</pkgmetadata>