root / synthbench / euroben-ports / base / C-MPI / mod2f / .svn / text-base / cntdpls.c.svn-base @ 0:839f52ef7657
History | View | Annotate | Download (974 Bytes)
1 |
#include "mpiargs.h" |
---|---|
2 |
|
3 |
void cntdpls( int scnts[], int sdpls[], int rcnts[], int rdpls[], int dir ) |
4 |
// --------------------------------------------------------------------- |
5 |
// --- 'cntdpls' computes the element counts and displacements to be |
6 |
// used in 'MPI_Alltoallv' based on the data in external array |
7 |
// 'sizes'. |
8 |
// --------------------------------------------------------------------- |
9 |
{ |
10 |
int dim1, dim2, k; |
11 |
// --------------------------------------------------------------------- |
12 |
if ( dir == 0 ) { |
13 |
dim1 = 0; |
14 |
dim2 = 1; |
15 |
} |
16 |
else { |
17 |
dim1 = 1; |
18 |
dim2 = 0; |
19 |
} |
20 |
for( k = 0; k < nodes; k++ ) { |
21 |
scnts[k] = sizes[me][dim1]*sizes[k][dim2]; |
22 |
} |
23 |
sdpls[0] = 0; |
24 |
for( k = 1; k < nodes; k++ ) { |
25 |
sdpls[k] = sdpls[k-1] + scnts[k-1]; |
26 |
} |
27 |
for( k = 0; k < nodes; k++ ) { |
28 |
rcnts[k] = sizes[me][dim2]*sizes[k][dim1]; |
29 |
} |
30 |
rdpls[0] = 0; |
31 |
for( k = 1; k < nodes; k++ ) { |
32 |
rdpls[k] = rdpls[k-1] + rcnts[k-1]; |
33 |
} |
34 |
} |