|
Packit |
0848f5 |
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
|
|
Packit |
0848f5 |
/*
|
|
Packit |
0848f5 |
* (C) 2008 by Argonne National Laboratory.
|
|
Packit |
0848f5 |
* See COPYRIGHT in top-level directory.
|
|
Packit |
0848f5 |
*/
|
|
Packit |
0848f5 |
/* This is a simple test program to see how well balanced the output from
|
|
Packit |
0848f5 |
MPI_Dims_create is. This test can be run with a single process
|
|
Packit |
0848f5 |
and does not need mpiexec.
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
There is no standard result. Instead, the output should be examined to
|
|
Packit |
0848f5 |
see if the results are acceptable. For example, make sure that Dims_create
|
|
Packit |
0848f5 |
of 2*2*2 in three dimensions returns 2,2,2 (and not 1,1,8).
|
|
Packit |
0848f5 |
*/
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
#include "mpi.h"
|
|
Packit |
0848f5 |
#include <stdio.h>
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
static int verbose = 1;
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
int main(int argc, char *argv[])
|
|
Packit |
0848f5 |
{
|
|
Packit |
0848f5 |
int i, j, dims[3], size;
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
MPI_Init(&argc, &argv);
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
for (i = 2; i < 12; i++) {
|
|
Packit |
0848f5 |
for (j = 0; j < 2; j++)
|
|
Packit |
0848f5 |
dims[j] = 0;
|
|
Packit |
0848f5 |
MPI_Dims_create(i * i, 2, dims);
|
|
Packit |
0848f5 |
if (verbose)
|
|
Packit |
0848f5 |
printf("Dims_create(%d,2) = (%d,%d)\n", i * i, dims[0], dims[1]);
|
|
Packit |
0848f5 |
for (j = 0; j < 3; j++)
|
|
Packit |
0848f5 |
dims[j] = 0;
|
|
Packit |
0848f5 |
MPI_Dims_create(i * i * i, 3, dims);
|
|
Packit |
0848f5 |
if (verbose)
|
|
Packit |
0848f5 |
printf("Dims_create(%d,3) = (%d,%d,%d)\n", i * i * i, dims[0], dims[1], dims[2]);
|
|
Packit |
0848f5 |
}
|
|
Packit |
0848f5 |
size = 2 * 5 * 7 * 11;
|
|
Packit |
0848f5 |
for (j = 0; j < 3; j++)
|
|
Packit |
0848f5 |
dims[j] = 0;
|
|
Packit |
0848f5 |
MPI_Dims_create(size, 2, dims);
|
|
Packit |
0848f5 |
if (verbose)
|
|
Packit |
0848f5 |
printf("Dims_create(%d,2) = (%d,%d)\n", size, dims[0], dims[1]);
|
|
Packit |
0848f5 |
for (j = 0; j < 3; j++)
|
|
Packit |
0848f5 |
dims[j] = 0;
|
|
Packit |
0848f5 |
MPI_Dims_create(size, 3, dims);
|
|
Packit |
0848f5 |
if (verbose)
|
|
Packit |
0848f5 |
printf("Dims_create(%d,3) = (%d,%d,%d)\n", size, dims[0], dims[1], dims[2]);
|
|
Packit |
0848f5 |
size = 5 * 5 * 2 * 7 * 7 * 7;
|
|
Packit |
0848f5 |
for (j = 0; j < 3; j++)
|
|
Packit |
0848f5 |
dims[j] = 0;
|
|
Packit |
0848f5 |
MPI_Dims_create(size, 2, dims);
|
|
Packit |
0848f5 |
if (verbose)
|
|
Packit |
0848f5 |
printf("Dims_create(%d,2) = (%d,%d)\n", size, dims[0], dims[1]);
|
|
Packit |
0848f5 |
for (j = 0; j < 3; j++)
|
|
Packit |
0848f5 |
dims[j] = 0;
|
|
Packit |
0848f5 |
MPI_Dims_create(size, 3, dims);
|
|
Packit |
0848f5 |
if (verbose)
|
|
Packit |
0848f5 |
printf("Dims_create(%d,3) = (%d,%d,%d)\n", size, dims[0], dims[1], dims[2]);
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
size = 12;
|
|
Packit |
0848f5 |
for (j = 0; j < 3; j++)
|
|
Packit |
0848f5 |
dims[j] = 0;
|
|
Packit |
0848f5 |
MPI_Dims_create(size, 2, dims);
|
|
Packit |
0848f5 |
if (verbose)
|
|
Packit |
0848f5 |
printf("Dims_create(%d,2) = (%d,%d)\n", size, dims[0], dims[1]);
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
MPI_Finalize();
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
return 0;
|
|
Packit |
0848f5 |
}
|