From a10f9181c5af57f97fff9081ec953bd0cd9f1087 Mon Sep 17 00:00:00 2001 From: Scot Breitenfeld Date: Tue, 2 Nov 2021 17:35:16 -0500 Subject: [PATCH 01/12] updated to 1.13 h5vol --- source/h5vol/H5VolReadWrite.h | 7 ++--- source/h5vol/H5Vol_attr.c | 57 +++++++++++++++++++++++------------ source/h5vol/H5Vol_dataset.c | 10 +++--- source/h5vol/H5Vol_def.h | 38 ++++++++++------------- source/h5vol/H5Vol_file.c | 4 +-- source/h5vol/H5Vol_group.c | 13 ++++---- source/h5vol/H5Vol_link.c | 18 +++++------ source/h5vol/H5Vol_object.c | 9 +++--- 8 files changed, 83 insertions(+), 73 deletions(-) diff --git a/source/h5vol/H5VolReadWrite.h b/source/h5vol/H5VolReadWrite.h index 5b5ebe7138..467106e8a6 100644 --- a/source/h5vol/H5VolReadWrite.h +++ b/source/h5vol/H5VolReadWrite.h @@ -33,10 +33,8 @@ extern herr_t H5VL_adios2_beginstep(const char *engine_name, extern herr_t H5VL_adios2_endstep(const char *engine_nane); -static herr_t H5VL_adios2_introspect_opt_query(void *obj, H5VL_subclass_t cls, - int opt_type, hbool_t *supported) +static herr_t H5VL_adios2_introspect_opt_query(const void *obj, unsigned int *opt_type) { - *supported = 0; return 0; } @@ -53,7 +51,8 @@ static const H5VL_class_t H5VL_adios2_def = { H5VL_ADIOS2_VERSION, (H5VL_class_value_t)H5VL_ADIOS2_VALUE, H5VL_ADIOS2_NAME, /* name */ - 0, + 0, /* Version # of connector */ + 0, /* Capability flags for connector */ H5VL_adios2_init, /* initialize */ H5VL_adios2_term, /* terminate */ { diff --git a/source/h5vol/H5Vol_attr.c b/source/h5vol/H5Vol_attr.c index 76550f75df..130a933624 100644 --- a/source/h5vol/H5Vol_attr.c +++ b/source/h5vol/H5Vol_attr.c @@ -154,31 +154,50 @@ void GetFromAttribute(void *attrObj, hid_t *ret_id, H5VL_attr_get_t get_type) } } -herr_t H5VL_adios2_attr_get(void *obj, H5VL_attr_get_t get_type, hid_t dxpl_id, - void **req, va_list arguments) +herr_t H5VL_adios2_attr_get(void *obj, H5VL_attr_get_args_t *args, hid_t dxpl_id, + void **req) { REQUIRE_NOT_NULL_ERR(obj, -1); H5VL_ObjDef_t *vol = (H5VL_ObjDef_t *)obj; + + switch (args->op_type) + { + case H5VL_ATTR_GET_SPACE: + { + hid_t *ret_id = (hid_t *)args->args.get_space.space_id; + GetFromAttribute((vol->m_ObjPtr), ret_id, args->op_type); + return 0; + } + case H5VL_ATTR_GET_TYPE: + { + hid_t *ret_id = (hid_t *)args->args.get_type.type_id; + GetFromAttribute((vol->m_ObjPtr), ret_id, args->op_type); + return 0; + } + default: + break; + } - if ((get_type == H5VL_ATTR_GET_SPACE) || (get_type == H5VL_ATTR_GET_TYPE)) +#if 0 + if ((args->op_type == H5VL_ATTR_GET_SPACE) || (args->op_type == H5VL_ATTR_GET_TYPE)) { - hid_t *ret_id = va_arg(arguments, hid_t *); - GetFromAttribute((vol->m_ObjPtr), ret_id, get_type); + hid_t *ret_id = args->args.get_info.ginfo va_arg(arguments, hid_t *); + GetFromAttribute((vol->m_ObjPtr), ret_id, args->op_type); return 0; } +#endif - const H5VL_loc_params_t *loc_params = - va_arg(arguments, const H5VL_loc_params_t *); - REQUIRE_NOT_NULL_ERR(loc_params, -1); + const H5VL_loc_params_t loc_params = args->args.get_info.loc_params; + // REQUIRE_NOT_NULL_ERR(loc_params, -1); - switch (get_type) + switch (args->op_type) { case H5VL_ATTR_GET_NAME: { - char *buf = va_arg(arguments, char *); - ssize_t *ret_val = va_arg(arguments, ssize_t *); + char *buf = args->args.get_name.buf; + ssize_t *ret_val = (ssize_t*)args->args.get_name.attr_name_len; - if (H5VL_OBJECT_BY_SELF == loc_params->type) + if (H5VL_OBJECT_BY_SELF == loc_params.type) { H5VL_AttrDef_t *attrDef = (H5VL_AttrDef_t *)(vol->m_ObjPtr); *ret_val = strlen(attrDef->m_Name); @@ -187,12 +206,12 @@ herr_t H5VL_adios2_attr_get(void *obj, H5VL_attr_get_t get_type, hid_t dxpl_id, strncpy(buf, attrDef->m_Name, *ret_val); } } - else if (H5VL_OBJECT_BY_IDX == loc_params->type) + else if (H5VL_OBJECT_BY_IDX == loc_params.type) { // The number of attrs is from H5Oget_info(), then iterate each by // calling H5Aget_name_by_idx, to reach here *ret_val = - gGetNameOfNthAttr(vol, loc_params->loc_data.loc_by_idx.n, buf); + gGetNameOfNthAttr(vol, loc_params.loc_data.loc_by_idx.n, buf); } return 0; } @@ -222,16 +241,16 @@ herr_t H5VL_adios2_attr_close(void *attr, hid_t dxpl_id, void **req) } herr_t H5VL_adios2_attr_specific(void *obj, const H5VL_loc_params_t *loc_params, - H5VL_attr_specific_t specific_type, - hid_t dxpl_id, void **req, va_list arguments) + H5VL_attr_specific_args_t *args, + hid_t dxpl_id, void **req) { REQUIRE_NOT_NULL_ERR(obj, -1); H5VL_ObjDef_t *vol = (H5VL_ObjDef_t *)obj; - const char *attr_name = va_arg(arguments, const char *); + const char *attr_name = args->args.del.name; //MSB adios2_attribute *attr = gLocateAttrFrom(vol, attr_name); - switch (specific_type) + switch (args->op_type) { case H5VL_ATTR_DELETE: { @@ -250,7 +269,7 @@ herr_t H5VL_adios2_attr_specific(void *obj, const H5VL_loc_params_t *loc_params, } case H5VL_ATTR_EXISTS: { - htri_t *ret = va_arg(arguments, htri_t *); + hbool_t *ret = args->args.exists.exists; if (NULL == attr) { *ret = 0; diff --git a/source/h5vol/H5Vol_dataset.c b/source/h5vol/H5Vol_dataset.c index 5590ac5d2a..715f2d81a9 100644 --- a/source/h5vol/H5Vol_dataset.c +++ b/source/h5vol/H5Vol_dataset.c @@ -100,18 +100,18 @@ herr_t H5VL_adios2_dataset_read(void *dset, hid_t mem_type_id, return gADIOS2ReadVar(var); } -herr_t H5VL_adios2_dataset_get(void *dset, H5VL_dataset_get_t get_type, - hid_t dxpl_id, void **req, va_list arguments) +herr_t H5VL_adios2_dataset_get(void *dset, H5VL_dataset_get_args_t *args, + hid_t dxpl_id, void **req) { REQUIRE_NOT_NULL_ERR(dset, -1); H5VL_ObjDef_t *vol = (H5VL_ObjDef_t *)dset; H5VL_VarDef_t *varDef = (H5VL_VarDef_t *)(vol->m_ObjPtr); - switch (get_type) + switch (args->op_type) { case H5VL_DATASET_GET_SPACE: { - hid_t *ret_id = va_arg(arguments, hid_t *); + hid_t *ret_id = (hid_t *)args->args.get_space.space_id; *ret_id = H5Scopy(varDef->m_ShapeID); REQUIRE_SUCC_MSG((*ret_id >= 0), -1, "H5VOL-ADIOS2: Unable to get space id."); @@ -119,7 +119,7 @@ herr_t H5VL_adios2_dataset_get(void *dset, H5VL_dataset_get_t get_type, } case H5VL_DATASET_GET_TYPE: { - hid_t *ret_id = va_arg(arguments, hid_t *); + hid_t *ret_id = (hid_t *)args->args.get_type.type_id; *ret_id = H5Tcopy(varDef->m_TypeID); break; } diff --git a/source/h5vol/H5Vol_def.h b/source/h5vol/H5Vol_def.h index 022d04aa70..ad3de72f7c 100644 --- a/source/h5vol/H5Vol_def.h +++ b/source/h5vol/H5Vol_def.h @@ -103,9 +103,8 @@ extern void *H5VL_adios2_file_open(const char *name, unsigned flags, hid_t fapl_id, hid_t dxpl_id, void **req); extern herr_t H5VL_adios2_file_specific(void *file, - H5VL_file_specific_t specific_type, - hid_t dxpl_id, void **req, - va_list arguments); + H5VL_file_specific_args_t *args, + hid_t dxpl_id, void **req); extern herr_t H5VL_adios2_file_close(void *file, hid_t dxpl_id, void **req); @@ -130,17 +129,15 @@ extern herr_t H5VL_adios2_attr_write(void *attr, hid_t mem_type_id, const void *buf, hid_t dxpl_id, void **req); -extern herr_t H5VL_adios2_attr_get(void *obj, H5VL_attr_get_t get_type, - hid_t dxpl_id, void **req, - va_list arguments); +extern herr_t H5VL_adios2_attr_get(void *obj, H5VL_attr_get_args_t *args, + hid_t dxpl_id, void **req); extern herr_t H5VL_adios2_attr_close(void *attr, hid_t dxpl_id, void **req); extern herr_t H5VL_adios2_attr_specific(void *obj, const H5VL_loc_params_t *loc_params, - H5VL_attr_specific_t specific_type, - hid_t dxpl_id, void **req, - va_list arguments); + H5VL_attr_specific_args_t *args, + hid_t dxpl_id, void **req); // // object functions: @@ -153,8 +150,8 @@ extern void *H5VL_adios2_object_open(void *obj, extern herr_t H5VL_adios2_object_get(void *obj, const H5VL_loc_params_t *loc_params, - H5VL_object_get_t get_type, hid_t H5_ATTR_UNUSED dxpl_id, - void H5_ATTR_UNUSED **req, va_list arguments); + H5VL_object_get_args_t *args, hid_t H5_ATTR_UNUSED dxpl_id, + void H5_ATTR_UNUSED **req); // dataset functions: extern void *H5VL_adios2_dataset_create(void *obj, @@ -173,9 +170,8 @@ extern herr_t H5VL_adios2_dataset_read(void *dset, hid_t mem_type_id, hid_t mem_space_id, hid_t file_space_id, hid_t plist_id, void *buf, void **req); -extern herr_t H5VL_adios2_dataset_get(void *dset, H5VL_dataset_get_t get_type, - hid_t dxpl_id, void **req, - va_list arguments); +extern herr_t H5VL_adios2_dataset_get(void *dset, H5VL_dataset_get_args_t *args, + hid_t dxpl_id, void **req); extern herr_t H5VL_adios2_dataset_write(void *dset, hid_t mem_type_id, hid_t mem_space_id, hid_t file_space_id, @@ -189,15 +185,14 @@ extern herr_t H5VL_adios2_dataset_close(void *dset, hid_t dxpl_id, void **req); // extern herr_t H5VL_adios2_link_specific(void *obj, const H5VL_loc_params_t *loc_params, - H5VL_link_specific_t specific_type, + H5VL_link_specific_args_t *args, hid_t H5_ATTR_UNUSED dxpl_id, - void H5_ATTR_UNUSED **req, - va_list arguments); + void H5_ATTR_UNUSED **req); extern herr_t H5VL_adios2_link_get(void *obj, const H5VL_loc_params_t *loc_params, - H5VL_link_get_t get_type, hid_t H5_ATTR_UNUSED dxpl_id, - void H5_ATTR_UNUSED **req, va_list arguments); + H5VL_link_get_args_t *args, hid_t H5_ATTR_UNUSED dxpl_id, + void H5_ATTR_UNUSED **req); // // group functions: @@ -215,10 +210,9 @@ extern void *H5VL_adios2_group_open(void *obj, const char *name, hid_t gapl_id, hid_t dxpl_id, void **req); -extern herr_t H5VL_adios2_group_get(void *obj, H5VL_group_get_t get_type, +extern herr_t H5VL_adios2_group_get(void *obj, H5VL_group_get_args_t *args, hid_t H5_ATTR_UNUSED dxpl_id, - void H5_ATTR_UNUSED **req, - va_list arguments); + void H5_ATTR_UNUSED **req); // // general definitions: diff --git a/source/h5vol/H5Vol_file.c b/source/h5vol/H5Vol_file.c index c88ce75a63..d7ad4fc72d 100644 --- a/source/h5vol/H5Vol_file.c +++ b/source/h5vol/H5Vol_file.c @@ -39,8 +39,8 @@ void *H5VL_adios2_file_open(const char *name, unsigned flags, hid_t fapl_id, return gFileToVolObj(handle); } -herr_t H5VL_adios2_file_specific(void *file, H5VL_file_specific_t specific_type, - hid_t dxpl_id, void **req, va_list arguments) +herr_t H5VL_adios2_file_specific(void *file, H5VL_file_specific_args_t *args, + hid_t dxpl_id, void **req) { // // This function is called after H5Fopen/create. Do not remove diff --git a/source/h5vol/H5Vol_group.c b/source/h5vol/H5Vol_group.c index 27ca3a0a44..c5822fe7ea 100644 --- a/source/h5vol/H5Vol_group.c +++ b/source/h5vol/H5Vol_group.c @@ -55,22 +55,21 @@ void *H5VL_adios2_group_open(void *obj, const H5VL_loc_params_t *loc_params, return NULL; } -herr_t H5VL_adios2_group_get(void *obj, H5VL_group_get_t get_type, +herr_t H5VL_adios2_group_get(void *obj, H5VL_group_get_args_t *args, hid_t H5_ATTR_UNUSED dxpl_id, - void H5_ATTR_UNUSED **req, va_list arguments) + void H5_ATTR_UNUSED **req) { REQUIRE_NOT_NULL_ERR(obj, -1); H5VL_ObjDef_t *vol = (H5VL_ObjDef_t *)obj; - switch (get_type) + switch (args->op_type) { case H5VL_GROUP_GET_INFO: { - const H5VL_loc_params_t *loc_params = - va_arg(arguments, const H5VL_loc_params_t *); - H5G_info_t *group_info = va_arg(arguments, H5G_info_t *); + const H5VL_loc_params_t loc_params = args->args.get_info.loc_params; + H5G_info_t *group_info = args->args.get_info.ginfo; - if (loc_params->type == H5VL_OBJECT_BY_SELF) + if (loc_params.type == H5VL_OBJECT_BY_SELF) { gLoadContent(vol); gLoadSubGroups(vol); diff --git a/source/h5vol/H5Vol_link.c b/source/h5vol/H5Vol_link.c index c0169f74c0..3b985563dd 100644 --- a/source/h5vol/H5Vol_link.c +++ b/source/h5vol/H5Vol_link.c @@ -4,9 +4,9 @@ #include "H5Vol_def.h" herr_t H5VL_adios2_link_specific(void *obj, const H5VL_loc_params_t *loc_params, - H5VL_link_specific_t specific_type, + H5VL_link_specific_args_t *args, hid_t H5_ATTR_UNUSED dxpl_id, - void H5_ATTR_UNUSED **req, va_list arguments) + void H5_ATTR_UNUSED **req) { REQUIRE_NOT_NULL_ERR(loc_params, -1); @@ -14,13 +14,13 @@ herr_t H5VL_adios2_link_specific(void *obj, const H5VL_loc_params_t *loc_params, H5VL_ObjDef_t *vol = (H5VL_ObjDef_t *)obj; - switch (specific_type) + switch (args->op_type) { case H5VL_LINK_EXISTS: { if ((GROUP == vol->m_ObjType) || (ROOT == vol->m_ObjType)) { - htri_t *ret = va_arg(arguments, htri_t *); + hbool_t *ret = args->args.exists.exists; const char *obj_name = loc_params->loc_data.loc_by_name.name; *ret = gExistsUnderGrp(vol, obj_name); @@ -52,21 +52,21 @@ herr_t H5VL_adios2_link_specific(void *obj, const H5VL_loc_params_t *loc_params, } herr_t H5VL_adios2_link_get(void *obj, const H5VL_loc_params_t *loc_params, - H5VL_link_get_t get_type, + H5VL_link_get_args_t *args, hid_t H5_ATTR_UNUSED dxpl_id, - void H5_ATTR_UNUSED **req, va_list arguments) + void H5_ATTR_UNUSED **req) { REQUIRE_NOT_NULL_ERR(loc_params, -1); REQUIRE_NOT_NULL_ERR(obj, -1); H5VL_ObjDef_t *vol = (H5VL_ObjDef_t *)obj; - switch (get_type) + switch (args->op_type) { case H5VL_LINK_GET_NAME: { - char *name = va_arg(arguments, char *); - ssize_t *ret = va_arg(arguments, ssize_t *); + char *name = args->args.get_name.name; + ssize_t *ret = (ssize_t*)args->args.get_name.name_len; if ((GROUP == vol->m_ObjType) || (ROOT == vol->m_ObjType)) { diff --git a/source/h5vol/H5Vol_object.c b/source/h5vol/H5Vol_object.c index 52269c442f..69fa1fa8d3 100644 --- a/source/h5vol/H5Vol_object.c +++ b/source/h5vol/H5Vol_object.c @@ -57,21 +57,20 @@ void *H5VL_adios2_object_open(void *obj, const H5VL_loc_params_t *loc_params, } herr_t H5VL_adios2_object_get(void *obj, const H5VL_loc_params_t *loc_params, - H5VL_object_get_t get_type, + H5VL_object_get_args_t *args, hid_t H5_ATTR_UNUSED dxpl_id, - void H5_ATTR_UNUSED **req, va_list arguments) + void H5_ATTR_UNUSED **req) { REQUIRE_NOT_NULL_ERR(loc_params, -1); REQUIRE_NOT_NULL_ERR(obj, -1); H5VL_ObjDef_t *vol = (H5VL_ObjDef_t *)obj; - switch (get_type) + switch (args->op_type) { case H5VL_OBJECT_GET_INFO: { - H5O_info2_t *oinfo = va_arg(arguments, H5O_info2_t *); - // unsigned fields = va_arg(arguments, unsigned); + H5O_info2_t *oinfo = args->args.get_info.oinfo; if (loc_params->type == H5VL_OBJECT_BY_SELF) { oinfo->fileno = 1; From fd0cc44b6d78bea9796c9297981d8cbfef84465c Mon Sep 17 00:00:00 2001 From: Scot Breitenfeld Date: Wed, 3 Nov 2021 10:17:52 -0500 Subject: [PATCH 02/12] misc. code clean-up --- source/h5vol/H5Vol_attr.c | 21 ++++++--------------- source/h5vol/H5Vol_dataset.c | 2 +- source/h5vol/H5Vol_group.c | 4 ++-- 3 files changed, 9 insertions(+), 18 deletions(-) diff --git a/source/h5vol/H5Vol_attr.c b/source/h5vol/H5Vol_attr.c index 130a933624..68c3076188 100644 --- a/source/h5vol/H5Vol_attr.c +++ b/source/h5vol/H5Vol_attr.c @@ -178,17 +178,8 @@ herr_t H5VL_adios2_attr_get(void *obj, H5VL_attr_get_args_t *args, hid_t dxpl_id break; } -#if 0 - if ((args->op_type == H5VL_ATTR_GET_SPACE) || (args->op_type == H5VL_ATTR_GET_TYPE)) - { - hid_t *ret_id = args->args.get_info.ginfo va_arg(arguments, hid_t *); - GetFromAttribute((vol->m_ObjPtr), ret_id, args->op_type); - return 0; - } -#endif - - const H5VL_loc_params_t loc_params = args->args.get_info.loc_params; - // REQUIRE_NOT_NULL_ERR(loc_params, -1); + const H5VL_loc_params_t *loc_params = &args->args.get_info.loc_params; + REQUIRE_NOT_NULL_ERR(loc_params, -1); switch (args->op_type) { @@ -197,7 +188,7 @@ herr_t H5VL_adios2_attr_get(void *obj, H5VL_attr_get_args_t *args, hid_t dxpl_id char *buf = args->args.get_name.buf; ssize_t *ret_val = (ssize_t*)args->args.get_name.attr_name_len; - if (H5VL_OBJECT_BY_SELF == loc_params.type) + if (H5VL_OBJECT_BY_SELF == loc_params->type) { H5VL_AttrDef_t *attrDef = (H5VL_AttrDef_t *)(vol->m_ObjPtr); *ret_val = strlen(attrDef->m_Name); @@ -206,12 +197,12 @@ herr_t H5VL_adios2_attr_get(void *obj, H5VL_attr_get_args_t *args, hid_t dxpl_id strncpy(buf, attrDef->m_Name, *ret_val); } } - else if (H5VL_OBJECT_BY_IDX == loc_params.type) + else if (H5VL_OBJECT_BY_IDX == loc_params->type) { // The number of attrs is from H5Oget_info(), then iterate each by // calling H5Aget_name_by_idx, to reach here *ret_val = - gGetNameOfNthAttr(vol, loc_params.loc_data.loc_by_idx.n, buf); + gGetNameOfNthAttr(vol, loc_params->loc_data.loc_by_idx.n, buf); } return 0; } @@ -246,7 +237,7 @@ herr_t H5VL_adios2_attr_specific(void *obj, const H5VL_loc_params_t *loc_params, { REQUIRE_NOT_NULL_ERR(obj, -1); H5VL_ObjDef_t *vol = (H5VL_ObjDef_t *)obj; - const char *attr_name = args->args.del.name; //MSB + const char *attr_name = (const char *)args->args.del.name; adios2_attribute *attr = gLocateAttrFrom(vol, attr_name); diff --git a/source/h5vol/H5Vol_dataset.c b/source/h5vol/H5Vol_dataset.c index 715f2d81a9..aac61777f6 100644 --- a/source/h5vol/H5Vol_dataset.c +++ b/source/h5vol/H5Vol_dataset.c @@ -111,7 +111,7 @@ herr_t H5VL_adios2_dataset_get(void *dset, H5VL_dataset_get_args_t *args, { case H5VL_DATASET_GET_SPACE: { - hid_t *ret_id = (hid_t *)args->args.get_space.space_id; + hid_t *ret_id = (hid_t *)args->args.get_space.space_id; *ret_id = H5Scopy(varDef->m_ShapeID); REQUIRE_SUCC_MSG((*ret_id >= 0), -1, "H5VOL-ADIOS2: Unable to get space id."); diff --git a/source/h5vol/H5Vol_group.c b/source/h5vol/H5Vol_group.c index c5822fe7ea..4f87fc3846 100644 --- a/source/h5vol/H5Vol_group.c +++ b/source/h5vol/H5Vol_group.c @@ -66,10 +66,10 @@ herr_t H5VL_adios2_group_get(void *obj, H5VL_group_get_args_t *args, { case H5VL_GROUP_GET_INFO: { - const H5VL_loc_params_t loc_params = args->args.get_info.loc_params; + const H5VL_loc_params_t *loc_params = &args->args.get_info.loc_params; H5G_info_t *group_info = args->args.get_info.ginfo; - if (loc_params.type == H5VL_OBJECT_BY_SELF) + if (loc_params->type == H5VL_OBJECT_BY_SELF) { gLoadContent(vol); gLoadSubGroups(vol); From 265465f1c7f186ab461a806145cccbcf768c9760 Mon Sep 17 00:00:00 2001 From: Scot Breitenfeld Date: Wed, 3 Nov 2021 14:34:28 -0500 Subject: [PATCH 03/12] addressed PR reviews issues --- source/h5vol/H5VolReadWrite.c | 6 +++--- source/h5vol/H5VolReadWrite.h | 15 +++++++++------ source/h5vol/H5Vol_attr.c | 19 +++++++++++++------ source/h5vol/H5Vol_def.h | 4 ++-- source/h5vol/H5Vol_link.c | 2 +- 5 files changed, 28 insertions(+), 18 deletions(-) diff --git a/source/h5vol/H5VolReadWrite.c b/source/h5vol/H5VolReadWrite.c index 8d6a190f42..d27b22f337 100644 --- a/source/h5vol/H5VolReadWrite.c +++ b/source/h5vol/H5VolReadWrite.c @@ -626,7 +626,7 @@ H5VL_GroupDef_t *gCreateGroupDef(const char *name) return grp; } -ssize_t gGetBranchNameLength(H5VL_ObjDef_t *vol, size_t namelen) +size_t gGetBranchNameLength(H5VL_ObjDef_t *vol, size_t namelen) { if (vol->m_Path != NULL) if ('/' == (vol->m_Path)[strlen(vol->m_Path) - 1]) @@ -654,7 +654,7 @@ void gGetBranchName(H5VL_ObjDef_t *vol, const char *fullPath, char *name) // // returns length of name // -ssize_t gGetNameOfNthAttr(H5VL_ObjDef_t *vol, uint32_t idx, char *name) +size_t gGetNameOfNthAttr(H5VL_ObjDef_t *vol, uint32_t idx, char *name) { gLoadContent(vol); if (0 == vol->m_NumAttrs) @@ -689,7 +689,7 @@ ssize_t gGetNameOfNthAttr(H5VL_ObjDef_t *vol, uint32_t idx, char *name) // called from: H5Gget_info, then H5Gget_objname_by_idx // (which calls H5Lget_name.. ) // -ssize_t gGetNameOfNthItem(H5VL_ObjDef_t *vol, uint32_t idx, char *name) +size_t gGetNameOfNthItem(H5VL_ObjDef_t *vol, uint32_t idx, char *name) { gLoadContent(vol); diff --git a/source/h5vol/H5VolReadWrite.h b/source/h5vol/H5VolReadWrite.h index 467106e8a6..bfc4efee93 100644 --- a/source/h5vol/H5VolReadWrite.h +++ b/source/h5vol/H5VolReadWrite.h @@ -33,8 +33,10 @@ extern herr_t H5VL_adios2_beginstep(const char *engine_name, extern herr_t H5VL_adios2_endstep(const char *engine_nane); -static herr_t H5VL_adios2_introspect_opt_query(const void *obj, unsigned int *opt_type) +static herr_t H5VL_adios2_introspect_opt_query(void *obj, H5VL_subclass_t cls, + int opt_type, uint64_t *supported) { + *supported = 0; return 0; } @@ -50,11 +52,11 @@ static herr_t H5VL_adios2_datatype_close(void *dt, hid_t H5_ATTR_UNUSED dxpl_id, static const H5VL_class_t H5VL_adios2_def = { H5VL_ADIOS2_VERSION, (H5VL_class_value_t)H5VL_ADIOS2_VALUE, - H5VL_ADIOS2_NAME, /* name */ - 0, /* Version # of connector */ - 0, /* Capability flags for connector */ - H5VL_adios2_init, /* initialize */ - H5VL_adios2_term, /* terminate */ + H5VL_ADIOS2_NAME, /* name */ + 0, /* Version # of connector */ + H5VL_CAP_FLAG_NONE, /* Capability flags for connector */ + H5VL_adios2_init, /* initialize */ + H5VL_adios2_term, /* terminate */ { /* info_cls */ (size_t)0, /* info size */ @@ -117,6 +119,7 @@ static const H5VL_class_t H5VL_adios2_def = { { /* introspect_cls */ NULL, // H5VL_pass_through_introspect_get_conn_cls, /* get_conn_cls */ + NULL, /* get_cap_flags */ H5VL_adios2_introspect_opt_query, /* opt_query */ }, { diff --git a/source/h5vol/H5Vol_attr.c b/source/h5vol/H5Vol_attr.c index 68c3076188..9da443a35b 100644 --- a/source/h5vol/H5Vol_attr.c +++ b/source/h5vol/H5Vol_attr.c @@ -178,15 +178,15 @@ herr_t H5VL_adios2_attr_get(void *obj, H5VL_attr_get_args_t *args, hid_t dxpl_id break; } - const H5VL_loc_params_t *loc_params = &args->args.get_info.loc_params; - REQUIRE_NOT_NULL_ERR(loc_params, -1); - switch (args->op_type) { case H5VL_ATTR_GET_NAME: { char *buf = args->args.get_name.buf; - ssize_t *ret_val = (ssize_t*)args->args.get_name.attr_name_len; + size_t *ret_val = (size_t*)args->args.get_name.attr_name_len; + + const H5VL_loc_params_t *loc_params = &args->args.get_info.loc_params; + REQUIRE_NOT_NULL_ERR(loc_params, -1); if (H5VL_OBJECT_BY_SELF == loc_params->type) { @@ -237,14 +237,17 @@ herr_t H5VL_adios2_attr_specific(void *obj, const H5VL_loc_params_t *loc_params, { REQUIRE_NOT_NULL_ERR(obj, -1); H5VL_ObjDef_t *vol = (H5VL_ObjDef_t *)obj; - const char *attr_name = (const char *)args->args.del.name; - adios2_attribute *attr = gLocateAttrFrom(vol, attr_name); + const char *attr_name; + adios2_attribute *attr; switch (args->op_type) { case H5VL_ATTR_DELETE: { + attr_name = (const char *)args->args.del.name; + attr = gLocateAttrFrom(vol, attr_name); + if (NULL != attr) { if (NULL == vol->m_Path) @@ -261,6 +264,10 @@ herr_t H5VL_adios2_attr_specific(void *obj, const H5VL_loc_params_t *loc_params, case H5VL_ATTR_EXISTS: { hbool_t *ret = args->args.exists.exists; + + attr_name = (const char *)args->args.exists.name; + attr = gLocateAttrFrom(vol, attr_name); + if (NULL == attr) { *ret = 0; diff --git a/source/h5vol/H5Vol_def.h b/source/h5vol/H5Vol_def.h index ad3de72f7c..6c5e415872 100644 --- a/source/h5vol/H5Vol_def.h +++ b/source/h5vol/H5Vol_def.h @@ -236,8 +236,8 @@ extern void gLoadAttrDef(H5VL_AttrDef_t *attrDef); extern void gLoadContent(H5VL_ObjDef_t *obj); extern void gLoadSubGroups(H5VL_ObjDef_t *obj); -extern ssize_t gGetNameOfNthAttr(H5VL_ObjDef_t *obj, uint32_t idx, char *name); -extern ssize_t gGetNameOfNthItem(H5VL_ObjDef_t *obj, uint32_t idx, char *name); +extern size_t gGetNameOfNthAttr(H5VL_ObjDef_t *obj, uint32_t idx, char *name); +extern size_t gGetNameOfNthItem(H5VL_ObjDef_t *obj, uint32_t idx, char *name); extern H5VL_ObjDef_t *gGetVarObjDef(const char *fullPath, H5VL_ObjDef_t *vol); extern H5VL_VarDef_t *gCreateVarDef(const char *name, adios2_engine *engine, diff --git a/source/h5vol/H5Vol_link.c b/source/h5vol/H5Vol_link.c index 3b985563dd..a4ff52a3ef 100644 --- a/source/h5vol/H5Vol_link.c +++ b/source/h5vol/H5Vol_link.c @@ -66,7 +66,7 @@ herr_t H5VL_adios2_link_get(void *obj, const H5VL_loc_params_t *loc_params, case H5VL_LINK_GET_NAME: { char *name = args->args.get_name.name; - ssize_t *ret = (ssize_t*)args->args.get_name.name_len; + size_t *ret = (size_t*)args->args.get_name.name_len; if ((GROUP == vol->m_ObjType) || (ROOT == vol->m_ObjType)) { From 417879b29670b86f94fc112d8654fee106fc47d7 Mon Sep 17 00:00:00 2001 From: Scot Breitenfeld Date: Wed, 3 Nov 2021 14:56:49 -0500 Subject: [PATCH 04/12] addressed PR reviews issues --- source/h5vol/H5Vol_attr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/h5vol/H5Vol_attr.c b/source/h5vol/H5Vol_attr.c index 9da443a35b..6bf92b251c 100644 --- a/source/h5vol/H5Vol_attr.c +++ b/source/h5vol/H5Vol_attr.c @@ -185,7 +185,7 @@ herr_t H5VL_adios2_attr_get(void *obj, H5VL_attr_get_args_t *args, hid_t dxpl_id char *buf = args->args.get_name.buf; size_t *ret_val = (size_t*)args->args.get_name.attr_name_len; - const H5VL_loc_params_t *loc_params = &args->args.get_info.loc_params; + const H5VL_loc_params_t *loc_params = &args->args.get_name.loc_params; REQUIRE_NOT_NULL_ERR(loc_params, -1); if (H5VL_OBJECT_BY_SELF == loc_params->type) From 41812670fae3c86db1eddc440e83019094b9f0e4 Mon Sep 17 00:00:00 2001 From: Scot Breitenfeld Date: Mon, 6 Dec 2021 17:45:55 -0600 Subject: [PATCH 05/12] switch to using HDF5 version 1.13.0 instead of 1.12.0 --- .../ci/images/power8-el7-leaf-smpi/Dockerfile | 16 ++++++++-------- scripts/ci/images/power8-el7-leaf/Dockerfile | 16 ++++++++-------- .../ci/images/suse-nvhpcsdk-openmpi/Dockerfile | 16 ++++++++-------- scripts/ci/images/suse-nvhpcsdk/Dockerfile | 14 +++++++------- 4 files changed, 31 insertions(+), 31 deletions(-) diff --git a/scripts/ci/images/power8-el7-leaf-smpi/Dockerfile b/scripts/ci/images/power8-el7-leaf-smpi/Dockerfile index c25847c033..4e1147b826 100644 --- a/scripts/ci/images/power8-el7-leaf-smpi/Dockerfile +++ b/scripts/ci/images/power8-el7-leaf-smpi/Dockerfile @@ -12,15 +12,15 @@ ENV MPI_ROOT=/opt/ibm/spectrum_mpi \ PATH=/opt/ibm/spectrum_mpi/bin:${PATH} \ LD_LIBRARY_PATH=/opt/ibm/spectrum_mpi/lib:${PATH} -# Install HDF5 1.12.0 +# Install HDF5 1.13.0 WORKDIR /opt/hdf5 ARG HDF5_ARGS -RUN curl -L https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.0/src/hdf5-1.12.0.tar.bz2 | \ +RUN curl -L https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.13/hdf5-1.13.0/src/hdf5-1.13.0.tar.bz2 | \ tar -xvj && \ mkdir build && \ cd build && \ cmake ${HDF5_ARGS} \ - -DCMAKE_INSTALL_PREFIX=/opt/hdf5/1.12.0 \ + -DCMAKE_INSTALL_PREFIX=/opt/hdf5/1.13.0 \ -DBUILD_SHARED_LIBS=ON \ -DBUILD_STATIC_LIBS=OFF \ -DCMAKE_BUILD_TYPE=Release \ @@ -29,13 +29,13 @@ RUN curl -L https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.0 -DBUILD_TESTING=OFF \ -DHDF5_BUILD_TOOLS=ON \ -DHDF5_ENABLE_PARALLEL=ON \ - ../hdf5-1.12.0 && \ + ../hdf5-1.13.0 && \ make -j$(grep -c '^processor' /proc/cpuinfo) install && \ cd .. && \ - rm -rf hdf5-1.12.0 build -ENV PATH=/opt/hdf5/1.12.0/bin:${PATH} \ - LD_LIBRARY_PATH=/opt/hdf5/1.12.0/lib:${LD_LIBRARY_PATH} \ - CMAKE_PREFIX_PATH=/opt/hdf5/1.12.0:${CMAKE_PREFIX_PATH} + rm -rf hdf5-1.13.0 build +ENV PATH=/opt/hdf5/1.13.0/bin:${PATH} \ + LD_LIBRARY_PATH=/opt/hdf5/1.13.0/lib:${LD_LIBRARY_PATH} \ + CMAKE_PREFIX_PATH=/opt/hdf5/1.13.0:${CMAKE_PREFIX_PATH} # Misc cleanup of unneeded files RUN rm -rf /tmp/* && \ diff --git a/scripts/ci/images/power8-el7-leaf/Dockerfile b/scripts/ci/images/power8-el7-leaf/Dockerfile index c9b86a79f3..2dde2ca878 100644 --- a/scripts/ci/images/power8-el7-leaf/Dockerfile +++ b/scripts/ci/images/power8-el7-leaf/Dockerfile @@ -1,14 +1,14 @@ ARG COMPILER FROM ornladios/adios2:ci-x86_64-power8-el7-${COMPILER}-base -# Install HDF5 1.12.0 +# Install HDF5 1.13.0 WORKDIR /opt/hdf5 -RUN curl -L https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.0/src/hdf5-1.12.0.tar.bz2 | \ +RUN curl -L https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.13/hdf5-1.13.0/src/hdf5-1.13.0.tar.bz2 | \ tar -xvj && \ mkdir build && \ cd build && \ cmake \ - -DCMAKE_INSTALL_PREFIX=/opt/hdf5/1.12.0 \ + -DCMAKE_INSTALL_PREFIX=/opt/hdf5/1.13.0 \ -DBUILD_SHARED_LIBS=ON \ -DBUILD_STATIC_LIBS=OFF \ -DCMAKE_BUILD_TYPE=Release \ @@ -17,13 +17,13 @@ RUN curl -L https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.0 -DHDF5_BUILD_EXAMPLES=OFF \ -DBUILD_TESTING=OFF \ -DHDF5_BUILD_TOOLS=OFF \ - ../hdf5-1.12.0 && \ + ../hdf5-1.13.0 && \ make -j$(grep -c '^processor' /proc/cpuinfo) install && \ cd .. && \ - rm -rf hdf5-1.12.0 build -ENV PATH=/opt/hdf5/1.12.0/bin:${PATH} \ - LD_LIBRARY_PATH=/opt/hdf5/1.12.0/lib:${LD_LIBRARY_PATH} \ - CMAKE_PREFIX_PATH=/opt/hdf5/1.12.0:${CMAKE_PREFIX_PATH} + rm -rf hdf5-1.13.0 build +ENV PATH=/opt/hdf5/1.13.0/bin:${PATH} \ + LD_LIBRARY_PATH=/opt/hdf5/1.13.0/lib:${LD_LIBRARY_PATH} \ + CMAKE_PREFIX_PATH=/opt/hdf5/1.13.0:${CMAKE_PREFIX_PATH} # Misc cleanup of unneeded files RUN rm -rf /tmp/* && \ diff --git a/scripts/ci/images/suse-nvhpcsdk-openmpi/Dockerfile b/scripts/ci/images/suse-nvhpcsdk-openmpi/Dockerfile index d7a6c59bf9..17d37572fb 100644 --- a/scripts/ci/images/suse-nvhpcsdk-openmpi/Dockerfile +++ b/scripts/ci/images/suse-nvhpcsdk-openmpi/Dockerfile @@ -1,15 +1,15 @@ FROM ornladios/adios2:ci-suse-nvhpcsdk-base -# Install HDF5 1.12.0 +# Install HDF5 1.13.0 WORKDIR /opt/hdf5 -RUN curl -L https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.0/src/hdf5-1.12.0.tar.bz2 | \ +RUN curl -L https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.13/hdf5-1.13.0/src/hdf5-1.13.0.tar.bz2 | \ tar -xvj && \ mkdir build && \ cd build && \ source /etc/profile && \ module load nvhpc && \ /opt/cmake/bin/cmake \ - -DCMAKE_INSTALL_PREFIX=/opt/hdf5/1.12.0 \ + -DCMAKE_INSTALL_PREFIX=/opt/hdf5/1.13.0 \ -DBUILD_SHARED_LIBS=ON \ -DBUILD_STATIC_LIBS=OFF \ -DCMAKE_BUILD_TYPE=Release \ @@ -18,13 +18,13 @@ RUN curl -L https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.0 -DHDF5_BUILD_EXAMPLES=OFF \ -DBUILD_TESTING=OFF \ -DHDF5_BUILD_TOOLS=OFF \ - ../hdf5-1.12.0 && \ + ../hdf5-1.13.0 && \ make -j$(grep -c '^processor' /proc/cpuinfo) install && \ cd .. && \ - rm -rf hdf5-1.12.0 build -ENV PATH=/opt/hdf5/1.12.0/bin:${PATH} \ - LD_LIBRARY_PATH=/opt/hdf5/1.12.0/lib:${LD_LIBRARY_PATH} \ - CMAKE_PREFIX_PATH=/opt/hdf5/1.12.0:${CMAKE_PREFIX_PATH} + rm -rf hdf5-1.13.0 build +ENV PATH=/opt/hdf5/1.13.0/bin:${PATH} \ + LD_LIBRARY_PATH=/opt/hdf5/1.13.0/lib:${LD_LIBRARY_PATH} \ + CMAKE_PREFIX_PATH=/opt/hdf5/1.13.0:${CMAKE_PREFIX_PATH} # Misc cleanup of unneeded files RUN rm -rf /tmp/* && \ diff --git a/scripts/ci/images/suse-nvhpcsdk/Dockerfile b/scripts/ci/images/suse-nvhpcsdk/Dockerfile index 294cdbab84..bf8d6ebc51 100644 --- a/scripts/ci/images/suse-nvhpcsdk/Dockerfile +++ b/scripts/ci/images/suse-nvhpcsdk/Dockerfile @@ -2,14 +2,14 @@ FROM ornladios/adios2:ci-suse-nvhpcsdk-base # Install HDF5 WORKDIR /opt/hdf5 -RUN curl -L https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.0/src/hdf5-1.12.0.tar.bz2 | \ +RUN curl -L https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.13/hdf5-1.13.0/src/hdf5-1.13.0.tar.bz2 | \ tar -xvj && \ mkdir build && \ cd build && \ source /etc/profile && \ module load nvhpc-nompi && \ /opt/cmake/bin/cmake \ - -DCMAKE_INSTALL_PREFIX=/opt/hdf5/1.12.0 \ + -DCMAKE_INSTALL_PREFIX=/opt/hdf5/1.13.0 \ -DBUILD_SHARED_LIBS=ON \ -DBUILD_STATIC_LIBS=OFF \ -DCMAKE_BUILD_TYPE=Release \ @@ -18,13 +18,13 @@ RUN curl -L https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.0 -DHDF5_BUILD_EXAMPLES=OFF \ -DBUILD_TESTING=OFF \ -DHDF5_BUILD_TOOLS=OFF \ - ../hdf5-1.12.0 && \ + ../hdf5-1.13.0 && \ make -j$(grep -c '^processor' /proc/cpuinfo) install && \ cd .. && \ - rm -rf hdf5-1.12.0 build -ENV PATH=/opt/hdf5/1.12.0/bin:${PATH} \ - LD_LIBRARY_PATH=/opt/hdf5/1.12.0/lib:${LD_LIBRARY_PATH} \ - CMAKE_PREFIX_PATH=/opt/hdf5/1.12.0:${CMAKE_PREFIX_PATH} + rm -rf hdf5-1.13.0 build +ENV PATH=/opt/hdf5/1.13.0/bin:${PATH} \ + LD_LIBRARY_PATH=/opt/hdf5/1.13.0/lib:${LD_LIBRARY_PATH} \ + CMAKE_PREFIX_PATH=/opt/hdf5/1.13.0:${CMAKE_PREFIX_PATH} # Misc cleanup of unneeded files RUN rm -rf /tmp/* && \ From 0f6397beac2dbb26746e5e5ed3abaf56325845b8 Mon Sep 17 00:00:00 2001 From: Scot Breitenfeld Date: Tue, 7 Dec 2021 09:40:54 -0600 Subject: [PATCH 06/12] udated references from HDF5 1.12 to 1.13 --- docs/user_guide/source/setting_up/source/cmake.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/user_guide/source/setting_up/source/cmake.rst b/docs/user_guide/source/setting_up/source/cmake.rst index 0614803bfe..39164e8ebd 100644 --- a/docs/user_guide/source/setting_up/source/cmake.rst +++ b/docs/user_guide/source/setting_up/source/cmake.rst @@ -128,9 +128,9 @@ Notes: .. code-block:: bash # Several dependencies are installed under /opt/foo/bar and then a - # single dependency (HDF5 in this case) is installed in /opt/hdf5/1.12.0 + # single dependency (HDF5 in this case) is installed in /opt/hdf5/1.13.0 $ export CMAKE_PREFIX_PATH=/opt/foo/bar - $ cmake -DHDF5_ROOT=/opt/hdf5/1.12.0 ../ADIOS2 + $ cmake -DHDF5_ROOT=/opt/hdf5/1.13.0 ../ADIOS2 Example: the following configuration will build, test and install under /opt/adios2/2.7.1 an optimized (Release) version of ADIOS2. From 89f44a44e74be313cb85fbd3af59c8ab47736039 Mon Sep 17 00:00:00 2001 From: Scot Breitenfeld Date: Tue, 7 Dec 2021 09:56:59 -0600 Subject: [PATCH 07/12] fixed formatting --- source/h5vol/H5VolReadWrite.h | 3 ++- source/h5vol/H5Vol_attr.c | 28 ++++++++++++++-------------- source/h5vol/H5Vol_dataset.c | 2 +- source/h5vol/H5Vol_def.h | 18 ++++++++++-------- source/h5vol/H5Vol_link.c | 2 +- 5 files changed, 28 insertions(+), 25 deletions(-) diff --git a/source/h5vol/H5VolReadWrite.h b/source/h5vol/H5VolReadWrite.h index bfc4efee93..69768a76d2 100644 --- a/source/h5vol/H5VolReadWrite.h +++ b/source/h5vol/H5VolReadWrite.h @@ -34,7 +34,8 @@ extern herr_t H5VL_adios2_beginstep(const char *engine_name, extern herr_t H5VL_adios2_endstep(const char *engine_nane); static herr_t H5VL_adios2_introspect_opt_query(void *obj, H5VL_subclass_t cls, - int opt_type, uint64_t *supported) + int opt_type, + uint64_t *supported) { *supported = 0; return 0; diff --git a/source/h5vol/H5Vol_attr.c b/source/h5vol/H5Vol_attr.c index 6bf92b251c..a818e483f4 100644 --- a/source/h5vol/H5Vol_attr.c +++ b/source/h5vol/H5Vol_attr.c @@ -154,28 +154,28 @@ void GetFromAttribute(void *attrObj, hid_t *ret_id, H5VL_attr_get_t get_type) } } -herr_t H5VL_adios2_attr_get(void *obj, H5VL_attr_get_args_t *args, hid_t dxpl_id, - void **req) +herr_t H5VL_adios2_attr_get(void *obj, H5VL_attr_get_args_t *args, + hid_t dxpl_id, void **req) { REQUIRE_NOT_NULL_ERR(obj, -1); H5VL_ObjDef_t *vol = (H5VL_ObjDef_t *)obj; - + switch (args->op_type) { case H5VL_ATTR_GET_SPACE: - { + { hid_t *ret_id = (hid_t *)args->args.get_space.space_id; GetFromAttribute((vol->m_ObjPtr), ret_id, args->op_type); return 0; - } + } case H5VL_ATTR_GET_TYPE: - { + { hid_t *ret_id = (hid_t *)args->args.get_type.type_id; GetFromAttribute((vol->m_ObjPtr), ret_id, args->op_type); return 0; - } + } default: - break; + break; } switch (args->op_type) @@ -183,8 +183,8 @@ herr_t H5VL_adios2_attr_get(void *obj, H5VL_attr_get_args_t *args, hid_t dxpl_id case H5VL_ATTR_GET_NAME: { char *buf = args->args.get_name.buf; - size_t *ret_val = (size_t*)args->args.get_name.attr_name_len; - + size_t *ret_val = (size_t *)args->args.get_name.attr_name_len; + const H5VL_loc_params_t *loc_params = &args->args.get_name.loc_params; REQUIRE_NOT_NULL_ERR(loc_params, -1); @@ -232,8 +232,8 @@ herr_t H5VL_adios2_attr_close(void *attr, hid_t dxpl_id, void **req) } herr_t H5VL_adios2_attr_specific(void *obj, const H5VL_loc_params_t *loc_params, - H5VL_attr_specific_args_t *args, - hid_t dxpl_id, void **req) + H5VL_attr_specific_args_t *args, hid_t dxpl_id, + void **req) { REQUIRE_NOT_NULL_ERR(obj, -1); H5VL_ObjDef_t *vol = (H5VL_ObjDef_t *)obj; @@ -245,7 +245,7 @@ herr_t H5VL_adios2_attr_specific(void *obj, const H5VL_loc_params_t *loc_params, { case H5VL_ATTR_DELETE: { - attr_name = (const char *)args->args.del.name; + attr_name = (const char *)args->args.del.name; attr = gLocateAttrFrom(vol, attr_name); if (NULL != attr) @@ -265,7 +265,7 @@ herr_t H5VL_adios2_attr_specific(void *obj, const H5VL_loc_params_t *loc_params, { hbool_t *ret = args->args.exists.exists; - attr_name = (const char *)args->args.exists.name; + attr_name = (const char *)args->args.exists.name; attr = gLocateAttrFrom(vol, attr_name); if (NULL == attr) diff --git a/source/h5vol/H5Vol_dataset.c b/source/h5vol/H5Vol_dataset.c index aac61777f6..462b304446 100644 --- a/source/h5vol/H5Vol_dataset.c +++ b/source/h5vol/H5Vol_dataset.c @@ -100,7 +100,7 @@ herr_t H5VL_adios2_dataset_read(void *dset, hid_t mem_type_id, return gADIOS2ReadVar(var); } -herr_t H5VL_adios2_dataset_get(void *dset, H5VL_dataset_get_args_t *args, +herr_t H5VL_adios2_dataset_get(void *dset, H5VL_dataset_get_args_t *args, hid_t dxpl_id, void **req) { REQUIRE_NOT_NULL_ERR(dset, -1); diff --git a/source/h5vol/H5Vol_def.h b/source/h5vol/H5Vol_def.h index 6c5e415872..e84056cee6 100644 --- a/source/h5vol/H5Vol_def.h +++ b/source/h5vol/H5Vol_def.h @@ -148,10 +148,11 @@ extern void *H5VL_adios2_object_open(void *obj, hid_t H5_ATTR_UNUSED dxpl_id, void H5_ATTR_UNUSED **req); -extern herr_t -H5VL_adios2_object_get(void *obj, const H5VL_loc_params_t *loc_params, - H5VL_object_get_args_t *args, hid_t H5_ATTR_UNUSED dxpl_id, - void H5_ATTR_UNUSED **req); +extern herr_t H5VL_adios2_object_get(void *obj, + const H5VL_loc_params_t *loc_params, + H5VL_object_get_args_t *args, + hid_t H5_ATTR_UNUSED dxpl_id, + void H5_ATTR_UNUSED **req); // dataset functions: extern void *H5VL_adios2_dataset_create(void *obj, @@ -189,10 +190,11 @@ extern herr_t H5VL_adios2_link_specific(void *obj, hid_t H5_ATTR_UNUSED dxpl_id, void H5_ATTR_UNUSED **req); -extern herr_t -H5VL_adios2_link_get(void *obj, const H5VL_loc_params_t *loc_params, - H5VL_link_get_args_t *args, hid_t H5_ATTR_UNUSED dxpl_id, - void H5_ATTR_UNUSED **req); +extern herr_t H5VL_adios2_link_get(void *obj, + const H5VL_loc_params_t *loc_params, + H5VL_link_get_args_t *args, + hid_t H5_ATTR_UNUSED dxpl_id, + void H5_ATTR_UNUSED **req); // // group functions: diff --git a/source/h5vol/H5Vol_link.c b/source/h5vol/H5Vol_link.c index a4ff52a3ef..1bbe5ac80b 100644 --- a/source/h5vol/H5Vol_link.c +++ b/source/h5vol/H5Vol_link.c @@ -66,7 +66,7 @@ herr_t H5VL_adios2_link_get(void *obj, const H5VL_loc_params_t *loc_params, case H5VL_LINK_GET_NAME: { char *name = args->args.get_name.name; - size_t *ret = (size_t*)args->args.get_name.name_len; + size_t *ret = (size_t *)args->args.get_name.name_len; if ((GROUP == vol->m_ObjType) || (ROOT == vol->m_ObjType)) { From 15b79e9206c0a4b26ab46efea03ba5a08bd9c6c4 Mon Sep 17 00:00:00 2001 From: Scot Breitenfeld Date: Tue, 7 Dec 2021 11:27:05 -0600 Subject: [PATCH 08/12] fixed formatting --- source/h5vol/H5VolReadWrite.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/h5vol/H5VolReadWrite.h b/source/h5vol/H5VolReadWrite.h index 69768a76d2..bfc4efee93 100644 --- a/source/h5vol/H5VolReadWrite.h +++ b/source/h5vol/H5VolReadWrite.h @@ -34,8 +34,7 @@ extern herr_t H5VL_adios2_beginstep(const char *engine_name, extern herr_t H5VL_adios2_endstep(const char *engine_nane); static herr_t H5VL_adios2_introspect_opt_query(void *obj, H5VL_subclass_t cls, - int opt_type, - uint64_t *supported) + int opt_type, uint64_t *supported) { *supported = 0; return 0; From a92c56c493d88da35bbb6a58590110d726b1fdcf Mon Sep 17 00:00:00 2001 From: "M. Scot Breitenfeld" Date: Tue, 7 Dec 2021 13:42:23 -0600 Subject: [PATCH 09/12] fixed formatting --- source/h5vol/H5VolReadWrite.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/h5vol/H5VolReadWrite.h b/source/h5vol/H5VolReadWrite.h index bfc4efee93..b07222e65b 100644 --- a/source/h5vol/H5VolReadWrite.h +++ b/source/h5vol/H5VolReadWrite.h @@ -34,7 +34,8 @@ extern herr_t H5VL_adios2_beginstep(const char *engine_name, extern herr_t H5VL_adios2_endstep(const char *engine_nane); static herr_t H5VL_adios2_introspect_opt_query(void *obj, H5VL_subclass_t cls, - int opt_type, uint64_t *supported) + int opt_type, + uint64_t *supported) { *supported = 0; return 0; From 5b3a40bcf8e4ff7e321c1a9b1b9b8c50dde218b8 Mon Sep 17 00:00:00 2001 From: Scot Breitenfeld Date: Tue, 14 Dec 2021 11:30:55 -0600 Subject: [PATCH 10/12] added check that HDF5 version is > 1.12 --- source/h5vol/CMakeLists.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/source/h5vol/CMakeLists.txt b/source/h5vol/CMakeLists.txt index 1ca135d306..1cd7d345a7 100644 --- a/source/h5vol/CMakeLists.txt +++ b/source/h5vol/CMakeLists.txt @@ -18,6 +18,16 @@ target_include_directories(adios2_h5vol PRIVATE ${HDF5_C_INCLUDE_DIRS}) target_link_libraries(adios2_h5vol PRIVATE ${HDF5_C_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ) + +message(STATUS "HDF5_VERSION=${HDF5_VERSION}") +if (HDF5_VERSION) + if (HDF5_VERSION VERSION_LESS "1.13") + message(FATAL_ERROR "HDF5 version 1.13+ is required") + endif() +else() + message(WARNING "Version of HDF5 is unknown, but version 1.13+ is required.") +endif() + if(NOT HDF5_IS_PARALLEL) target_link_libraries(adios2_h5vol PRIVATE adios2::c) elseif(HDF5_IS_PARALLEL AND ADIOS2_HAVE_MPI) From 1d8c45669a4339a18ab19733e7fbaa377a1d3c3b Mon Sep 17 00:00:00 2001 From: Chuck Atkins Date: Fri, 25 Feb 2022 08:14:23 -0500 Subject: [PATCH 11/12] ci: re-enable HDF5 --- scripts/ci/cmake-v2/ci-el8-gcc10-mpi.cmake | 2 +- scripts/ci/cmake-v2/ci-el8-gcc10-serial.cmake | 2 +- scripts/ci/cmake-v2/ci-el8-gcc11-mpi.cmake | 2 +- scripts/ci/cmake-v2/ci-el8-gcc11-serial.cmake | 2 +- scripts/ci/cmake-v2/ci-el8-gcc8-mpi.cmake | 2 +- scripts/ci/cmake-v2/ci-el8-gcc8-serial.cmake | 2 +- scripts/ci/cmake-v2/ci-el8-gcc9-mpi.cmake | 2 +- scripts/ci/cmake-v2/ci-el8-gcc9-serial.cmake | 2 +- scripts/ci/cmake-v2/ci-el8-icc-mpi.cmake | 2 +- scripts/ci/cmake-v2/ci-el8-icc-serial.cmake | 2 +- scripts/ci/cmake-v2/ci-el8-nvhpc222-mpi.cmake | 2 +- scripts/ci/cmake-v2/ci-el8-nvhpc222-serial.cmake | 2 +- scripts/ci/cmake-v2/ci-el8-oneapi-mpi.cmake | 2 +- scripts/ci/cmake-v2/ci-el8-oneapi-serial.cmake | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/scripts/ci/cmake-v2/ci-el8-gcc10-mpi.cmake b/scripts/ci/cmake-v2/ci-el8-gcc10-mpi.cmake index 78a2c3eb37..4bc8c1b644 100644 --- a/scripts/ci/cmake-v2/ci-el8-gcc10-mpi.cmake +++ b/scripts/ci/cmake-v2/ci-el8-gcc10-mpi.cmake @@ -13,7 +13,7 @@ ADIOS2_USE_BZip2:BOOL=ON ADIOS2_USE_Blosc:BOOL=ON ADIOS2_USE_DataMan:BOOL=ON ADIOS2_USE_Fortran:BOOL=ON -ADIOS2_USE_HDF5:BOOL=OFF +ADIOS2_USE_HDF5:BOOL=ON ADIOS2_USE_MPI:BOOL=ON ADIOS2_USE_Python:BOOL=ON ADIOS2_USE_SZ:BOOL=ON diff --git a/scripts/ci/cmake-v2/ci-el8-gcc10-serial.cmake b/scripts/ci/cmake-v2/ci-el8-gcc10-serial.cmake index 4566a06948..78b7ef0698 100644 --- a/scripts/ci/cmake-v2/ci-el8-gcc10-serial.cmake +++ b/scripts/ci/cmake-v2/ci-el8-gcc10-serial.cmake @@ -9,7 +9,7 @@ ADIOS2_USE_BZip2:BOOL=ON ADIOS2_USE_Blosc:BOOL=ON ADIOS2_USE_DataMan:BOOL=ON ADIOS2_USE_Fortran:BOOL=ON -ADIOS2_USE_HDF5:BOOL=OFF +ADIOS2_USE_HDF5:BOOL=ON ADIOS2_USE_MPI:BOOL=OFF ADIOS2_USE_Python:BOOL=ON ADIOS2_USE_SZ:BOOL=ON diff --git a/scripts/ci/cmake-v2/ci-el8-gcc11-mpi.cmake b/scripts/ci/cmake-v2/ci-el8-gcc11-mpi.cmake index 78a2c3eb37..4bc8c1b644 100644 --- a/scripts/ci/cmake-v2/ci-el8-gcc11-mpi.cmake +++ b/scripts/ci/cmake-v2/ci-el8-gcc11-mpi.cmake @@ -13,7 +13,7 @@ ADIOS2_USE_BZip2:BOOL=ON ADIOS2_USE_Blosc:BOOL=ON ADIOS2_USE_DataMan:BOOL=ON ADIOS2_USE_Fortran:BOOL=ON -ADIOS2_USE_HDF5:BOOL=OFF +ADIOS2_USE_HDF5:BOOL=ON ADIOS2_USE_MPI:BOOL=ON ADIOS2_USE_Python:BOOL=ON ADIOS2_USE_SZ:BOOL=ON diff --git a/scripts/ci/cmake-v2/ci-el8-gcc11-serial.cmake b/scripts/ci/cmake-v2/ci-el8-gcc11-serial.cmake index 4566a06948..78b7ef0698 100644 --- a/scripts/ci/cmake-v2/ci-el8-gcc11-serial.cmake +++ b/scripts/ci/cmake-v2/ci-el8-gcc11-serial.cmake @@ -9,7 +9,7 @@ ADIOS2_USE_BZip2:BOOL=ON ADIOS2_USE_Blosc:BOOL=ON ADIOS2_USE_DataMan:BOOL=ON ADIOS2_USE_Fortran:BOOL=ON -ADIOS2_USE_HDF5:BOOL=OFF +ADIOS2_USE_HDF5:BOOL=ON ADIOS2_USE_MPI:BOOL=OFF ADIOS2_USE_Python:BOOL=ON ADIOS2_USE_SZ:BOOL=ON diff --git a/scripts/ci/cmake-v2/ci-el8-gcc8-mpi.cmake b/scripts/ci/cmake-v2/ci-el8-gcc8-mpi.cmake index 78a2c3eb37..4bc8c1b644 100644 --- a/scripts/ci/cmake-v2/ci-el8-gcc8-mpi.cmake +++ b/scripts/ci/cmake-v2/ci-el8-gcc8-mpi.cmake @@ -13,7 +13,7 @@ ADIOS2_USE_BZip2:BOOL=ON ADIOS2_USE_Blosc:BOOL=ON ADIOS2_USE_DataMan:BOOL=ON ADIOS2_USE_Fortran:BOOL=ON -ADIOS2_USE_HDF5:BOOL=OFF +ADIOS2_USE_HDF5:BOOL=ON ADIOS2_USE_MPI:BOOL=ON ADIOS2_USE_Python:BOOL=ON ADIOS2_USE_SZ:BOOL=ON diff --git a/scripts/ci/cmake-v2/ci-el8-gcc8-serial.cmake b/scripts/ci/cmake-v2/ci-el8-gcc8-serial.cmake index 4566a06948..78b7ef0698 100644 --- a/scripts/ci/cmake-v2/ci-el8-gcc8-serial.cmake +++ b/scripts/ci/cmake-v2/ci-el8-gcc8-serial.cmake @@ -9,7 +9,7 @@ ADIOS2_USE_BZip2:BOOL=ON ADIOS2_USE_Blosc:BOOL=ON ADIOS2_USE_DataMan:BOOL=ON ADIOS2_USE_Fortran:BOOL=ON -ADIOS2_USE_HDF5:BOOL=OFF +ADIOS2_USE_HDF5:BOOL=ON ADIOS2_USE_MPI:BOOL=OFF ADIOS2_USE_Python:BOOL=ON ADIOS2_USE_SZ:BOOL=ON diff --git a/scripts/ci/cmake-v2/ci-el8-gcc9-mpi.cmake b/scripts/ci/cmake-v2/ci-el8-gcc9-mpi.cmake index 78a2c3eb37..4bc8c1b644 100644 --- a/scripts/ci/cmake-v2/ci-el8-gcc9-mpi.cmake +++ b/scripts/ci/cmake-v2/ci-el8-gcc9-mpi.cmake @@ -13,7 +13,7 @@ ADIOS2_USE_BZip2:BOOL=ON ADIOS2_USE_Blosc:BOOL=ON ADIOS2_USE_DataMan:BOOL=ON ADIOS2_USE_Fortran:BOOL=ON -ADIOS2_USE_HDF5:BOOL=OFF +ADIOS2_USE_HDF5:BOOL=ON ADIOS2_USE_MPI:BOOL=ON ADIOS2_USE_Python:BOOL=ON ADIOS2_USE_SZ:BOOL=ON diff --git a/scripts/ci/cmake-v2/ci-el8-gcc9-serial.cmake b/scripts/ci/cmake-v2/ci-el8-gcc9-serial.cmake index 4566a06948..78b7ef0698 100644 --- a/scripts/ci/cmake-v2/ci-el8-gcc9-serial.cmake +++ b/scripts/ci/cmake-v2/ci-el8-gcc9-serial.cmake @@ -9,7 +9,7 @@ ADIOS2_USE_BZip2:BOOL=ON ADIOS2_USE_Blosc:BOOL=ON ADIOS2_USE_DataMan:BOOL=ON ADIOS2_USE_Fortran:BOOL=ON -ADIOS2_USE_HDF5:BOOL=OFF +ADIOS2_USE_HDF5:BOOL=ON ADIOS2_USE_MPI:BOOL=OFF ADIOS2_USE_Python:BOOL=ON ADIOS2_USE_SZ:BOOL=ON diff --git a/scripts/ci/cmake-v2/ci-el8-icc-mpi.cmake b/scripts/ci/cmake-v2/ci-el8-icc-mpi.cmake index 5aae30a478..07eb6b0778 100644 --- a/scripts/ci/cmake-v2/ci-el8-icc-mpi.cmake +++ b/scripts/ci/cmake-v2/ci-el8-icc-mpi.cmake @@ -13,7 +13,7 @@ ADIOS2_USE_BZip2:BOOL=ON ADIOS2_USE_Blosc:BOOL=ON ADIOS2_USE_DataMan:BOOL=ON ADIOS2_USE_Fortran:BOOL=ON -ADIOS2_USE_HDF5:BOOL=OFF +ADIOS2_USE_HDF5:BOOL=ON ADIOS2_USE_MPI:BOOL=ON ADIOS2_USE_Python:BOOL=ON ADIOS2_USE_SZ:BOOL=ON diff --git a/scripts/ci/cmake-v2/ci-el8-icc-serial.cmake b/scripts/ci/cmake-v2/ci-el8-icc-serial.cmake index 5727708458..84ba5d999e 100644 --- a/scripts/ci/cmake-v2/ci-el8-icc-serial.cmake +++ b/scripts/ci/cmake-v2/ci-el8-icc-serial.cmake @@ -9,7 +9,7 @@ ADIOS2_USE_BZip2:BOOL=ON ADIOS2_USE_Blosc:BOOL=ON ADIOS2_USE_DataMan:BOOL=ON ADIOS2_USE_Fortran:BOOL=ON -ADIOS2_USE_HDF5:BOOL=OFF +ADIOS2_USE_HDF5:BOOL=ON ADIOS2_USE_MPI:BOOL=OFF ADIOS2_USE_Python:BOOL=ON ADIOS2_USE_SZ:BOOL=ON diff --git a/scripts/ci/cmake-v2/ci-el8-nvhpc222-mpi.cmake b/scripts/ci/cmake-v2/ci-el8-nvhpc222-mpi.cmake index 14aacecf52..3edb330aed 100644 --- a/scripts/ci/cmake-v2/ci-el8-nvhpc222-mpi.cmake +++ b/scripts/ci/cmake-v2/ci-el8-nvhpc222-mpi.cmake @@ -14,7 +14,7 @@ ADIOS2_USE_Blosc:BOOL=ON ADIOS2_USE_CUDA:BOOL=OFF ADIOS2_USE_DataMan:BOOL=ON ADIOS2_USE_Fortran:BOOL=ON -ADIOS2_USE_HDF5:BOOL=OFF +ADIOS2_USE_HDF5:BOOL=ON ADIOS2_USE_MPI:BOOL=ON ADIOS2_USE_Python:BOOL=OFF ADIOS2_USE_SZ:BOOL=ON diff --git a/scripts/ci/cmake-v2/ci-el8-nvhpc222-serial.cmake b/scripts/ci/cmake-v2/ci-el8-nvhpc222-serial.cmake index 2276b47f10..3e7f97f5a8 100644 --- a/scripts/ci/cmake-v2/ci-el8-nvhpc222-serial.cmake +++ b/scripts/ci/cmake-v2/ci-el8-nvhpc222-serial.cmake @@ -10,7 +10,7 @@ ADIOS2_USE_Blosc:BOOL=ON ADIOS2_USE_CUDA:BOOL=OFF ADIOS2_USE_DataMan:BOOL=ON ADIOS2_USE_Fortran:BOOL=ON -ADIOS2_USE_HDF5:BOOL=OFF +ADIOS2_USE_HDF5:BOOL=ON ADIOS2_USE_MPI:BOOL=OFF ADIOS2_USE_Python:BOOL=OFF ADIOS2_USE_SZ:BOOL=ON diff --git a/scripts/ci/cmake-v2/ci-el8-oneapi-mpi.cmake b/scripts/ci/cmake-v2/ci-el8-oneapi-mpi.cmake index 63c037bea7..72ee3c7284 100644 --- a/scripts/ci/cmake-v2/ci-el8-oneapi-mpi.cmake +++ b/scripts/ci/cmake-v2/ci-el8-oneapi-mpi.cmake @@ -13,7 +13,7 @@ ADIOS2_USE_BZip2:BOOL=ON ADIOS2_USE_Blosc:BOOL=ON ADIOS2_USE_DataMan:BOOL=ON ADIOS2_USE_Fortran:BOOL=ON -ADIOS2_USE_HDF5:BOOL=OFF +ADIOS2_USE_HDF5:BOOL=ON ADIOS2_USE_MPI:BOOL=ON ADIOS2_USE_Python:BOOL=ON ADIOS2_USE_SZ:BOOL=ON diff --git a/scripts/ci/cmake-v2/ci-el8-oneapi-serial.cmake b/scripts/ci/cmake-v2/ci-el8-oneapi-serial.cmake index 1eab979d75..17f5e90b18 100644 --- a/scripts/ci/cmake-v2/ci-el8-oneapi-serial.cmake +++ b/scripts/ci/cmake-v2/ci-el8-oneapi-serial.cmake @@ -9,7 +9,7 @@ ADIOS2_USE_BZip2:BOOL=ON ADIOS2_USE_Blosc:BOOL=ON ADIOS2_USE_DataMan:BOOL=ON ADIOS2_USE_Fortran:BOOL=ON -ADIOS2_USE_HDF5:BOOL=OFF +ADIOS2_USE_HDF5:BOOL=ON ADIOS2_USE_MPI:BOOL=OFF ADIOS2_USE_Python:BOOL=ON ADIOS2_USE_SZ:BOOL=ON From 7aa92e8bdd657cd97c4010e673885037b9214e27 Mon Sep 17 00:00:00 2001 From: Chuck Atkins Date: Fri, 25 Feb 2022 09:20:09 -0500 Subject: [PATCH 12/12] HDF5: Silence a variety of CI warnings --- examples/hello/hdf5Reader/helloHDF5Reader.cpp | 4 +-- source/CMakeLists.txt | 17 +++++++----- source/adios2/CMakeLists.txt | 8 ++++-- .../toolkit/interop/hdf5/HDF5Common.cpp | 1 + source/h5vol/CMakeLists.txt | 26 +++++++------------ source/utils/adios_iotest/hdf5Stream.cpp | 4 +-- 6 files changed, 31 insertions(+), 29 deletions(-) diff --git a/examples/hello/hdf5Reader/helloHDF5Reader.cpp b/examples/hello/hdf5Reader/helloHDF5Reader.cpp index 134b5132d2..8031c66ec4 100644 --- a/examples/hello/hdf5Reader/helloHDF5Reader.cpp +++ b/examples/hello/hdf5Reader/helloHDF5Reader.cpp @@ -100,7 +100,7 @@ int main(int argc, char *argv[]) const std::map variables = h5IO.AvailableVariables(); - for (const auto variablePair : variables) + for (const auto &variablePair : variables) { std::cout << "Name: " << variablePair.first; std::cout << std::endl; @@ -132,7 +132,7 @@ int main(int argc, char *argv[]) const std::map attributes = h5IO.AvailableAttributes(); - for (const auto attrPair : attributes) + for (const auto &attrPair : attributes) { std::cout << "AttrName: " << attrPair.first; std::cout << std::endl; diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 4acca98426..d304f47548 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -6,11 +6,16 @@ add_subdirectory(adios2) add_subdirectory(utils) -# HDF5 VOL requires a matching adios configuration -if(ADIOS2_HAVE_HDF5 AND HDF5_VERSION VERSION_GREATER_EQUAL 1.11 AND - (NOT HDF5_IS_PARALLEL OR (HDF5_IS_PARALLEL AND ADIOS2_USE_MPI))) - set(ADIOS2_HAVE_HDF5_VOL ON CACHE INTERNAL "" FORCE) - add_subdirectory(h5vol) +# HDF5 VOL requires 1.13+ +if(ADIOS2_HAVE_HDF5) + if(HDF5_VERSION VERSION_LESS 1.13) + set(ADIOS2_HAVE_HDF5_VOL OFF CACHE INTERNAL "") + else() + set(ADIOS2_HAVE_HDF5_VOL ON CACHE INTERNAL "") + endif() else() - set(ADIOS2_HAVE_HDF5_VOL OFF CACHE INTERNAL "" FORCE) + set(ADIOS2_HAVE_HDF5_VOL OFF CACHE INTERNAL "") +endif() +if(ADIOS2_HAVE_HDF5_VOL) + add_subdirectory(h5vol) endif() diff --git a/source/adios2/CMakeLists.txt b/source/adios2/CMakeLists.txt index e8ed69f360..bfd69cc090 100644 --- a/source/adios2/CMakeLists.txt +++ b/source/adios2/CMakeLists.txt @@ -288,14 +288,18 @@ if(ADIOS2_HAVE_HDF5) set(adios2_hdf5_objs adios2_hdf5) if(HDF5_IS_PARALLEL) list(APPEND adios2_hdf5_objs adios2_hdf5_mpi) - set_property(SOURCE core/IOMPI.cpp APPEND PROPERTY COMPILE_DEFINITIONS ADIOS2_HAVE_HDF5_PARALLEL) + set_property(SOURCE core/IOMPI.cpp APPEND PROPERTY + COMPILE_DEFINITIONS ADIOS2_HAVE_HDF5_PARALLEL + ) add_library(adios2_hdf5_mpi OBJECT toolkit/interop/hdf5/HDF5CommonMPI.cpp ) target_compile_definitions(adios2_hdf5_mpi PRIVATE ADIOS2_USE_MPI) target_link_libraries(adios2_core_mpi PRIVATE adios2_hdf5_mpi) set_property(TARGET adios2_hdf5_mpi PROPERTY EXPORT_NAME hdf5_mpi) - set_property(TARGET adios2_hdf5_mpi PROPERTY OUTPUT_NAME adios2${ADIOS2_LIBRARY_SUFFIX}_hdf5_mpi) + set_property(TARGET adios2_hdf5_mpi PROPERTY + OUTPUT_NAME adios2${ADIOS2_LIBRARY_SUFFIX}_hdf5_mpi + ) endif() foreach(lib IN LISTS adios2_hdf5_objs) diff --git a/source/adios2/toolkit/interop/hdf5/HDF5Common.cpp b/source/adios2/toolkit/interop/hdf5/HDF5Common.cpp index 10fc0afaa8..04fff625b9 100644 --- a/source/adios2/toolkit/interop/hdf5/HDF5Common.cpp +++ b/source/adios2/toolkit/interop/hdf5/HDF5Common.cpp @@ -35,6 +35,7 @@ namespace HDF5Common::MPI_API const *GetHDF5Common_MPI_API() { std::lock_guard guard(HDF5Common_MPI_API_Mutex); + (void)guard; // Workaround to silence compiler warning about unused variable return HDF5Common_MPI_API; } diff --git a/source/h5vol/CMakeLists.txt b/source/h5vol/CMakeLists.txt index 1cd7d345a7..c94593a70e 100644 --- a/source/h5vol/CMakeLists.txt +++ b/source/h5vol/CMakeLists.txt @@ -3,6 +3,12 @@ # accompanying file Copyright.txt for details. #------------------------------------------------------------------------------# +if(CMAKE_C_COMPILER_ID MATCHES "^(GNU)$") + # Silence a noisy warning in our log functions as the behavior is + # intentional + string(APPEND CMAKE_C_FLAGS " -Wno-format-zero-length") +endif() + add_library(adios2_h5vol H5VolReadWrite.c H5Vol.c @@ -19,27 +25,13 @@ target_link_libraries(adios2_h5vol PRIVATE ${HDF5_C_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ) -message(STATUS "HDF5_VERSION=${HDF5_VERSION}") -if (HDF5_VERSION) - if (HDF5_VERSION VERSION_LESS "1.13") - message(FATAL_ERROR "HDF5 version 1.13+ is required") - endif() +if(ADIOS2_USE_MPI) + target_link_libraries(adios2_h5vol PRIVATE adios2::c_mpi MPI::MPI_C) else() - message(WARNING "Version of HDF5 is unknown, but version 1.13+ is required.") -endif() - -if(NOT HDF5_IS_PARALLEL) target_link_libraries(adios2_h5vol PRIVATE adios2::c) -elseif(HDF5_IS_PARALLEL AND ADIOS2_HAVE_MPI) - target_link_libraries(adios2_h5vol PRIVATE adios2::c_mpi MPI::MPI_C) -else() # HDF5_IS_PARALLEL AND NOT ADIOS2_HAVE_MPI - message(FATAL_ERROR "Invalid configuration: HDF5_IS_PARALLEL AND NOT ADIOS2_HAVE_MPI") endif() -install(FILES H5Vol_def.h H5VolError.h H5Vol.h H5VolReadWrite.h H5VolUtil.h - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/adios2/h5vol - COMPONENT adios2_h5vol -) +# VOL install should only contain the .so and no headers install(TARGETS adios2_h5vol RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} diff --git a/source/utils/adios_iotest/hdf5Stream.cpp b/source/utils/adios_iotest/hdf5Stream.cpp index b55bd4ddae..109df310d3 100644 --- a/source/utils/adios_iotest/hdf5Stream.cpp +++ b/source/utils/adios_iotest/hdf5Stream.cpp @@ -220,7 +220,7 @@ void hdf5Stream::Write(CommandWrite *cmdW, Config &cfg, double maxWriteTime, minWriteTime; MPI_Barrier(comm); timeStart = MPI_Wtime(); - for (const auto ov : cmdW->variables) + for (const auto &ov : cmdW->variables) { putHDF5Array(ov, step); } @@ -394,7 +394,7 @@ adios2::StepStatus hdf5Stream::Read(CommandRead *cmdR, Config &cfg, } void hdf5Stream::Close() { - for (const auto it : varmap) + for (const auto &it : varmap) { auto &vi = it.second; H5Dclose(vi.dataset);