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
main(int argc,char * argv[])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;
31*61be316bSPranav Subramanian int nfields = 2;
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];
394c73623fSPranav Subramanian const char* modes[3]={"syncio","posixio","streamio"};
40*61be316bSPranav Subramanian syncio_setup_write(nfiles, nfields, ppf, &(file[0]));
414c73623fSPranav Subramanian posixio_setup(&(file[1]), 'w');
424c73623fSPranav Subramanian streamio_setup_r(&(file[2]), rs, 'w');
43f1d1f61eSPranav Subramanian for(int i=0; i<3; i++) {
44f1d1f61eSPranav Subramanian if(!rank) fprintf(stderr, "%s\n", modes[i]);
45f1d1f61eSPranav Subramanian phastaio_initStats();
46f1d1f61eSPranav Subramanian phio_openfile(filename[i], file[i]);
472df2e51fSPranav Subramanian char str [50];
482df2e51fSPranav Subramanian int n;
49de79a544SPranav Subramanian for (int j = 0; j < 2 ; j++) {
502df2e51fSPranav Subramanian n = sprintf(str, " Number of times %d ", j);
512df2e51fSPranav Subramanian assert(n);
524c73623fSPranav Subramanian phio_writeheader(file[i], str, &blockEntries, &one, &blockEntries, type, iotype);
53f9955254SCameron Smith phio_writedatablock(file[i], str, blockArray, &blockEntries, type, iotype);
540a242d7cSPranav Subramanian }
55f1d1f61eSPranav Subramanian phio_closefile(file[i]);
56f1d1f61eSPranav Subramanian phastaio_printStats();
57f1d1f61eSPranav Subramanian }
58f1d1f61eSPranav Subramanian syncio_setup_read(nfiles, &(file[0]));
59f1d1f61eSPranav Subramanian posixio_setup(&(file[1]), 'r');
60f1d1f61eSPranav Subramanian streamio_setup_r(&(file[2]), rs, 'r');
61f1d1f61eSPranav Subramanian for(int i=0; i<3; i++) {
62f1d1f61eSPranav Subramanian if(!rank) fprintf(stderr, "%s\n", modes[i]);
63f1d1f61eSPranav Subramanian phastaio_initStats();
64f1d1f61eSPranav Subramanian phio_openfile(filename[i], file[i]);
65f1d1f61eSPranav Subramanian phio_readheader(file[i], phrase, &numFish, &one, type, iotype);
66f1d1f61eSPranav Subramanian assert(!numFish);
67f1d1f61eSPranav Subramanian phio_readdatablock(file[i], phrase, &fishWeight, &numFish, type, iotype);
68f1d1f61eSPranav Subramanian assert(fishWeight == 1.23);
69f1d1f61eSPranav Subramanian phio_closefile(file[i]);
70f1d1f61eSPranav Subramanian phastaio_printStats();
71f1d1f61eSPranav Subramanian }
72f1d1f61eSPranav Subramanian MPI_Finalize();
73f1d1f61eSPranav Subramanian return 0;
74f1d1f61eSPranav Subramanian }
75