summaryrefslogtreecommitdiffstats
path: root/.github
diff options
context:
space:
mode:
authorAllen Byrne <50328838+byrnHDF@users.noreply.github.com>2023-10-18 19:44:42 (GMT)
committerGitHub <noreply@github.com>2023-10-18 19:44:42 (GMT)
commit65e1bd8ce90d286bd4ffc1575414d775ae86a319 (patch)
tree5aeb6bc35ab0b6e0d8fe29b56bd9141c4f69bca3 /.github
parentfce7ce18697ecead37e75d3d05483ef995cf24dd (diff)
downloadhdf5-65e1bd8ce90d286bd4ffc1575414d775ae86a319.zip
hdf5-65e1bd8ce90d286bd4ffc1575414d775ae86a319.tar.gz
hdf5-65e1bd8ce90d286bd4ffc1575414d775ae86a319.tar.bz2
Add NVidia compiler support and CI (#3686)
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/autotools.yml6
-rw-r--r--.github/workflows/cmake.yml6
-rw-r--r--.github/workflows/intel-auto.yml12
-rw-r--r--.github/workflows/intel-cmake.yml8
-rw-r--r--.github/workflows/linux-nvhpc-auto.yml58
-rw-r--r--.github/workflows/linux-nvhpc.yml56
-rw-r--r--.github/workflows/nvhpc-auto.yml87
-rw-r--r--.github/workflows/nvhpc-cmake.yml76
8 files changed, 186 insertions, 123 deletions
diff --git a/.github/workflows/autotools.yml b/.github/workflows/autotools.yml
index 89afa40..d0cf557 100644
--- a/.github/workflows/autotools.yml
+++ b/.github/workflows/autotools.yml
@@ -52,3 +52,9 @@ jobs:
uses: ./.github/workflows/intel-auto.yml
with:
build_mode: "production"
+
+ call-release-auto-nvhpc:
+ name: "Autotools nvhpc Workflows"
+ uses: ./.github/workflows/nvhpc-auto.yml
+ with:
+ build_mode: "production"
diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml
index 75180c0..84fe010 100644
--- a/.github/workflows/cmake.yml
+++ b/.github/workflows/cmake.yml
@@ -44,3 +44,9 @@ jobs:
uses: ./.github/workflows/intel-cmake.yml
with:
build_mode: "Release"
+
+ call-release-cmake-nvhpc:
+ name: "CMake nvhpc Workflows"
+ uses: ./.github/workflows/nvhpc-cmake.yml
+ with:
+ build_mode: "Release"
diff --git a/.github/workflows/intel-auto.yml b/.github/workflows/intel-auto.yml
index f5249bd..d63262f 100644
--- a/.github/workflows/intel-auto.yml
+++ b/.github/workflows/intel-auto.yml
@@ -13,14 +13,16 @@ permissions:
jobs:
Intel_build_and_test:
- name: "Intel ${{ inputs.build_mode }} -Werror (build only)"
+ name: "Intel ${{ inputs.build_mode }}"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
+
- name: Install Dependencies
- run: |
+ run: |
sudo apt-get update
sudo apt-get install autoconf automake libtool libtool-bin libaec-dev
+
- name: Add oneAPI to apt
shell: bash
run: |
@@ -39,9 +41,9 @@ jobs:
sudo apt install -y intel-oneapi-mpi-devel
sudo apt-get install doxygen graphviz
sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
- echo "CC=icx" >> $GITHUB_ENV
- echo "CXX=icpx" >> $GITHUB_ENV
- echo "FC=ifx" >> $GITHUB_ENV
+ echo "CC=icx" >> $GITHUB_ENV
+ echo "CXX=icpx" >> $GITHUB_ENV
+ echo "FC=ifx" >> $GITHUB_ENV
- name: Install oneAPI MKL library
shell: bash
diff --git a/.github/workflows/intel-cmake.yml b/.github/workflows/intel-cmake.yml
index 4bdda03..9972376 100644
--- a/.github/workflows/intel-cmake.yml
+++ b/.github/workflows/intel-cmake.yml
@@ -14,7 +14,7 @@ permissions:
jobs:
Intel_build_and_test:
- name: "Intel ${{ inputs.build_mode }} -Werror (build only)"
+ name: "Intel ${{ inputs.build_mode }}"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
@@ -30,9 +30,9 @@ jobs:
- name: Install Linux Dependencies
run: |
- sudo apt update
- sudo apt-get install ninja-build doxygen graphviz
- sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
+ sudo apt update
+ sudo apt-get install ninja-build doxygen graphviz
+ sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
- name: install oneAPI dpcpp and fortran compiler
shell: bash
diff --git a/.github/workflows/linux-nvhpc-auto.yml b/.github/workflows/linux-nvhpc-auto.yml
deleted file mode 100644
index 1281e97..0000000
--- a/.github/workflows/linux-nvhpc-auto.yml
+++ /dev/null
@@ -1,58 +0,0 @@
-name: linux autotools nvhpc
-
-on:
- workflow_dispatch:
- push:
- pull_request:
- branches: [ develop ]
- paths-ignore:
- - '.github/CODEOWNERS'
- - '.github/FUNDING.yml'
- - 'doc/**'
- - 'release_docs/**'
- - 'ACKNOWLEDGEMENTS'
- - 'COPYING**'
- - '**.md'
-
-# Using concurrency to cancel any in-progress job or run
-concurrency:
- group: ${{ github.workflow }}-${{ github.sha || github.event.pull_request.number }}
- cancel-in-progress: true
-
-permissions:
- contents: read
-
-jobs:
- build:
- runs-on: ubuntu-latest
- steps:
- - name: Install System dependencies
- run: |
- sudo apt update
- sudo apt install -y libaec-dev zlib1g-dev automake autoconf libcurl4-openssl-dev libjpeg-dev wget curl bzip2 m4 flex bison cmake libzip-dev doxygen openssl libtool libtool-bin build-essential
- - name: Install NVHPC
- run: |
- curl https://developer.download.nvidia.com/hpc-sdk/ubuntu/DEB-GPG-KEY-NVIDIA-HPC-SDK | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg
- echo 'deb [signed-by=/usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg] https://developer.download.nvidia.com/hpc-sdk/ubuntu/amd64 /' | sudo tee /etc/apt/sources.list.d/nvhpc.list
- sudo apt-get update -y
- sudo apt-get install -y nvhpc-23-7
- - name: Get Sources
- uses: actions/checkout@v4
- - name: Test HDF5
- env:
- NPROCS: 2
- run: |
- export NVHPCSDK=/opt/nvidia/hpc_sdk
- export OMPI_CXX=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvc++
- export OMPI_CC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvc
- export OMPI_FC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvfortran
- export LD_LIBRARY_PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/lib
- export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin:$PATH
- export DESTDIR=/tmp
- ./autogen.sh
- ./configure CC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin/mpicc FC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin/mpifort FCFLAGS="-fPIC -fortranlibs" --enable-fortran --enable-shared --enable-parallel
- cat config.log
- make -j
- make check -j
- make install
- make uninstall
diff --git a/.github/workflows/linux-nvhpc.yml b/.github/workflows/linux-nvhpc.yml
deleted file mode 100644
index 06fd40a..0000000
--- a/.github/workflows/linux-nvhpc.yml
+++ /dev/null
@@ -1,56 +0,0 @@
-name: linux CMake nvhpc
-
-on:
- workflow_dispatch:
- push:
- pull_request:
- branches: [ develop ]
- paths-ignore:
- - '.github/CODEOWNERS'
- - '.github/FUNDING.yml'
- - 'doc/**'
- - 'release_docs/**'
- - 'ACKNOWLEDGEMENTS'
- - 'COPYING**'
- - '**.md'
-
-# Using concurrency to cancel any in-progress job or run
-concurrency:
- group: ${{ github.workflow }}-${{ github.sha || github.event.pull_request.number }}
- cancel-in-progress: true
-
-permissions:
- contents: read
-
-jobs:
- build:
- runs-on: ubuntu-latest
- steps:
- - name: Install System dependencies
- run: |
- sudo apt update
- sudo apt install -y libaec-dev zlib1g-dev automake autoconf libcurl4-openssl-dev libjpeg-dev wget curl bzip2 m4 flex bison cmake libzip-dev doxygen openssl libtool libtool-bin build-essential
- - name: Install NVHPC
- run: |
- curl https://developer.download.nvidia.com/hpc-sdk/ubuntu/DEB-GPG-KEY-NVIDIA-HPC-SDK | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg
- echo 'deb [signed-by=/usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg] https://developer.download.nvidia.com/hpc-sdk/ubuntu/amd64 /' | sudo tee /etc/apt/sources.list.d/nvhpc.list
- sudo apt-get update -y
- sudo apt-get install -y nvhpc-23-7
- - name: Get Sources
- uses: actions/checkout@v4
- - name: Test HDF5
- env:
- FC: nvfortran
- CC: nvc
- FCFLAGS: -fPIC
- run: |
- export NVHPCSDK=/opt/nvidia/hpc_sdk
- export OMPI_CXX=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvc++
- export OMPI_CC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvc
- export OMPI_FC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvfortran
- export LD_LIBRARY_PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/cuda/12.2/lib64:/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/lib
- export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin:$PATH
- cmake -B build -DHDF5_ENABLE_SZIP_SUPPORT:BOOL=OFF -DHDF5_ENABLE_PARALLEL:BOOL=ON -DHDF5_BUILD_FORTRAN:BOOL=ON
- cat build/CMakeCache.txt
- cmake --build build
- ctest --test-dir build --output-on-failure
diff --git a/.github/workflows/nvhpc-auto.yml b/.github/workflows/nvhpc-auto.yml
new file mode 100644
index 0000000..3e3a323
--- /dev/null
+++ b/.github/workflows/nvhpc-auto.yml
@@ -0,0 +1,87 @@
+name: hdf5 dev autotools nvhpc
+
+on:
+ workflow_call:
+ inputs:
+ build_mode:
+ description: "release vs. debug build"
+ required: true
+ type: string
+
+permissions:
+ contents: read
+
+jobs:
+ nvhpc_build_and_test:
+ name: "nvhpc ${{ inputs.build_mode }}"
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Install Dependencies
+ run: |
+ sudo apt-get update
+ sudo apt-get install autoconf automake libtool libtool-bin libaec-dev
+ sudo apt-get install doxygen graphviz
+ sudo apt install -y zlib1g-dev libcurl4-openssl-dev libjpeg-dev wget curl bzip2 m4 flex bison cmake libzip-dev openssl build-essential
+
+ - name: Install NVHPC
+ shell: bash
+ run: |
+ curl https://developer.download.nvidia.com/hpc-sdk/ubuntu/DEB-GPG-KEY-NVIDIA-HPC-SDK | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg
+ echo 'deb [signed-by=/usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg] https://developer.download.nvidia.com/hpc-sdk/ubuntu/amd64 /' | sudo tee /etc/apt/sources.list.d/nvhpc.list
+ sudo apt-get update -y
+ sudo apt-get install -y nvhpc-23-7
+ echo "CC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin/mpicc" >> $GITHUB_ENV
+ echo "FC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin/mpifort" >> $GITHUB_ENV
+ echo "NVHPCSDK=/opt/nvidia/hpc_sdk" >> $GITHUB_ENV
+ echo "OMPI_CXX=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvc++" >> $GITHUB_ENV
+ echo "OMPI_CC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvc" >> $GITHUB_ENV
+ echo "OMPI_FC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvfortran" >> $GITHUB_ENV
+ echo "LD_LIBRARY_PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/lib" >> $GITHUB_ENV
+ echo "DESTDIR=/tmp" >> $GITHUB_ENV
+
+ - name: Autotools Configure
+ shell: bash
+ run: |
+ export RUNPARALLEL="mpiexec -np 2"
+ export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin:$PATH
+ sh ./autogen.sh
+ mkdir "${{ runner.workspace }}/build"
+ cd "${{ runner.workspace }}/build"
+ $GITHUB_WORKSPACE/configure \
+ FCFLAGS="-fPIC -fortranlibs" \
+ --enable-build-mode=${{ inputs.build_mode }} \
+ --enable-fortran \
+ --enable-shared \
+ --enable-parallel
+ #cat config.log
+
+ # BUILD
+ - name: Autotools Build
+ shell: bash
+ run: |
+ export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin:$PATH
+ make -j3
+ working-directory: ${{ runner.workspace }}/build
+
+ # RUN TESTS
+ # NORMAL
+ - name: Autotools Run Tests
+ run: |
+ export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin:$PATH
+ make check -j
+ working-directory: ${{ runner.workspace }}/build
+
+ # INSTALL (note that this runs even when we don't run the tests)
+ - name: Autotools Install
+ run: |
+ export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin:$PATH
+ make install
+ working-directory: ${{ runner.workspace }}/build
+
+# - name: Autotools Verify Install
+# run: |
+# export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin:$PATH
+# make check-install
+# working-directory: ${{ runner.workspace }}/build
diff --git a/.github/workflows/nvhpc-cmake.yml b/.github/workflows/nvhpc-cmake.yml
new file mode 100644
index 0000000..489c0bb
--- /dev/null
+++ b/.github/workflows/nvhpc-cmake.yml
@@ -0,0 +1,76 @@
+name: hdf5 dev CMake nvhpc
+
+on:
+ workflow_call:
+ inputs:
+ build_mode:
+ description: "release vs. debug build"
+ required: true
+ type: string
+
+permissions:
+ contents: read
+
+jobs:
+ nvhpc_build_and_test:
+ name: "nvhpc ${{ inputs.build_mode }}"
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Install Linux dependencies
+ shell: bash
+ run: |
+ sudo apt update
+ sudo apt-get install ninja-build doxygen graphviz
+ sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
+ sudo apt install -y libaec-dev zlib1g-dev wget curl bzip2 flex bison cmake libzip-dev openssl build-essential
+
+ - name: Install NVHPC
+ shell: bash
+ run: |
+ curl https://developer.download.nvidia.com/hpc-sdk/ubuntu/DEB-GPG-KEY-NVIDIA-HPC-SDK | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg
+ echo 'deb [signed-by=/usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg] https://developer.download.nvidia.com/hpc-sdk/ubuntu/amd64 /' | sudo tee /etc/apt/sources.list.d/nvhpc.list
+ sudo apt-get update -y
+ sudo apt-get install -y nvhpc-23-7
+ echo "CC=nvc" >> $GITHUB_ENV
+ echo "FC=nvfortran" >> $GITHUB_ENV
+ echo "NVHPCSDK=/opt/nvidia/hpc_sdk" >> $GITHUB_ENV
+ echo "OMPI_CXX=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvc++" >> $GITHUB_ENV
+ echo "OMPI_CC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvc" >> $GITHUB_ENV
+ echo "OMPI_FC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvfortran" >> $GITHUB_ENV
+ echo "LD_LIBRARY_PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/cuda/12.2/lib64:/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/lib" >> $GITHUB_ENV
+ echo "DESTDIR=/tmp" >> $GITHUB_ENV
+
+ - name: CMake Configure with nvc
+ shell: bash
+ run: |
+ export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin:$PATH
+ mkdir "${{ runner.workspace }}/build"
+ cd "${{ runner.workspace }}/build"
+ cmake -C $GITHUB_WORKSPACE/config/cmake/cacheinit.cmake -G Ninja \
+ -DCMAKE_BUILD_TYPE=${{ inputs.build_mode }} \
+ -DHDF5_ENABLE_SZIP_SUPPORT:BOOL=OFF \
+ -DHDF5_ENABLE_PARALLEL:BOOL=ON \
+ -DHDF5_BUILD_CPP_LIB:BOOL=OFF \
+ -DLIBAEC_USE_LOCALCONTENT=OFF \
+ -DZLIB_USE_LOCALCONTENT=OFF \
+ -DHDF5_BUILD_FORTRAN:BOOL=ON \
+ -DHDF5_ENABLE_ASSERTS:BOOL=ON \
+ -DMPIEXEC_MAX_NUMPROCS:STRING="2" \
+ $GITHUB_WORKSPACE
+ cat src/libhdf5.settings
+
+ # BUILD
+ - name: CMake Build
+ shell: bash
+ run: |
+ cmake --build . --parallel 3 --config ${{ inputs.build_mode }}
+ working-directory: ${{ runner.workspace }}/build
+
+ # RUN TESTS
+# - name: CMake Run Tests
+# shell: bash
+# run: |
+# ctest . --parallel 2 -C ${{ inputs.build_mode }} -V
+# working-directory: ${{ runner.workspace }}/build