HDF5 API Support through VOL
We have developed a HDF5 VOL in order to comply with the ECP request to support HDF5 API. Through this VOL the HDF5 clients can read and write general ADIOS files.
The Virtual Object Layer (VOL) is a feature introduced in recent release of HDF5 1.12 (https://hdf5.wiki/index.php/New_Features_in_HDF5_Release_1.12).
So please do make sure your HDF5 version supports VOL.
Once the ADIOS VOL is compiled, There are two ways to apply it:
externally (through dynamic library, no code change)
internally (through client code).
Set the following environment parameters:
Without code change, ADIOS2 VOL will be loaded at runtime by HDF5, to access ADIOS files without changing user code.
include adios header
call the function to set VOL when H5F is initiated
call the function to unset VOL when H5F is closed
// other includes #include <adios2/h5vol/H5Vol.h> // ADD THIS LINE TO INCLUDE ADIOS VOL hid_t pid = H5Pcreate(H5P_FILE_ACCESS); // other declarations hid_t fid = H5Fopen(filename, mode, pid); H5VL_ADIOS2_set(pid); // ADD THIS LINE TO USE ADIOS VOL H5Fclose(fid); H5VL_ADIOS2_unset(); // ADD THIS LINE TO EXIT ADIOS VOL
Note: The following features are not supported in this VOL:
HDF5 parameters are not passed down. e.g. compression/decompression
ADIOS2 parameters is not setup.
user defined types
change of variable extent is not supported in ADIOS2.