1*f1d1f61eSPranav Subramanian #include <mpi.h> 2*f1d1f61eSPranav Subramanian #include <stdio.h> 3*f1d1f61eSPranav Subramanian #include <stdlib.h> 4*f1d1f61eSPranav Subramanian #include <unistd.h> 5*f1d1f61eSPranav Subramanian #include <cassert> 6*f1d1f61eSPranav Subramanian #include "phiostats.h" 7*f1d1f61eSPranav Subramanian #include "phIO.h" 8*f1d1f61eSPranav Subramanian #include "phstream.h" //for makeRStream and makeGRStream 9*f1d1f61eSPranav Subramanian #include "syncio.h" 10*f1d1f61eSPranav Subramanian #include "posixio.h" 11*f1d1f61eSPranav Subramanian #include "streamio.h" 12*f1d1f61eSPranav Subramanian 13*f1d1f61eSPranav Subramanian int main(int argc, char* argv[]) { 14*f1d1f61eSPranav Subramanian MPI_Init(&argc,&argv); 15*f1d1f61eSPranav Subramanian int rank; 16*f1d1f61eSPranav Subramanian MPI_Comm_rank(MPI_COMM_WORLD, &rank); 17*f1d1f61eSPranav Subramanian int size; 18*f1d1f61eSPranav Subramanian MPI_Comm_size(MPI_COMM_WORLD, &size); 19*f1d1f61eSPranav Subramanian if( argc != 2 ) { 20*f1d1f61eSPranav Subramanian fprintf(stderr, "Usage: %s <numSyncFiles>\n",argv[0]); 21*f1d1f61eSPranav Subramanian MPI_Finalize(); 22*f1d1f61eSPranav Subramanian return 1; 23*f1d1f61eSPranav Subramanian } 24*f1d1f61eSPranav Subramanian const char* phrase = "number of fishes"; 25*f1d1f61eSPranav Subramanian const char* type = "double"; 26*f1d1f61eSPranav Subramanian const char* iotype = "binary"; 27*f1d1f61eSPranav Subramanian int zero = 0; 28*f1d1f61eSPranav Subramanian int one = 1; 29*f1d1f61eSPranav Subramanian int numFish = 0; 30*f1d1f61eSPranav Subramanian double fishWeight = 1.23; 31*f1d1f61eSPranav Subramanian int nfiles = atoi(argv[1]); 32*f1d1f61eSPranav Subramanian int ppf = size/nfiles; 33*f1d1f61eSPranav Subramanian const char* filename[2] = {"water-dat.", "water.dat."}; 34*f1d1f61eSPranav Subramanian rstream rs = makeRStream(); 35*f1d1f61eSPranav Subramanian phio_fp file[3]; 36*f1d1f61eSPranav Subramanian const char* modes[3]={"syncio", "posixio", "streamio"}; 37*f1d1f61eSPranav Subramanian syncio_setup_write(nfiles, one, ppf, &(file[0])); 38*f1d1f61eSPranav Subramanian posixio_setup(&(file[1]), 'w'); 39*f1d1f61eSPranav Subramanian streamio_setup_r(&(file[2]), rs, 'w'); 40*f1d1f61eSPranav Subramanian for(int i=0; i<3; i++) { 41*f1d1f61eSPranav Subramanian if(!rank) fprintf(stderr, "%s\n", modes[i]); 42*f1d1f61eSPranav Subramanian phastaio_initStats(); 43*f1d1f61eSPranav Subramanian phio_openfile(filename[i], file[i]); 44*f1d1f61eSPranav Subramanian phio_writeheader(file[i], phrase, &zero, &one, &zero, type, iotype); 45*f1d1f61eSPranav Subramanian phio_writedatablock(file[i], phrase, &fishWeight, &zero, type, iotype); 46*f1d1f61eSPranav Subramanian phio_closefile(file[i]); 47*f1d1f61eSPranav Subramanian phastaio_printStats(); 48*f1d1f61eSPranav Subramanian } 49*f1d1f61eSPranav Subramanian syncio_setup_read(nfiles, &(file[0])); 50*f1d1f61eSPranav Subramanian posixio_setup(&(file[1]), 'r'); 51*f1d1f61eSPranav Subramanian streamio_setup_r(&(file[2]), rs, 'r'); 52*f1d1f61eSPranav Subramanian for(int i=0; i<3; i++) { 53*f1d1f61eSPranav Subramanian if(!rank) fprintf(stderr, "%s\n", modes[i]); 54*f1d1f61eSPranav Subramanian phastaio_initStats(); 55*f1d1f61eSPranav Subramanian phio_openfile(filename[i], file[i]); 56*f1d1f61eSPranav Subramanian phio_readheader(file[i], phrase, &numFish, &one, type, iotype); 57*f1d1f61eSPranav Subramanian assert(!numFish); 58*f1d1f61eSPranav Subramanian phio_readdatablock(file[i], phrase, &fishWeight, &numFish, type, iotype); 59*f1d1f61eSPranav Subramanian assert(fishWeight == 1.23); 60*f1d1f61eSPranav Subramanian phio_closefile(file[i]); 61*f1d1f61eSPranav Subramanian phastaio_printStats(); 62*f1d1f61eSPranav Subramanian } 63*f1d1f61eSPranav Subramanian MPI_Finalize(); 64*f1d1f61eSPranav Subramanian return 0; 65*f1d1f61eSPranav Subramanian } 66