#include "mpi.h" #include #include typedef struct { long long *offsets; int *lens; MPI_Aint *mem_ptrs; int count; } ADIOI_Access; #define STRIDE 190 #define NB 129 #define NPROCS 4 #define SIZE (STRIDE*NB*NPROCS) char buf1[SIZE], buf2[SIZE], my_procname[MPI_MAX_PROCESSOR_NAME]; int main(int argc, char **argv) { int myrank, nprocs, i, j, k, my_procname_len, value, buf_idx = 0, nprocs_recv, nprocs_send; ADIOI_Access *others_req; MPI_Datatype *recv_types; MPI_Request *requests; MPI_Status *statuses; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &myrank); if (nprocs != NPROCS) { printf("This program must be run with exactly 4 processes\n"); goto exit; } MPI_Get_processor_name(my_procname, &my_procname_len); printf("Process %d running on %s\n", myrank, my_procname); MPI_Barrier(MPI_COMM_WORLD); for (i=0; i length=%d --- offsets=%ld, mem_ptrs=%lx (data=%x)\n", myrank, k, *pint, *pOffset, *pMPI_Aint, *(char*)*pMPI_Aint); #endif pOffset++; pint++; pMPI_Aint++; } if (others_req[i].count) { free(others_req[i].offsets); free(others_req[i].lens); free(others_req[i].mem_ptrs); } } free(others_req); } free(statuses); free(requests); printf("%d: Waiting in Finalize\n", myrank); MPI_Barrier(MPI_COMM_WORLD); exit: MPI_Finalize(); return 0; }