#include "SDDS.h" #include "mdb.h" #include "scan.h" #define SET_TOTAL_ROWS 0 #define SET_COLUMN_ORDER 1 #define SET_COLLECTIVE_IO 2 #define N_OPTIONS 3 char *option[N_OPTIONS]={"totalRows", "columnOrder", "collectiveIO"}; static char *USAGE="write [-totalRows=] [-columnOrder] [-collectiveIO]"; int main(int argc, char *argv[]) { char *filename=NULL; MPI_DATASET *MPI_dataset; SDDS_DATASET SDDS_dataset; char buf[256]; int32_t total_rows=37500000, i, j, mpi_code, cols=8, rows, columnOrder=0, ID_offset, myid, n_processors, collective_io=0, i_arg; double startTime =0; MPI_Comm comm; SCANNED_ARG *s_arg; MPI_Init(&argc,&argv); argc = scanargs(&s_arg, argc, argv); if (argc<2) bomb(NULL, USAGE); for (i_arg=1; i_argcollective_io = collective_io; for (i=0; iMPI_file)); } if (!SDDS_SaveLayout(&SDDS_dataset)) SDDS_MPI_BOMB("SDDS define column and parameters failed.", &(MPI_dataset->MPI_file)); fprintf(stderr, "rank=%d, layout defined. \n", myid); startTime = MPI_Wtime(); if (!SDDS_WriteLayout(&SDDS_dataset)) SDDS_MPI_BOMB("SDDS_MPI_WriteLayout failed.", &(MPI_dataset->MPI_file)); fprintf(stderr, "rank=%d, total_rows=%d, layout written spent %f seconds. \n", myid, total_rows, MPI_Wtime() - startTime); rows = total_rows/n_processors; if (myid < (ID_offset=total_rows%(n_processors))) { rows ++; } if (!SDDS_StartPage(&SDDS_dataset, rows)) SDDS_MPI_BOMB("SDDS start page failed.", &MPI_dataset->MPI_file); /* 7. set data values */ for (i=0; iMPI_file); } } fprintf(stderr, "rank=%d, row set. \n", myid); startTime = MPI_Wtime(); if (!SDDS_WritePage(&SDDS_dataset)) SDDS_MPI_BOMB("SDDS_MPI_WritePage failed.", &MPI_dataset->MPI_file); fprintf(stderr, "rank=%d, page write spent %f. \n", myid, MPI_Wtime() - startTime); if (!SDDS_Terminate(&SDDS_dataset)) SDDS_PrintErrors(stderr, SDDS_EXIT_PrintErrors|SDDS_VERBOSE_PrintErrors); /* close file is done inside SDDS_MPI_Terminate*/ MPI_Finalize(); return 0; }