Blame test/mpi/manual/dimsbalanced.c

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