#include #include #include #include #include #include "phIO.h" #include "posixio.h" #include "phio_posix.h" int main(int argc, char* argv[]) { MPI_Init(&argc,&argv); int commrank,commsize; MPI_Comm_rank(MPI_COMM_WORLD,&commrank); MPI_Comm_size(MPI_COMM_WORLD,&commsize); if( argc != 4 ) { if( !commrank ) fprintf(stderr, "Usage: %s \n",argv[0]); MPI_Finalize(); return 1; } const char* filename = argv[1]; const int verbosity = atoi(argv[2]); const int rankoffset = atoi(argv[3]); const char* phrase = "ilwork"; const char* type = "integer"; const char* iotype = "binary"; int* ilwork = NULL; int len = 0; int one = 2; int phastarank = commrank+1+rankoffset; char geomfilename[4096]; sprintf(geomfilename, "%s/geombc.dat.%d",filename,phastarank); phio_fp file; posixio_setup(&(file), 'r'); posix_openfile_single(geomfilename, file); phio_readheader(file, phrase, &len, &one, type, iotype); ilwork = (int*) malloc(len*sizeof(int)); phio_readdatablock(file, phrase, ilwork, &len, type, iotype); phio_closefile(file); // Initialization int itkbeg = 0; int m = 0; int idl = 0; std::set neighbors; // Compute summary info first such as number of communication tasks, neighboring parts, onwer parts, etc int numtask = ilwork[0]; int numowner = 0; for(int itask=0;itask 0 ) { // Print now communication info printf("\n"); printf("Communication info for this part:\n"); itkbeg = 0; for(int itask=0;itask 1 ) { printf("ilwork array:\n"); for(int i=0;i