diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 588fa84..6f307ab 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -14,7 +14,7 @@ on: # Allows to run this workflow manually from the Actions tab workflow_dispatch: jobs: - vol-async-hdf5-1_14_3-Makefile: + vol-async-hdf5-latest-Makefile: runs-on: ubuntu-latest timeout-minutes: 60 @@ -23,18 +23,17 @@ jobs: uses: actions/checkout@v3 with: submodules: 'true' - - - name: Checkout HDF5 1.14.3 - uses: actions/checkout@v3 - with: - repository: HDFGroup/hdf5 - ref: hdf5-1_14_3 - path: hdf5 - name: Dependencies run: | sudo apt-get update sudo apt-get install libtool libopenmpi-dev zlib1g-dev python3 + + - name: Checkout latest HDF5 release + run: | + wget https://github.com/HDFGroup/hdf5/releases/latest/download/hdf5.tar.gz + tar xzf hdf5.tar.gz + ln -sf hdf5-* hdf5 - name: Installation run: | @@ -46,10 +45,8 @@ jobs: mkdir $HDF5_DIR # Compile HDF5 cd hdf5 - export HDF5_LIBTOOL=/usr/bin/libtoolize - ./autogen.sh ./configure --prefix=$HDF5_DIR --enable-parallel --enable-threadsafe --enable-unsupported \ - --disable-tests --disable-hl --disable-fortran --disable-tools --disable-hltools + --disable-tests --disable-hl --disable-fortran --disable-tools make && make install # Compile Argobots @@ -138,7 +135,7 @@ jobs: export HDF5_LIBTOOL=/usr/bin/libtoolize ./autogen.sh ./configure --prefix=$HDF5_DIR --enable-parallel --enable-threadsafe --enable-unsupported \ - --disable-tests --disable-hl --disable-fortran --disable-tools --disable-hltools + --disable-tests --disable-hl --disable-fortran --disable-tools make && make install # Compile Argobots @@ -193,7 +190,7 @@ jobs: make check date - vol-async-hdf5-1_14_3-cmake: + vol-async-hdf5-latest-cmake: runs-on: ubuntu-latest timeout-minutes: 30 @@ -202,19 +199,18 @@ jobs: uses: actions/checkout@v3 with: submodules: 'true' - - - name: Checkout HDF5 1.14.3 - uses: actions/checkout@v3 - with: - repository: HDFGroup/hdf5 - ref: hdf5-1_14_3 - path: hdf5 - + - name: Dependencies run: | sudo apt-get update sudo apt-get install libtool libopenmpi-dev zlib1g-dev python3 cmake - + + - name: Checkout latest HDF5 release + run: | + wget https://github.com/HDFGroup/hdf5/releases/latest/download/hdf5.tar.gz + tar xzf hdf5.tar.gz + ln -sf hdf5-* hdf5 + - name: Installation run: | mydir="$PWD" @@ -228,7 +224,7 @@ jobs: mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=$HDF5_DIR -DHDF5_ENABLE_PARALLEL=ON -DHDF5_ENABLE_THREADSAFE=ON \ - -DALLOW_UNSUPPORTED=ON -DBUILD_TESTING=OFF -DHDF5_BUILD_HL_LIB=OFF -DHDF5_BUILD_HL_TOOLS=OFF \ + -DALLOW_UNSUPPORTED=ON -DBUILD_TESTING=OFF -DHDF5_BUILD_HL_LIB=OFF \ -DHDF5_BUILD_EXAMPLES=OFF -DHDF5_BUILD_FORTRAN=OFF -DCMAKE_C_COMPILER=mpicc .. make -j && make install @@ -309,7 +305,7 @@ jobs: mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=$HDF5_DIR -DHDF5_ENABLE_PARALLEL=ON -DHDF5_ENABLE_THREADSAFE=ON \ - -DALLOW_UNSUPPORTED=ON -DBUILD_TESTING=OFF -DHDF5_BUILD_HL_LIB=OFF -DHDF5_BUILD_HL_TOOLS=OFF \ + -DALLOW_UNSUPPORTED=ON -DBUILD_TESTING=OFF -DHDF5_BUILD_HL_LIB=OFF \ -DHDF5_BUILD_EXAMPLES=OFF -DHDF5_BUILD_FORTRAN=OFF -DCMAKE_C_COMPILER=mpicc .. make -j && make install diff --git a/CMakeLists.txt b/CMakeLists.txt index 52e7358..e35a4bf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,11 +32,30 @@ if(NOT HDF5_VOL_ASYNC_INSTALL_TEST_DIR) set(HDF5_VOL_ASYNC_INSTALL_TEST_DIR ${CMAKE_INSTALL_PREFIX}/test) endif() +include(CheckSymbolExists) +list(APPEND CMAKE_REQUIRED_INCLUDES ${HDF5_INCLUDE_DIRS}) +check_symbol_exists(H5_HAVE_PARALLEL "H5pubconf.h" HDF5_HAVE_PARALLEL) +if(NOT HDF5_HAVE_PARALLEL) + message(FATAL_ERROR "HDF5 library needs to enable parallel support.") +endif() + +check_symbol_exists(H5_HAVE_THREADSAFE "H5pubconf.h" HDF5_HAVE_THREADSAFE) +if(NOT HDF5_HAVE_THREADSAFE) + message(FATAL_ERROR "HDF5 library needs to enable threadsafe support.") +endif() + +# Check if HDF5 version is 1.14 or greater +if(HDF5_FOUND) + if (HDF5_VERSION VERSION_LESS "1.14.0") + message (FATAL_ERROR "HDF5 ${HDF5_VERSION}: required HDF5 version is at least 1.14 ") + endif () +endif () + set(HDF5_VOL_ASYNC_PACKAGE "hdf5_vol_async") set(HDF5_VOL_ASYNC_PACKAGE_NAME "HDF5_VOL_ASYNC") set(HDF5_VOL_ASYNC_PACKAGE_DESCRIPTION "HDF5 Asynchronous I/O VOL connector") -set(HDF5_VOL_ASYNC_PACKAGE_URL "https://github.com/hpc-io/vol-async") -set(HDF5_VOL_ASYNC_PACKAGE_VENDOR "HPC IO") +set(HDF5_VOL_ASYNC_PACKAGE_URL "https://github.com/HDFGroup/vol-async") +set(HDF5_VOL_ASYNC_PACKAGE_VENDOR "HDF Group") #----------------------------------------------------------------------------- # Options diff --git a/README.md b/README.md index dd16868..8cf2b31 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![linux](https://github.com/hpc-io/vol-async/actions/workflows/linux.yml/badge.svg?branch=develop)](https://github.com/hpc-io/vol-async/actions/workflows/linux.yml) +[![linux](https://github.com/HDFGroup/vol-async/actions/workflows/linux.yml/badge.svg?branch=develop)](https://github.com/HDFGroup/vol-async/actions/workflows/linux.yml) # HDF5 Asynchronous I/O VOL Connector Asynchronous I/O is becoming increasingly popular with the large amount of data access required by scientific applications. They can take advantage of an asynchronous interface by scheduling I/O as early as possible and overlap computation or communication with I/O operations, which hides the cost associated with I/O and improves the overall performance. This work is part of the [ECP-ExaIO](https://www.exascaleproject.org/research-project/exaio) project. diff --git a/docs/source/gettingstarted.rst b/docs/source/gettingstarted.rst index 457d516..6c53fc6 100644 --- a/docs/source/gettingstarted.rst +++ b/docs/source/gettingstarted.rst @@ -32,7 +32,7 @@ Define the following configuration parameters, which may be used in the instruct .. code-block:: - git clone --recursive https://github.com/hpc-io/vol-async.git + git clone --recursive https://github.com/HDFGroup/vol-async.git 2. Download the HDF5 source code