Statistics
| Branch: | Revision:

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
}