Implement support for big I/O for independent reads (#1446)

* Implement big I/O support for independent reads. Add test for this.

* Committing clang-format changes

* Update big I/O code in H5FD__mpio_write() to match that in
H5FD__mpio_read().

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
This commit is contained in:
Neil Fortner
2022-02-18 09:27:05 -06:00
committed by GitHub
parent cfe4198b6c
commit feda52b084
2 changed files with 64 additions and 23 deletions

View File

@@ -1107,13 +1107,15 @@ single_rank_independent_io(void)
HDprintf("\nSingle Rank Independent I/O\n");
if (MAIN_PROCESS) {
hsize_t dims[] = {LARGE_DIM};
hid_t file_id = -1;
hid_t fapl_id = -1;
hid_t dset_id = -1;
hid_t fspace_id = -1;
hid_t mspace_id = -1;
void * data = NULL;
hsize_t dims[] = {LARGE_DIM};
hid_t file_id = -1;
hid_t fapl_id = -1;
hid_t dset_id = -1;
hid_t fspace_id = -1;
hid_t mspace_id = -1;
herr_t ret;
int * data = NULL;
uint64_t i;
fapl_id = H5Pcreate(H5P_FILE_ACCESS);
VRFY_G((fapl_id >= 0), "H5P_FILE_ACCESS");
@@ -1135,6 +1137,10 @@ single_rank_independent_io(void)
data = malloc(LARGE_DIM * sizeof(int));
/* Initialize data */
for (i = 0; i < LARGE_DIM; i++)
data[i] = (int)(i % (uint64_t)DXFER_BIGCOUNT);
if (mpi_rank_g == 0)
H5Sselect_all(fspace_id);
else
@@ -1143,7 +1149,24 @@ single_rank_independent_io(void)
dims[0] = LARGE_DIM;
mspace_id = H5Screate_simple(1, dims, NULL);
VRFY_G((mspace_id >= 0), "H5Screate_simple mspace_id succeeded");
/* Write data */
H5Dwrite(dset_id, H5T_NATIVE_INT, mspace_id, fspace_id, H5P_DEFAULT, data);
VRFY_G((ret >= 0), "H5Dwrite succeeded");
/* Wipe buffer */
HDmemset(data, 0, LARGE_DIM * sizeof(int));
/* Read data back */
H5Dread(dset_id, H5T_NATIVE_INT, mspace_id, fspace_id, H5P_DEFAULT, data);
VRFY_G((ret >= 0), "H5Dread succeeded");
/* Verify data */
for (i = 0; i < LARGE_DIM; i++)
if (data[i] != (int)(i % (uint64_t)DXFER_BIGCOUNT)) {
HDfprintf(stderr, "verify failed\n");
exit(1);
}
free(data);
H5Sclose(mspace_id);