Skip to content

Commit

Permalink
Checks HDF5 build features (cmake) (#39)
Browse files Browse the repository at this point in the history
* Checks HDF5 build features (CMake)
    * require HDF5 version 1.14 and greater
* removed invalid hdf5 build option in actions
* Change to always test with the latest release of HDF5
  • Loading branch information
brtnfld authored May 31, 2024
1 parent 8f6c471 commit cde8445
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 28 deletions.
44 changes: 20 additions & 24 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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: |
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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

Expand All @@ -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"
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down
23 changes: 21 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
2 changes: 1 addition & 1 deletion docs/source/gettingstarted.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down

0 comments on commit cde8445

Please sign in to comment.