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> |