diff options
-rw-r--r-- | testpar/t_mdset.c | 81 |
1 files changed, 41 insertions, 40 deletions
diff --git a/testpar/t_mdset.c b/testpar/t_mdset.c index 3fd3bdb..86f393e 100644 --- a/testpar/t_mdset.c +++ b/testpar/t_mdset.c @@ -2,60 +2,61 @@ #define DIM 2 #define SIZE 32 -#define NUMITEMS 500 /* 988 */ +#define NUMITEMS 300 void multiple_dset_write(char *filename) { - int i, j, nprocs, rank; - hid_t iof, plist, dataset, memspace, filespace; - hssize_t chunk_origin [DIM]; - hsize_t chunk_dims [DIM], file_dims [DIM]; - double outme [SIZE][SIZE]; + int i, j, n, nprocs, rank; + hid_t iof, plist, dataset, memspace, filespace; + hssize_t chunk_origin [DIM]; + hsize_t chunk_dims [DIM], file_dims [DIM]; + hsize_t count[DIM]={1,1}; + double outme [SIZE][SIZE]; + char dname [100]; - MPI_Comm_rank (MPI_COMM_WORLD, &rank); - MPI_Comm_size (MPI_COMM_WORLD, &nprocs); - VRFY((nprocs <= SIZE), "nprocs <= SIZE"); + MPI_Comm_rank (MPI_COMM_WORLD, &rank); + MPI_Comm_size (MPI_COMM_WORLD, &nprocs); - chunk_origin [0] = 0; - chunk_origin [1] = rank * (SIZE / nprocs); - chunk_dims [0] = SIZE; - chunk_dims [1] = SIZE / nprocs; + VRFY((nprocs <= SIZE), "nprocs <= SIZE"); - for (i = 0; i < DIM; i++) - file_dims [i] = SIZE; + chunk_origin [0] = rank * (SIZE / nprocs); + chunk_origin [1] = 0; + chunk_dims [0] = SIZE / nprocs; + chunk_dims [1] = SIZE; - for (i = 0; i < SIZE; i++) - for (j = 0; j < SIZE; j++) - outme [i][j] = rank; + for (i = 0; i < DIM; i++) + file_dims [i] = SIZE; - plist = H5Pcreate (H5P_FILE_ACCESS); - H5Pset_fapl_mpio(plist, MPI_COMM_WORLD, MPI_INFO_NULL); - iof = H5Fcreate (filename, H5F_ACC_TRUNC, H5P_DEFAULT, plist); - H5Pclose (plist); + plist = H5Pcreate (H5P_FILE_ACCESS); + H5Pset_fapl_mpio(plist, MPI_COMM_WORLD, MPI_INFO_NULL); + iof = H5Fcreate (filename, H5F_ACC_TRUNC, H5P_DEFAULT, plist); + H5Pclose (plist); - memspace = H5Screate_simple (DIM, chunk_dims, NULL); - filespace = H5Screate_simple (DIM, file_dims, NULL); - H5Sselect_hyperslab (filespace, H5S_SELECT_SET, chunk_origin, NULL, chunk_dims -, NULL); + memspace = H5Screate_simple (DIM, chunk_dims, NULL); + filespace = H5Screate_simple (DIM, file_dims, NULL); + H5Sselect_hyperslab (filespace, H5S_SELECT_SET, chunk_origin, chunk_dims, count, chunk_dims); - for (i = 0; i < NUMITEMS; i++) { - char dname [100]; + for (n = 0; n < NUMITEMS; n++) { + sprintf (dname, "dataset %d", n); + dataset = H5Dcreate (iof, dname, H5T_NATIVE_FLOAT, filespace, H5P_DEFAULT); + VRFY((dataset > 0), "dataset create succeeded"); - sprintf (dname, "dataset %d", i); - dataset = H5Dcreate (iof, dname, H5T_NATIVE_FLOAT, filespace, H5P_DEFAULT); - VRFY((dataset > 0), "dataset create succeeded"); + /* calculate data to write */ + for (i = 0; i < SIZE; i++) + for (j = 0; j < SIZE; j++) + outme [i][j] = n*1000 + rank; - H5Dwrite (dataset, H5T_NATIVE_DOUBLE, memspace, filespace, H5P_DEFAULT, outme); + H5Dwrite (dataset, H5T_NATIVE_DOUBLE, memspace, filespace, H5P_DEFAULT, outme); - H5Dclose (dataset); - if (! ((i+1) % 10)) { - printf("created %d datasets\n", i+1); - MPI_Barrier(MPI_COMM_WORLD); + H5Dclose (dataset); + if (! ((n+1) % 10)) { + printf("created %d datasets\n", n+1); + } + MPI_Barrier(MPI_COMM_WORLD); } -} - H5Sclose (filespace); - H5Sclose (memspace); - H5Fclose (iof); + H5Sclose (filespace); + H5Sclose (memspace); + H5Fclose (iof); } |