1 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
3 * (C) 2003 by Argonne National Laboratory.
4 * See COPYRIGHT in top-level directory.
10 int prodof( int ndims, const int dims[] );
11 int increasing( int ndims, const int dims[] );
13 int prodof( int ndims, const int dims[] )
16 for (i=0; i<ndims; i++)
21 int increasing( int ndims, const int dims[] )
24 for (i=1; i<ndims; i++) {
25 if (dims[i] > dims[i-1]) {
26 printf ("%d = dims[%d] > dims[%d] = %d\n", dims[i], i,
33 int main( int argc, char *argv[] )
36 int dims[4], nnodes, ndims;
38 MTest_Init( &argc, &argv );
40 /* Test multiple dims create values. For each, make sure that the
41 product of dims is the number of input nodes */
44 dims[0] = dims[1] = 0;
45 MPI_Dims_create( nnodes, ndims, dims );
46 if (prodof(ndims,dims) != nnodes) {
48 printf( "dims create returned the wrong decomposition for %d in %d dims\n",
51 if (increasing( ndims, dims )) {
53 printf( "dims create returned a decomposition with increasing dimensions (see MPI-1 standard section 6.5)\n" );
54 printf( "dims create returned the wrong decomposition for %d in %d dims\n",
58 /* Test multiple dims create values. For each, make sure that the
59 product of dims is the number of input nodes */
62 dims[0] = dims[1] = 0;
63 MPI_Dims_create( nnodes, ndims, dims );
64 if (prodof(ndims,dims) != nnodes) {
66 printf( "dims create returned the wrong decomposition for %d in %d dims\n",
69 if (increasing( ndims, dims )) {
71 printf( "dims create returned a decomposition with increasing dimensions (see MPI-1 standard section 6.5)\n" );
72 printf( "dims create returned the wrong decomposition for %d in %d dims\n",
76 nnodes = 2*2*3*3*5*7*11;
78 dims[0] = dims[1] = 0;
79 MPI_Dims_create( nnodes, ndims, dims );
80 if (prodof(ndims,dims) != nnodes) {
82 printf( "dims create returned the wrong decomposition for %d in %d dims\n",
85 if (increasing( ndims, dims )) {
87 printf( "dims create returned a decomposition with increasing dimensions (see MPI-1 standard section 6.5)\n" );
88 printf( "dims create returned the wrong decomposition for %d in %d dims\n",
94 dims[0] = dims[1] = 0;
95 MPI_Dims_create( nnodes, ndims, dims );
96 if (prodof(ndims,dims) != nnodes) {
98 printf( "dims create returned the wrong decomposition for %d in %d dims\n",
101 if (increasing( ndims, dims )) {
103 printf( "dims create returned a decomposition with increasing dimensions (see MPI-1 standard section 6.5)\n" );
104 printf( "dims create returned the wrong decomposition for %d in %d dims\n",
110 dims[0] = dims[1] = dims[2] = dims[3] = 0;
111 MPI_Dims_create( nnodes, ndims, dims );
112 if (prodof(ndims,dims) != nnodes) {
114 printf( "dims create returned the wrong decomposition for %d in %d dims\n",
117 if (increasing( ndims, dims )) {
119 printf( "dims create returned a decomposition with increasing dimensions (see MPI-1 standard section 6.5)\n" );
120 printf( "dims create returned the wrong decomposition for %d in %d dims\n",
126 dims[0] = dims[1] = dims[2] = dims[3] = 0;
127 MPI_Dims_create( nnodes, ndims, dims );
128 if (prodof(ndims,dims) != nnodes) {
130 printf( "dims create returned the wrong decomposition for %d in %d dims\n",
133 if (increasing( ndims, dims )) {
135 printf( "dims create returned a decomposition with increasing dimensions (see MPI-1 standard section 6.5)\n" );
136 printf( "dims create returned the wrong decomposition for %d in %d dims\n",
140 MTest_Finalize( errs );