1 |
commit: 8fe21c3fd5b5e7be60a75a09ba4b3ec4bad417bd |
2 |
Author: David Seifert <soap <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sat Jan 29 00:00:14 2022 +0000 |
4 |
Commit: David Seifert <soap <AT> gentoo <DOT> org> |
5 |
CommitDate: Sat Jan 29 00:00:14 2022 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8fe21c3f |
7 |
|
8 |
sci-biology/tree-puzzle: fix build system and MPI |
9 |
|
10 |
Closes: https://bugs.gentoo.org/690900 |
11 |
Closes: https://bugs.gentoo.org/810502 |
12 |
Closes: https://bugs.gentoo.org/814185 |
13 |
Signed-off-by: David Seifert <soap <AT> gentoo.org> |
14 |
|
15 |
.../files/tree-puzzle-5.2-MPI-3.0.patch | 362 +++++++++++++++++++++ |
16 |
sci-biology/tree-puzzle/tree-puzzle-5.2.ebuild | 25 +- |
17 |
2 files changed, 375 insertions(+), 12 deletions(-) |
18 |
|
19 |
diff --git a/sci-biology/tree-puzzle/files/tree-puzzle-5.2-MPI-3.0.patch b/sci-biology/tree-puzzle/files/tree-puzzle-5.2-MPI-3.0.patch |
20 |
new file mode 100644 |
21 |
index 000000000000..66e3e6482338 |
22 |
--- /dev/null |
23 |
+++ b/sci-biology/tree-puzzle/files/tree-puzzle-5.2-MPI-3.0.patch |
24 |
@@ -0,0 +1,362 @@ |
25 |
+https://bugs.gentoo.org/690900 |
26 |
+rename MPI 1.0 to 3.0+ functions: |
27 |
+- MPI_Address -> MPI_Get_address |
28 |
+- MPI_Type_struct -> MPI_Type_create_struct |
29 |
+ |
30 |
+--- a/src/ppuzzle.c |
31 |
++++ b/src/ppuzzle.c |
32 |
+@@ -297,13 +297,13 @@ |
33 |
+ else MPI_Recv(&dummy, 0, MPI_INT, PP_MyMaster, PP_UPDATEEEI, PP_Comm, &stat); |
34 |
+ |
35 |
+ Dtypes[0] = MPI_DOUBLE; Dtypelens[0] = tpmradix; |
36 |
+- MPI_Address(&(Eval[0]), &(Dtypeaddr[0])); |
37 |
++ MPI_Get_address(&(Eval[0]), &(Dtypeaddr[0])); |
38 |
+ Dtypes[1] = MPI_DOUBLE; Dtypelens[1] = tpmradix * tpmradix; |
39 |
+- MPI_Address(&(Evec[0][0]), &(Dtypeaddr[1])); |
40 |
++ MPI_Get_address(&(Evec[0][0]), &(Dtypeaddr[1])); |
41 |
+ Dtypes[2] = MPI_DOUBLE; Dtypelens[2] = tpmradix * tpmradix; |
42 |
+- MPI_Address(&(Ievc[0][0]), &(Dtypeaddr[2])); |
43 |
++ MPI_Get_address(&(Ievc[0][0]), &(Dtypeaddr[2])); |
44 |
+ |
45 |
+- MPI_Type_struct(3, Dtypelens, Dtypeaddr, Dtypes, &PP_Data); |
46 |
++ MPI_Type_create_struct(3, Dtypelens, Dtypeaddr, Dtypes, &PP_Data); |
47 |
+ MPI_Type_commit(&PP_Data); |
48 |
+ |
49 |
+ MPI_Bcast (MPI_BOTTOM, 1, PP_Data, PP_MyMaster, PP_Comm); |
50 |
+@@ -341,19 +341,19 @@ |
51 |
+ double* DMVector = new_dvector(jobs); |
52 |
+ |
53 |
+ Dtypes[0] = MPI_DOUBLE; Dtypelens[0] = jobs; |
54 |
+- MPI_Address(&(DMVector[0]), &(Dtypeaddr[0])); |
55 |
++ MPI_Get_address(&(DMVector[0]), &(Dtypeaddr[0])); |
56 |
+ Dtypes[1] = MPI_DOUBLE; Dtypelens[1] = numcats; |
57 |
+- MPI_Address(&(Rates[0]), &(Dtypeaddr[1])); |
58 |
++ MPI_Get_address(&(Rates[0]), &(Dtypeaddr[1])); |
59 |
+ Dtypes[2] = MPI_DOUBLE; Dtypelens[2] = 1; |
60 |
+- MPI_Address(&(fracinv), &(Dtypeaddr[2])); |
61 |
++ MPI_Get_address(&(fracinv), &(Dtypeaddr[2])); |
62 |
+ Dtypes[3] = MPI_DOUBLE; Dtypelens[3] = tpmradix; |
63 |
+- MPI_Address(&(Eval[0]), &(Dtypeaddr[3])); |
64 |
++ MPI_Get_address(&(Eval[0]), &(Dtypeaddr[3])); |
65 |
+ Dtypes[4] = MPI_DOUBLE; Dtypelens[4] = tpmradix * tpmradix; |
66 |
+- MPI_Address(&(Evec[0][0]), &(Dtypeaddr[4])); |
67 |
++ MPI_Get_address(&(Evec[0][0]), &(Dtypeaddr[4])); |
68 |
+ Dtypes[5] = MPI_DOUBLE; Dtypelens[5] = tpmradix * tpmradix; |
69 |
+- MPI_Address(&(Ievc[0][0]), &(Dtypeaddr[5])); |
70 |
++ MPI_Get_address(&(Ievc[0][0]), &(Dtypeaddr[5])); |
71 |
+ |
72 |
+- MPI_Type_struct(6, Dtypelens, Dtypeaddr, Dtypes, &PP_Data); |
73 |
++ MPI_Type_create_struct(6, Dtypelens, Dtypeaddr, Dtypes, &PP_Data); |
74 |
+ MPI_Type_commit(&PP_Data); |
75 |
+ |
76 |
+ if (PP_IamMaster) { |
77 |
+@@ -719,10 +719,10 @@ |
78 |
+ #endif |
79 |
+ doubles[0] = frconst; |
80 |
+ |
81 |
+- MPI_Address(ints, Dtypeaddr); |
82 |
+- MPI_Address(doubles, (Dtypeaddr+1)); |
83 |
++ MPI_Get_address(ints, Dtypeaddr); |
84 |
++ MPI_Get_address(doubles, (Dtypeaddr+1)); |
85 |
+ |
86 |
+- MPI_Type_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_Sizes); |
87 |
++ MPI_Type_create_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_Sizes); |
88 |
+ MPI_Type_commit(&PP_Sizes); |
89 |
+ |
90 |
+ for (dest=1; dest<PP_NumProcs; dest++) { |
91 |
+@@ -797,10 +797,10 @@ |
92 |
+ fprintf(STDOUT, "(%2d) Receiving Sizes ...\n", PP_Myid); |
93 |
+ # endif /* PVERBOSE3 */ |
94 |
+ |
95 |
+- MPI_Address(ints, Dtypeaddr); |
96 |
+- MPI_Address(doubles, (Dtypeaddr+1)); |
97 |
++ MPI_Get_address(ints, Dtypeaddr); |
98 |
++ MPI_Get_address(doubles, (Dtypeaddr+1)); |
99 |
+ |
100 |
+- MPI_Type_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_Sizes); |
101 |
++ MPI_Type_create_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_Sizes); |
102 |
+ MPI_Type_commit(&PP_Sizes); |
103 |
+ |
104 |
+ error = MPI_Probe(PP_MyMaster, MPI_ANY_TAG, PP_Comm, &stat); |
105 |
+@@ -889,31 +889,31 @@ |
106 |
+ # endif /* PVERBOSE2 */ |
107 |
+ |
108 |
+ Dtypes [0] = MPI_CHAR; Dtypelens [0] = Maxspc * Numptrn; |
109 |
+- MPI_Address(&(Seqpat[0][0]), &(Dtypeaddr[0])); |
110 |
++ MPI_Get_address(&(Seqpat[0][0]), &(Dtypeaddr[0])); |
111 |
+ Dtypes [1] = MPI_INT; Dtypelens [1] = Maxsite ; |
112 |
+- MPI_Address(&(Alias[0]), &(Dtypeaddr[1])); |
113 |
++ MPI_Get_address(&(Alias[0]), &(Dtypeaddr[1])); |
114 |
+ Dtypes [2] = MPI_INT; Dtypelens [2] = Numptrn ; |
115 |
+- MPI_Address(&(Weight[0]), &(Dtypeaddr[2])); |
116 |
++ MPI_Get_address(&(Weight[0]), &(Dtypeaddr[2])); |
117 |
+ Dtypes [3] = MPI_INT; Dtypelens [3] = Numptrn ; |
118 |
+- MPI_Address(&(constpat[0]), &(Dtypeaddr[3])); |
119 |
++ MPI_Get_address(&(constpat[0]), &(Dtypeaddr[3])); |
120 |
+ Dtypes [4] = MPI_DOUBLE; Dtypelens [4] = numcats ; |
121 |
+- MPI_Address(&(Rates[0]), &(Dtypeaddr[4])); |
122 |
++ MPI_Get_address(&(Rates[0]), &(Dtypeaddr[4])); |
123 |
+ Dtypes [5] = MPI_DOUBLE; Dtypelens [5] = tpmradix ; |
124 |
+- MPI_Address(&(Eval[0]), &(Dtypeaddr[5])); |
125 |
++ MPI_Get_address(&(Eval[0]), &(Dtypeaddr[5])); |
126 |
+ Dtypes [6] = MPI_DOUBLE; Dtypelens [6] = tpmradix ; |
127 |
+- MPI_Address(&(Freqtpm[0]), &(Dtypeaddr[6])); |
128 |
++ MPI_Get_address(&(Freqtpm[0]), &(Dtypeaddr[6])); |
129 |
+ Dtypes [7] = MPI_DOUBLE; Dtypelens [7] = tpmradix * tpmradix ; |
130 |
+- MPI_Address(&(Evec[0][0]), &(Dtypeaddr[7])); |
131 |
++ MPI_Get_address(&(Evec[0][0]), &(Dtypeaddr[7])); |
132 |
+ Dtypes [8] = MPI_DOUBLE; Dtypelens [8] = tpmradix * tpmradix ; |
133 |
+- MPI_Address(&(Ievc[0][0]), &(Dtypeaddr[8])); |
134 |
++ MPI_Get_address(&(Ievc[0][0]), &(Dtypeaddr[8])); |
135 |
+ Dtypes [9] = MPI_DOUBLE; Dtypelens [9] = tpmradix * tpmradix ; |
136 |
+- MPI_Address(&(iexp[0][0]), &(Dtypeaddr[9])); |
137 |
++ MPI_Get_address(&(iexp[0][0]), &(Dtypeaddr[9])); |
138 |
+ Dtypes [10] = MPI_DOUBLE; Dtypelens [10] = Maxspc * Maxspc ; |
139 |
+- MPI_Address(&(Distanmat[0][0]), &(Dtypeaddr[10])); |
140 |
++ MPI_Get_address(&(Distanmat[0][0]), &(Dtypeaddr[10])); |
141 |
+ Dtypes [11] = MPI_DOUBLE; Dtypelens [11] = numcats * tpmradix * tpmradix ; |
142 |
+- MPI_Address(&(ltprobr[0][0][0]), &(Dtypeaddr[11])); |
143 |
++ MPI_Get_address(&(ltprobr[0][0][0]), &(Dtypeaddr[11])); |
144 |
+ |
145 |
+- MPI_Type_struct(12, Dtypelens, Dtypeaddr, Dtypes, &PP_Data); |
146 |
++ MPI_Type_create_struct(12, Dtypelens, Dtypeaddr, Dtypes, &PP_Data); |
147 |
+ MPI_Type_commit(&PP_Data); |
148 |
+ |
149 |
+ |
150 |
+@@ -984,31 +984,31 @@ |
151 |
+ # endif /* PVERBOSE2 */ |
152 |
+ |
153 |
+ Dtypes [0] = MPI_CHAR; Dtypelens [0] = Maxspc * Numptrn; |
154 |
+- MPI_Address(&(Seqpat[0][0]), &(Dtypeaddr[0])); |
155 |
++ MPI_Get_address(&(Seqpat[0][0]), &(Dtypeaddr[0])); |
156 |
+ Dtypes [1] = MPI_INT; Dtypelens [1] = Maxsite ; |
157 |
+- MPI_Address(&(Alias[0]), &(Dtypeaddr[1])); |
158 |
++ MPI_Get_address(&(Alias[0]), &(Dtypeaddr[1])); |
159 |
+ Dtypes [2] = MPI_INT; Dtypelens [2] = Numptrn ; |
160 |
+- MPI_Address(&(Weight[0]), &(Dtypeaddr[2])); |
161 |
++ MPI_Get_address(&(Weight[0]), &(Dtypeaddr[2])); |
162 |
+ Dtypes [3] = MPI_INT; Dtypelens [3] = Numptrn ; |
163 |
+- MPI_Address(&(constpat[0]), &(Dtypeaddr[3])); |
164 |
++ MPI_Get_address(&(constpat[0]), &(Dtypeaddr[3])); |
165 |
+ Dtypes [4] = MPI_DOUBLE; Dtypelens [4] = numcats ; |
166 |
+- MPI_Address(&(Rates[0]), &(Dtypeaddr[4])); |
167 |
++ MPI_Get_address(&(Rates[0]), &(Dtypeaddr[4])); |
168 |
+ Dtypes [5] = MPI_DOUBLE; Dtypelens [5] = tpmradix ; |
169 |
+- MPI_Address(&(Eval[0]), &(Dtypeaddr[5])); |
170 |
++ MPI_Get_address(&(Eval[0]), &(Dtypeaddr[5])); |
171 |
+ Dtypes [6] = MPI_DOUBLE; Dtypelens [6] = tpmradix ; |
172 |
+- MPI_Address(&(Freqtpm[0]), &(Dtypeaddr[6])); |
173 |
++ MPI_Get_address(&(Freqtpm[0]), &(Dtypeaddr[6])); |
174 |
+ Dtypes [7] = MPI_DOUBLE; Dtypelens [7] = tpmradix * tpmradix ; |
175 |
+- MPI_Address(&(Evec[0][0]), &(Dtypeaddr[7])); |
176 |
++ MPI_Get_address(&(Evec[0][0]), &(Dtypeaddr[7])); |
177 |
+ Dtypes [8] = MPI_DOUBLE; Dtypelens [8] = tpmradix * tpmradix ; |
178 |
+- MPI_Address(&(Ievc[0][0]), &(Dtypeaddr[8])); |
179 |
++ MPI_Get_address(&(Ievc[0][0]), &(Dtypeaddr[8])); |
180 |
+ Dtypes [9] = MPI_DOUBLE; Dtypelens [9] = tpmradix * tpmradix ; |
181 |
+- MPI_Address(&(iexp[0][0]), &(Dtypeaddr [9])); |
182 |
++ MPI_Get_address(&(iexp[0][0]), &(Dtypeaddr [9])); |
183 |
+ Dtypes [10] = MPI_DOUBLE; Dtypelens [10] = Maxspc * Maxspc ; |
184 |
+- MPI_Address(&(Distanmat[0][0]), &(Dtypeaddr[10])); |
185 |
++ MPI_Get_address(&(Distanmat[0][0]), &(Dtypeaddr[10])); |
186 |
+ Dtypes [11] = MPI_DOUBLE; Dtypelens [11] = numcats * tpmradix * tpmradix ; |
187 |
+- MPI_Address(&(ltprobr[0][0][0]), &(Dtypeaddr[11])); |
188 |
++ MPI_Get_address(&(ltprobr[0][0][0]), &(Dtypeaddr[11])); |
189 |
+ |
190 |
+- MPI_Type_struct(12, Dtypelens, Dtypeaddr, Dtypes, &PP_Data); |
191 |
++ MPI_Type_create_struct(12, Dtypelens, Dtypeaddr, Dtypes, &PP_Data); |
192 |
+ MPI_Type_commit(&PP_Data); |
193 |
+ |
194 |
+ for (dest=1; dest<PP_NumProcs; dest++) { |
195 |
+@@ -1150,10 +1150,10 @@ |
196 |
+ ints[4] = usebestq; |
197 |
+ ints[5] = approx; |
198 |
+ |
199 |
+- MPI_Address(ints, Dtypeaddr); |
200 |
+- MPI_Address(doubles, (Dtypeaddr+1)); |
201 |
++ MPI_Get_address(ints, Dtypeaddr); |
202 |
++ MPI_Get_address(doubles, (Dtypeaddr+1)); |
203 |
+ |
204 |
+- MPI_Type_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_Quart); |
205 |
++ MPI_Type_create_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_Quart); |
206 |
+ MPI_Type_commit(&PP_Quart); |
207 |
+ |
208 |
+ # ifdef PVERBOSE2 |
209 |
+@@ -1201,10 +1201,10 @@ |
210 |
+ |
211 |
+ PP_quartrecved++; |
212 |
+ PP_quartrecvedn++; |
213 |
+- MPI_Address(ints, Dtypeaddr); |
214 |
+- MPI_Address(doubles, (Dtypeaddr+1)); |
215 |
++ MPI_Get_address(ints, Dtypeaddr); |
216 |
++ MPI_Get_address(doubles, (Dtypeaddr+1)); |
217 |
+ |
218 |
+- MPI_Type_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_Quart); |
219 |
++ MPI_Type_create_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_Quart); |
220 |
+ MPI_Type_commit(&PP_Quart); |
221 |
+ |
222 |
+ error = MPI_Recv(MPI_BOTTOM, 1, PP_Quart, MPI_ANY_SOURCE, PP_QUART, PP_Comm, &stat); |
223 |
+@@ -1368,10 +1368,10 @@ |
224 |
+ ulis[5] = fullresqs; /* number of fully resolved quartets */ |
225 |
+ ulis[6] = missingqs; /* number of missing quartets */ |
226 |
+ |
227 |
+- MPI_Address(ulis, Dtypeaddr); |
228 |
+- MPI_Address(ints, (Dtypeaddr+1)); |
229 |
++ MPI_Get_address(ulis, Dtypeaddr); |
230 |
++ MPI_Get_address(ints, (Dtypeaddr+1)); |
231 |
+ |
232 |
+- MPI_Type_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_QBlockSpecs); |
233 |
++ MPI_Type_create_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_QBlockSpecs); |
234 |
+ MPI_Type_commit(&PP_QBlockSpecs); |
235 |
+ |
236 |
+ # ifdef PVERBOSE2 |
237 |
+@@ -1384,12 +1384,12 @@ |
238 |
+ fprintf(STDOUT, "(%2d) ... Sent QuartBlockSpecs (%ld, %ld, %ld, %d)\n", PP_Myid, ulis[0], ulis[1], ulis[2], ints[0]); |
239 |
+ # endif /* PVERBOSE3 */ |
240 |
+ |
241 |
+- MPI_Address(trueaddr, DtypeaddrRes); |
242 |
++ MPI_Get_address(trueaddr, DtypeaddrRes); |
243 |
+ DtypelensRes[0] = truenum; |
244 |
+ |
245 |
+- MPI_Address(bq, (DtypeaddrRes + 1)); |
246 |
++ MPI_Get_address(bq, (DtypeaddrRes + 1)); |
247 |
+ DtypelensRes[1] = numofbq; |
248 |
+- MPI_Type_struct(2, DtypelensRes, DtypeaddrRes, DtypesRes, &PP_QBlockRes); |
249 |
++ MPI_Type_create_struct(2, DtypelensRes, DtypeaddrRes, DtypesRes, &PP_QBlockRes); |
250 |
+ MPI_Type_commit(&PP_QBlockRes); |
251 |
+ |
252 |
+ error = MPI_Ssend(MPI_BOTTOM, 1, PP_QBlockRes, PP_MyMaster, PP_QUARTBLOCK, PP_Comm); |
253 |
+@@ -1455,10 +1455,10 @@ |
254 |
+ # ifdef PVERBOSE3 |
255 |
+ fprintf(STDOUT, "(%2d) Receiving QuartBlock ...\n", PP_Myid); |
256 |
+ # endif /* PVERBOSE3 */ |
257 |
+- MPI_Address(ulis, Dtypeaddr); |
258 |
+- MPI_Address(ints, (Dtypeaddr+1)); |
259 |
++ MPI_Get_address(ulis, Dtypeaddr); |
260 |
++ MPI_Get_address(ints, (Dtypeaddr+1)); |
261 |
+ |
262 |
+- MPI_Type_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_QBlockSpecs); |
263 |
++ MPI_Type_create_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_QBlockSpecs); |
264 |
+ MPI_Type_commit(&PP_QBlockSpecs); |
265 |
+ |
266 |
+ MPI_Probe(MPI_ANY_SOURCE, PP_QUARTBLOCKSPECS, PP_Comm, &stat); |
267 |
+@@ -1486,13 +1486,13 @@ |
268 |
+ # endif /* PVERBOSE3 */ |
269 |
+ |
270 |
+ DtypelensRes[0] = truenum; |
271 |
+- MPI_Address(trueaddr, DtypeaddrRes); |
272 |
++ MPI_Get_address(trueaddr, DtypeaddrRes); |
273 |
+ |
274 |
+ bq = calloc((size_t) *numofbq, sizeof(uli)); |
275 |
+ |
276 |
+ DtypelensRes[1] = *numofbq; |
277 |
+- MPI_Address(bq, (DtypeaddrRes+1)); |
278 |
+- MPI_Type_struct(2, DtypelensRes, DtypeaddrRes, DtypesRes, &PP_QBlockRes); |
279 |
++ MPI_Get_address(bq, (DtypeaddrRes+1)); |
280 |
++ MPI_Type_create_struct(2, DtypelensRes, DtypeaddrRes, DtypesRes, &PP_QBlockRes); |
281 |
+ MPI_Type_commit(&PP_QBlockRes); |
282 |
+ |
283 |
+ error = MPI_Recv(MPI_BOTTOM, 1, PP_QBlockRes, dest, PP_QUARTBLOCK, PP_Comm, &stat); |
284 |
+@@ -1637,8 +1637,8 @@ |
285 |
+ Dtypelens[0] = (Numquartets + 1)/2; |
286 |
+ } |
287 |
+ |
288 |
+- MPI_Address(&(quartetinfo[0]), Dtypeaddr); |
289 |
+- MPI_Type_struct(1, Dtypelens, Dtypeaddr, Dtypes, &PP_AllQuarts); |
290 |
++ MPI_Get_address(&(quartetinfo[0]), Dtypeaddr); |
291 |
++ MPI_Type_create_struct(1, Dtypelens, Dtypeaddr, Dtypes, &PP_AllQuarts); |
292 |
+ MPI_Type_commit(&PP_AllQuarts); |
293 |
+ |
294 |
+ for (dest=1; dest<PP_NumProcs; dest++) { |
295 |
+@@ -1686,8 +1686,8 @@ |
296 |
+ Dtypelens[0] = (*Numquartets + 1)/2; |
297 |
+ } |
298 |
+ |
299 |
+- MPI_Address(&(quartetinfo[0]), Dtypeaddr); |
300 |
+- MPI_Type_struct(1, Dtypelens, Dtypeaddr, Dtypes, &PP_AllQuarts); |
301 |
++ MPI_Get_address(&(quartetinfo[0]), Dtypeaddr); |
302 |
++ MPI_Type_create_struct(1, Dtypelens, Dtypeaddr, Dtypes, &PP_AllQuarts); |
303 |
+ MPI_Type_commit(&PP_AllQuarts); |
304 |
+ |
305 |
+ error = MPI_Recv(MPI_BOTTOM, 1, PP_AllQuarts, PP_MyMaster, PP_ALLQUARTS, PP_Comm, &stat); |
306 |
+@@ -1748,13 +1748,13 @@ |
307 |
+ for (n=0; n<(int)blocksize; n++) { |
308 |
+ Dtypes[n] = MPI_CHAR; |
309 |
+ Dtypelens[n] = (taxa - 3) * taxa; |
310 |
+- MPI_Address(&(biparts[n][0][0]), &(Dtypeaddr[n])); |
311 |
++ MPI_Get_address(&(biparts[n][0][0]), &(Dtypeaddr[n])); |
312 |
+ } |
313 |
+ pstptr = pstlist; |
314 |
+ for (n=0; n<pstnum; n++) { |
315 |
+ Dtypes[(int)blocksize + n] = MPI_CHAR; |
316 |
+ Dtypelens[(int)blocksize + n] = psteptreestrlen; |
317 |
+- MPI_Address((*pstptr).tree, &(Dtypeaddr[(int)blocksize + n])); |
318 |
++ MPI_Get_address((*pstptr).tree, &(Dtypeaddr[(int)blocksize + n])); |
319 |
+ pstnumarr[n] = (*pstptr).count; |
320 |
+ # ifdef PVERBOSE3 |
321 |
+ fprintf(STDOUT, "(%2d) Sent tree item ->%d: [%d/%d] #=%d \"%s\"\n", |
322 |
+@@ -1764,9 +1764,9 @@ |
323 |
+ } |
324 |
+ Dtypes[((int)blocksize + pstnum)] = MPI_INT; |
325 |
+ Dtypelens[((int)blocksize + pstnum)] = pstnum; |
326 |
+- MPI_Address(&(pstnumarr[0]), &(Dtypeaddr[((int)blocksize + pstnum)])); |
327 |
++ MPI_Get_address(&(pstnumarr[0]), &(Dtypeaddr[((int)blocksize + pstnum)])); |
328 |
+ |
329 |
+- MPI_Type_struct(((int)blocksize + pstnum + 1), Dtypelens, Dtypeaddr, Dtypes, &PP_Biparts); |
330 |
++ MPI_Type_create_struct(((int)blocksize + pstnum + 1), Dtypelens, Dtypeaddr, Dtypes, &PP_Biparts); |
331 |
+ MPI_Type_commit(&PP_Biparts); |
332 |
+ |
333 |
+ error = MPI_Ssend(MPI_BOTTOM, 1, PP_Biparts, PP_MyMaster, PP_PUZZLEBLOCK, PP_Comm); |
334 |
+@@ -1843,20 +1843,20 @@ |
335 |
+ (*bip)[n] = new_cmatrix(*taxa - 3, *taxa); |
336 |
+ Dtypes[n] = MPI_CHAR; |
337 |
+ Dtypelens[n] = (*taxa - 3) * *taxa; |
338 |
+- MPI_Address(&((*bip)[n][0][0]), &(Dtypeaddr[n])); |
339 |
++ MPI_Get_address(&((*bip)[n][0][0]), &(Dtypeaddr[n])); |
340 |
+ } |
341 |
+ for (n=0; n<pstlistnum; n++) { |
342 |
+ pstarr[n] = (char *)calloc((size_t) psteptreestrlen, sizeof(char)); |
343 |
+ Dtypes[(int)*blocksize + n] = MPI_CHAR; |
344 |
+ Dtypelens[(int)*blocksize + n] = psteptreestrlen; |
345 |
+- MPI_Address(&(pstarr[n][0]), &(Dtypeaddr[(int)*blocksize + n])); |
346 |
++ MPI_Get_address(&(pstarr[n][0]), &(Dtypeaddr[(int)*blocksize + n])); |
347 |
+ } |
348 |
+ |
349 |
+ Dtypes[(int)*blocksize + pstlistnum] = MPI_INT; |
350 |
+ Dtypelens[(int)*blocksize + pstlistnum] = pstlistnum; |
351 |
+- MPI_Address(&(pstnumarr[0]), &(Dtypeaddr[(int)*blocksize + pstlistnum])); |
352 |
++ MPI_Get_address(&(pstnumarr[0]), &(Dtypeaddr[(int)*blocksize + pstlistnum])); |
353 |
+ |
354 |
+- MPI_Type_struct(((int)*blocksize + pstlistnum + 1), Dtypelens, Dtypeaddr, Dtypes, &PP_Biparts); |
355 |
++ MPI_Type_create_struct(((int)*blocksize + pstlistnum + 1), Dtypelens, Dtypeaddr, Dtypes, &PP_Biparts); |
356 |
+ MPI_Type_commit(&PP_Biparts); |
357 |
+ |
358 |
+ error = MPI_Recv(MPI_BOTTOM, 1, PP_Biparts, dest, PP_PUZZLEBLOCK, PP_Comm, &stat); |
359 |
+@@ -2053,10 +2053,10 @@ |
360 |
+ fprintf(STDOUT, "(%2d) ... Sent DONE Signal\n", PP_Myid); |
361 |
+ # endif /* PVERBOSE3 */ |
362 |
+ |
363 |
+- MPI_Address(ints, Dtypeaddr); |
364 |
+- MPI_Address(doubles, (Dtypeaddr+1)); |
365 |
++ MPI_Get_address(ints, Dtypeaddr); |
366 |
++ MPI_Get_address(doubles, (Dtypeaddr+1)); |
367 |
+ |
368 |
+- MPI_Type_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_Stats); |
369 |
++ MPI_Type_create_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_Stats); |
370 |
+ MPI_Type_commit(&PP_Stats); |
371 |
+ |
372 |
+ doquartrecved[0] = 0; |
373 |
+@@ -2173,10 +2173,10 @@ |
374 |
+ doubles[4] = tarr.cpu; |
375 |
+ doubles[5] = tarr.time; |
376 |
+ |
377 |
+- MPI_Address(ints, Dtypeaddr); |
378 |
+- MPI_Address(doubles, (Dtypeaddr+1)); |
379 |
++ MPI_Get_address(ints, Dtypeaddr); |
380 |
++ MPI_Get_address(doubles, (Dtypeaddr+1)); |
381 |
+ |
382 |
+- MPI_Type_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_Stats); |
383 |
++ MPI_Type_create_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_Stats); |
384 |
+ MPI_Type_commit(&PP_Stats); |
385 |
+ |
386 |
+ error = MPI_Ssend(MPI_BOTTOM, 1, PP_Stats, PP_MyMaster, PP_STATS, PP_Comm); |
387 |
|
388 |
diff --git a/sci-biology/tree-puzzle/tree-puzzle-5.2.ebuild b/sci-biology/tree-puzzle/tree-puzzle-5.2.ebuild |
389 |
index 8e2a07f8183e..06fc28376ff5 100644 |
390 |
--- a/sci-biology/tree-puzzle/tree-puzzle-5.2.ebuild |
391 |
+++ b/sci-biology/tree-puzzle/tree-puzzle-5.2.ebuild |
392 |
@@ -1,7 +1,7 @@ |
393 |
-# Copyright 1999-2019 Gentoo Authors |
394 |
+# Copyright 1999-2022 Gentoo Authors |
395 |
# Distributed under the terms of the GNU General Public License v2 |
396 |
|
397 |
-EAPI=7 |
398 |
+EAPI=8 |
399 |
|
400 |
inherit toolchain-funcs |
401 |
|
402 |
@@ -18,14 +18,10 @@ RESTRICT="test" |
403 |
DEPEND="mpi? ( virtual/mpi )" |
404 |
RDEPEND="${DEPEND}" |
405 |
|
406 |
-PATCHES=( "${FILESDIR}"/${PN}-impl-dec.patch ) |
407 |
- |
408 |
-pkg_setup() { |
409 |
- use mpi && [[ $(tc-getCC) == icc* ]] && |
410 |
- die "The parallelized version of tree-puzzle cannot be compiled using icc. |
411 |
- Either disable the \"mpi\" USE flag to compile only the non-parallelized |
412 |
- version of the program, or use gcc as your compiler (CC=\"gcc\")." |
413 |
-} |
414 |
+PATCHES=( |
415 |
+ "${FILESDIR}"/${PN}-impl-dec.patch |
416 |
+ "${FILESDIR}"/${P}-MPI-3.0.patch |
417 |
+) |
418 |
|
419 |
src_configure() { |
420 |
default |
421 |
@@ -38,9 +34,14 @@ src_configure() { |
422 |
fi |
423 |
} |
424 |
|
425 |
+src_compile() { |
426 |
+ # hopelessly terrible build system, abuses Automake |
427 |
+ emake -j1 |
428 |
+} |
429 |
+ |
430 |
src_install() { |
431 |
- dobin src/puzzle |
432 |
- use mpi && dobin src/ppuzzle |
433 |
+ dobin src/puzzle $(usev mpi src/ppuzzle) |
434 |
+ |
435 |
einstalldocs |
436 |
|
437 |
# User manual |