Blame test/mpi/manual/dimsbalanced.c

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
}