Skip to content

Commit 63b5b61

Browse files
committed
enable chunk driver when chunking hint is set
1 parent f8f4a62 commit 63b5b61

File tree

3 files changed

+45
-0
lines changed

3 files changed

+45
-0
lines changed

src/dispatchers/file.c

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,9 @@ ncmpi_create(MPI_Comm comm,
290290
#ifdef ENABLE_BURST_BUFFER
291291
int enable_bb_driver=0;
292292
#endif
293+
#ifdef ENABLE_CHUNKING
294+
int enable_chk_driver=0;
295+
#endif
293296

294297
MPI_Comm_rank(comm, &rank);
295298
MPI_Comm_size(comm, &nprocs);
@@ -382,6 +385,18 @@ ncmpi_create(MPI_Comm comm,
382385
enable_bb_driver = 1;
383386
}
384387
#endif
388+
#ifdef ENABLE_CHUNKING
389+
if (combined_info != MPI_INFO_NULL) {
390+
char value[MPI_MAX_INFO_VAL];
391+
int flag;
392+
393+
/* check if nc_chunking is enabled */
394+
MPI_Info_get(combined_info, "nc_chunking", MPI_MAX_INFO_VAL-1,
395+
value, &flag);
396+
if (flag && strcasecmp(value, "enable") == 0)
397+
enable_chk_driver = 1;
398+
}
399+
#endif
385400

386401
/* Use environment variable and cmode to tell the file format
387402
* which is later used to select the right driver.
@@ -462,6 +477,11 @@ ncmpi_create(MPI_Comm comm,
462477
if (enable_bb_driver)
463478
driver = ncbbio_inq_driver();
464479
else
480+
#endif
481+
#ifdef ENABLE_CHUNKING
482+
if (enable_chk_driver)
483+
driver = ncchkio_inq_driver();
484+
else
465485
#endif
466486
/* default is the driver built on top of MPI-IO */
467487
driver = ncmpio_inq_driver();
@@ -558,6 +578,9 @@ ncmpi_open(MPI_Comm comm,
558578
#ifdef ENABLE_BURST_BUFFER
559579
int enable_bb_driver=0;
560580
#endif
581+
#ifdef ENABLE_CHUNKING
582+
int enable_chk_driver=0;
583+
#endif
561584

562585
MPI_Comm_rank(comm, &rank);
563586
MPI_Comm_size(comm, &nprocs);
@@ -688,6 +711,18 @@ ncmpi_open(MPI_Comm comm,
688711
enable_bb_driver = 1;
689712
}
690713
#endif
714+
#ifdef ENABLE_CHUNKING
715+
if (combined_info != MPI_INFO_NULL) {
716+
char value[MPI_MAX_INFO_VAL];
717+
int flag;
718+
719+
/* check if nc_chunking is enabled */
720+
MPI_Info_get(combined_info, "nc_chunking", MPI_MAX_INFO_VAL-1,
721+
value, &flag);
722+
if (flag && strcasecmp(value, "enable") == 0)
723+
enable_chk_driver = 1;
724+
}
725+
#endif
691726

692727
#ifdef ENABLE_NETCDF4
693728
if (format == NC_FORMAT_NETCDF4_CLASSIC || format == NC_FORMAT_NETCDF4) {
@@ -716,6 +751,11 @@ ncmpi_open(MPI_Comm comm,
716751
if (enable_bb_driver)
717752
driver = ncbbio_inq_driver();
718753
else
754+
#endif
755+
#ifdef ENABLE_CHUNKING
756+
if (enable_chk_driver)
757+
driver = ncchkio_inq_driver();
758+
else
719759
#endif
720760
{
721761
/* ncmpio driver */

src/include/dispatch.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,8 @@ extern PNC_driver* ncfoo_inq_driver(void);
153153

154154
extern PNC_driver* ncbbio_inq_driver(void);
155155

156+
extern PNC_driver* ncchkio_inq_driver(void);
157+
156158
extern int PNC_check_id(int ncid, PNC **pncp);
157159

158160
#endif /* _PNC_DISPATCH_H */

src/libs/Makefile.am

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ endif
3232
if ENABLE_BURST_BUFFER
3333
libpnetcdf_la_LIBADD += ../drivers/ncbbio/libncbbio.la
3434
endif
35+
if ENABLE_CHUNKING
36+
libpnetcdf_la_LIBADD += ../drivers/ncchunkio/libncchkio.la
37+
endif
3538
if ENABLE_ADIOS
3639
libpnetcdf_la_LIBADD += ../drivers/ncadios/libncadios.la
3740
endif

0 commit comments

Comments
 (0)