struct { char display[50]; /* Name of display */ int maxiter; /* max # of iterations */ double xmin, ymin; /* lower left corner of rectangle */ double xmax, ymax; /* upper right corner */ int width; /* of display in pixels */ int height; /* of display in pixels */ } cmdline;
/* set up 4 blocks */ int blockcounts[4] = {50,1,4,2}; MPI_Datatype types[4]; MPI_Aint displs[4]; MPI_Datatype cmdtype;/* initialize types and displs with addresses of items */ MPI_Address( &cmdline.display, &displs[0] ); MPI_Address( &cmdline.maxiter, &displs[1] ); MPI_Address( &cmdline.xmin, &displs[2] ); MPI_Address( &cmdline.width, &displs[3] ); types[0] = MPI_CHAR; types[1] = MPI_INT; types[2] = MPI_DOUBLE; types[3] = MPI_INT; for (i = 3; i >= 0; i--) displs[i] -= displs[0]; MPI_Type_struct( 4, blockcounts, displs, types, &cmdtype ); MPI_Type_commit( &cmdtype );