summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--testpar/t_mdset.c81
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);
}