#include #include #include #include "mpi.h" #define SELF "mpi_memerror" void mpi_bail(); #define MPI_ERROR_CHECK(X, Y) { \ int _err_rtn_;\ if((_err_rtn_ = X) < 0){\ fprintf(stderr, "MPI error code %d: %s failed -- aborting\n", _err_rtn_, #X);\ (Y); } } void mpi_bail(){ MPI_Finalize(); exit(EXIT_FAILURE); } int main(int argc, char *argv[]){ int dim; int i,j,me; double* v; MPI_Init(&argc, &argv); MPI_ERROR_CHECK(MPI_Comm_rank(MPI_COMM_WORLD, &me),mpi_bail()); if ((argc != 2) || ((dim = atoi(argv[1])) <= 0)){ if(me == 0) fprintf(stderr,"Usage: %s dimension\n",argv[0]); mpi_bail(); } //Do some dodgey memory operations for(i=0;i