1f1d1f61eSPranav Subramanian #include <mpi.h> 2f1d1f61eSPranav Subramanian #include <stdio.h> 3f1d1f61eSPranav Subramanian #include <stdlib.h> 4f1d1f61eSPranav Subramanian #include <unistd.h> 5f1d1f61eSPranav Subramanian #include <cassert> 6f1d1f61eSPranav Subramanian #include "phiostats.h" 7f1d1f61eSPranav Subramanian #include "phIO.h" 8f1d1f61eSPranav Subramanian #include "phstream.h" //for makeRStream and makeGRStream 9f1d1f61eSPranav Subramanian #include "syncio.h" 10f1d1f61eSPranav Subramanian #include "posixio.h" 11f1d1f61eSPranav Subramanian #include "streamio.h" 12f1d1f61eSPranav Subramanian 13f1d1f61eSPranav Subramanian int main(int argc, char* argv[]) { 14f1d1f61eSPranav Subramanian MPI_Init(&argc,&argv); 15f1d1f61eSPranav Subramanian int rank; 16f1d1f61eSPranav Subramanian MPI_Comm_rank(MPI_COMM_WORLD, &rank); 17f1d1f61eSPranav Subramanian int size; 18f1d1f61eSPranav Subramanian MPI_Comm_size(MPI_COMM_WORLD, &size); 19f1d1f61eSPranav Subramanian if( argc != 2 ) { 20f1d1f61eSPranav Subramanian fprintf(stderr, "Usage: %s <numSyncFiles>\n",argv[0]); 21f1d1f61eSPranav Subramanian MPI_Finalize(); 22f1d1f61eSPranav Subramanian return 1; 23f1d1f61eSPranav Subramanian } 242df2e51fSPranav Subramanian 25f1d1f61eSPranav Subramanian const char* phrase = "number of fishes"; 26f1d1f61eSPranav Subramanian const char* type = "double"; 27f1d1f61eSPranav Subramanian const char* iotype = "binary"; 28f9955254SCameron Smith double blockArray[4] = {2.0,4.0,8.0,16.0}; 29f9955254SCameron Smith int blockEntries = 4; 30f1d1f61eSPranav Subramanian int one = 1; 312df2e51fSPranav Subramanian int zero = 0; 32f1d1f61eSPranav Subramanian int numFish = 0; 33f1d1f61eSPranav Subramanian double fishWeight = 1.23; 340a242d7cSPranav Subramanian int nfiles = 1; 35f1d1f61eSPranav Subramanian int ppf = size/nfiles; 36b820a5c1SPranav Subramanian const char* filename[3] = {"water.dat.", "water.","water-dat."}; 37f1d1f61eSPranav Subramanian rstream rs = makeRStream(); 38f1d1f61eSPranav Subramanian phio_fp file[3]; 39*53b6bf36SPranav Subramanian const char* modes[3]={"posixio", "streamio", "syncio"}; 402df2e51fSPranav Subramanian fprintf(stderr,"nfiles %d\n", nfiles); 412df2e51fSPranav Subramanian fprintf(stderr,"ppf %d\n", ppf); 42*53b6bf36SPranav Subramanian posixio_setup(&(file[0]), 'w'); 43*53b6bf36SPranav Subramanian streamio_setup_r(&(file[1]), rs, 'w'); 44*53b6bf36SPranav Subramanian syncio_setup_write(nfiles, one, ppf, &(file[2])); 453964a29aSPranav Subramanian fprintf(stderr, "%s\n" ,"Outside loop 1.0"); 46f1d1f61eSPranav Subramanian for(int i=0; i<3; i++) { 473964a29aSPranav Subramanian fprintf(stderr, "%s\n" ,"Within the i loop"); 48f1d1f61eSPranav Subramanian if(!rank) fprintf(stderr, "%s\n", modes[i]); 493964a29aSPranav Subramanian fprintf(stderr, "%s\n" ,"Before phastaio"); 50f1d1f61eSPranav Subramanian phastaio_initStats(); 512df2e51fSPranav Subramanian fprintf(stderr, "Opening files with %s\n", filename[i]); 52f1d1f61eSPranav Subramanian phio_openfile(filename[i], file[i]); 532df2e51fSPranav Subramanian char str [50]; 542df2e51fSPranav Subramanian int n; 55de79a544SPranav Subramanian for (int j = 0; j < 2 ; j++) { 563964a29aSPranav Subramanian fprintf(stderr,"%s\n", "Inside loop"); 572df2e51fSPranav Subramanian n = sprintf(str, " Number of times %d ", j); 582df2e51fSPranav Subramanian assert(n); 592df2e51fSPranav Subramanian fprintf(stderr,"str \'%s\'\n", str); 602df2e51fSPranav Subramanian fprintf(stderr,"Printing the int zero %d\n", zero); 612df2e51fSPranav Subramanian fprintf(stderr,"Printing the int one %d\n", one); 622df2e51fSPranav Subramanian fprintf(stderr,"blockentries %d\n",blockEntries); 632df2e51fSPranav Subramanian fprintf(stderr,"Printing the const char type %s\n", type); 642df2e51fSPranav Subramanian fprintf(stderr,"Printing the const char iotype %s\n", iotype); 652df2e51fSPranav Subramanian fprintf(stderr,"Calling writeheader\n"); 66f9955254SCameron Smith phio_writeheader(file[i], str, &blockEntries, &one, &blockEntries, "integer", iotype); 672df2e51fSPranav Subramanian fprintf(stderr,"Done calling writeheader\n"); 682df2e51fSPranav Subramanian fprintf(stderr,"Calling writedatablock\n"); 69f9955254SCameron Smith phio_writedatablock(file[i], str, blockArray, &blockEntries, type, iotype); 702df2e51fSPranav Subramanian fprintf(stderr,"Done Calling writedatablock\n"); 710a242d7cSPranav Subramanian } 72f1d1f61eSPranav Subramanian phio_closefile(file[i]); 73f1d1f61eSPranav Subramanian phastaio_printStats(); 74*53b6bf36SPranav Subramanian fprintf(stderr,"Done %s\n", modes[i]); 75f1d1f61eSPranav Subramanian } 76f1d1f61eSPranav Subramanian syncio_setup_read(nfiles, &(file[0])); 77f1d1f61eSPranav Subramanian posixio_setup(&(file[1]), 'r'); 78f1d1f61eSPranav Subramanian streamio_setup_r(&(file[2]), rs, 'r'); 79f1d1f61eSPranav Subramanian for(int i=0; i<3; i++) { 80f1d1f61eSPranav Subramanian if(!rank) fprintf(stderr, "%s\n", modes[i]); 81f1d1f61eSPranav Subramanian phastaio_initStats(); 82f1d1f61eSPranav Subramanian phio_openfile(filename[i], file[i]); 833964a29aSPranav Subramanian //Str was added 843964a29aSPranav Subramanian // const char* str = "Number of times "+ nfiles ; 853964a29aSPranav Subramanian // for (int j = 0; j < nfiles ; j++) { 86f1d1f61eSPranav Subramanian phio_readheader(file[i], phrase, &numFish, &one, type, iotype); 873964a29aSPranav Subramanian // phio_readheader(file[i], str, &numFish, &one, type, iotype); 883964a29aSPranav Subramanian //Changing argument from file[i] to file[j] 89f1d1f61eSPranav Subramanian assert(!numFish); 90f1d1f61eSPranav Subramanian phio_readdatablock(file[i], phrase, &fishWeight, &numFish, type, iotype); 913964a29aSPranav Subramanian // phio_readdatablock(file[i], str, &fishWeight, &numFish, type, iotype); 92f1d1f61eSPranav Subramanian assert(fishWeight == 1.23); 93f1d1f61eSPranav Subramanian phio_closefile(file[i]); 94f1d1f61eSPranav Subramanian phastaio_printStats(); 95f1d1f61eSPranav Subramanian } 96f1d1f61eSPranav Subramanian MPI_Finalize(); 97f1d1f61eSPranav Subramanian return 0; 98f1d1f61eSPranav Subramanian } 99