mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-03-31 17:10:47 +08:00
[svn-r2973] Purpose:
Bug fix, cleanup,... Description: The test was doing the hyperslab select incorrectly (thinking count was the block length. Solution: Fixed it to do the correct hyperslab selection. Changed it to calculate different data for different datasets. Changed output by rows instead by cols. It tests the purpose of creating multiple datasets the same but runs faster. Platforms tested: modi4-64.
This commit is contained in:
parent
2bc81f8736
commit
4fb1bc1319
@ -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];
|
||||
|
||||
MPI_Comm_rank (MPI_COMM_WORLD, &rank);
|
||||
MPI_Comm_size (MPI_COMM_WORLD, &nprocs);
|
||||
|
||||
VRFY((nprocs <= SIZE), "nprocs <= SIZE");
|
||||
|
||||
chunk_origin [0] = 0;
|
||||
chunk_origin [1] = rank * (SIZE / nprocs);
|
||||
chunk_dims [0] = SIZE;
|
||||
chunk_dims [1] = SIZE / nprocs;
|
||||
|
||||
for (i = 0; i < DIM; i++)
|
||||
file_dims [i] = SIZE;
|
||||
|
||||
for (i = 0; i < SIZE; i++)
|
||||
for (j = 0; j < SIZE; j++)
|
||||
outme [i][j] = rank;
|
||||
|
||||
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);
|
||||
|
||||
for (i = 0; i < NUMITEMS; i++) {
|
||||
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];
|
||||
|
||||
sprintf (dname, "dataset %d", i);
|
||||
dataset = H5Dcreate (iof, dname, H5T_NATIVE_FLOAT, filespace, H5P_DEFAULT);
|
||||
VRFY((dataset > 0), "dataset create succeeded");
|
||||
|
||||
H5Dwrite (dataset, H5T_NATIVE_DOUBLE, memspace, filespace, H5P_DEFAULT, outme);
|
||||
MPI_Comm_rank (MPI_COMM_WORLD, &rank);
|
||||
MPI_Comm_size (MPI_COMM_WORLD, &nprocs);
|
||||
|
||||
H5Dclose (dataset);
|
||||
if (! ((i+1) % 10)) {
|
||||
printf("created %d datasets\n", i+1);
|
||||
MPI_Barrier(MPI_COMM_WORLD);
|
||||
VRFY((nprocs <= SIZE), "nprocs <= SIZE");
|
||||
|
||||
chunk_origin [0] = rank * (SIZE / nprocs);
|
||||
chunk_origin [1] = 0;
|
||||
chunk_dims [0] = SIZE / nprocs;
|
||||
chunk_dims [1] = SIZE;
|
||||
|
||||
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);
|
||||
|
||||
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 (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");
|
||||
|
||||
/* 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);
|
||||
|
||||
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);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user