Skip to content
Snippets Groups Projects

Swmr test

Closed Tobias Meisel requested to merge swmr_test into main
1 file
+ 11
10
Compare changes
  • Side-by-side
  • Inline
+ 34
13
@@ -44,12 +44,20 @@ if (comm_rank == 0) {
hid_t fapl = H5Pcreate(H5P_FILE_ACCESS);
assert(fapl >= 0);
hid_t status_libver = H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST);
H5Pset_fapl_mpio(fapl, MPI_COMM_WORLD, MPI_INFO_NULL);
hid_t file = H5Fcreate(file_name.c_str(), H5F_ACC_TRUNC, H5P_DEFAULT, fapl);
/* Set to use the latest library format */
MPI_Barrier(MPI_COMM_WORLD);
printf("status libver %d", status_libver);
MPI_Barrier(MPI_COMM_WORLD);
hid_t statusswmr=H5Fstart_swmr_write(file);
printf("status swmr: %d", statusswmr);
MPI_Barrier(MPI_COMM_WORLD);
H5Pclose(fapl);
printf("[%d] File Create %ld\n", comm_rank,file);
// Let's create some sampl data!
// MPI ranks have (100 + rank) integers worth of data
std::vector<int> v(data_length+inc*comm_rank, comm_rank+1);
std::iota(std::begin(v), std::end(v),comm_rank*10);
@@ -69,6 +77,14 @@ if (comm_rank == 0) {
hid_t s = H5Pset_chunk(dcpl, 1, &chunk_size) ;
hid_t dset = H5Dcreate(file, "1D", H5T_STD_I32LE, fspace, H5P_DEFAULT, dcpl,
H5P_DEFAULT);
assert(s>=0);
printf("[%d] Dcreate ", comm_rank);
hid_t g = H5Gcreate(file, "/meshes", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
hid_t dset = H5Dcreate(file, "1D", H5T_STD_I32LE, fspace, H5P_DEFAULT, dcpl,
H5P_DEFAULT);
hid_t dset2= H5Dcreate(g, "2D", H5T_STD_I32LE, fspace, H5P_DEFAULT, dcpl,
H5P_DEFAULT);
assert(dset >= 0);
H5Pclose(dcpl) ;
@@ -92,12 +108,18 @@ if (comm_rank == 0) {
H5Sselect_all(mspace) ;
H5Sselect_hyperslab(fspace, H5S_SELECT_SET, &offset, NULL, &one,
&blk);
printf("[%d] write start", comm_rank);
H5Dwrite(dset, H5T_NATIVE_INT, mspace, fspace, H5P_DEFAULT,
v.data()) ;
H5Dwrite(dset2, H5T_NATIVE_INT, mspace, fspace, H5P_DEFAULT,
v.data()) ;
H5Dflush(dset2);
H5Dclose(dset2);
H5Gclose(g);
printf("[%d] write done", comm_rank);
H5Dflush(dset);
// extend
hsize_t new_size=size;
for (int k=0; k<num_extends;++k)
@@ -106,21 +128,20 @@ if (comm_rank == 0) {
std::vector<int> v2(data_length+inc*comm_rank);
std::iota(std::begin(v2), std::end(v2),comm_rank*10+(k+1)*100);
new_size+=size;
hid_t status = H5Dset_extent(dset, &new_size);
fspace = H5Dget_space(dset);
hid_t status2 = H5Sselect_hyperslab(fspace, H5S_SELECT_SET,offset2, NULL, dimsext,NULL);
mspace = H5Screate_simple(1, dimsext, NULL);
status = H5Dwrite(dset, H5T_NATIVE_INT, mspace, fspace, H5P_DEFAULT, dataext);
H5Dflush(dset);
hsize_t dimsext[]={v2.size()};
hsize_t offset2[]={new_size+offset};
int* dataext = v2.data();
new_size+=size;
hid_t status = H5Dset_extent(dset, &new_size);
fspace = H5Dget_space(dset);
hid_t status2 = H5Sselect_hyperslab(fspace, H5S_SELECT_SET,offset2, NULL, dimsext,NULL);
mspace = H5Screate_simple(1, dimsext, NULL);
status = H5Dwrite(dset, H5T_NATIVE_INT, mspace, fspace, H5P_DEFAULT, dataext);
}
H5Dflush(dset);
// Clean house!
H5Sclose(mspace) ;
H5Dclose(dset) ;
H5Sclose(fspace) ;
H5Fclose(file) ;
Loading