Skip to content

Commit

Permalink
Update GitHub workflows
Browse files Browse the repository at this point in the history
  • Loading branch information
vanderhe committed Dec 8, 2024
1 parent 465c6a3 commit 3301768
Showing 1 changed file with 64 additions and 67 deletions.
131 changes: 64 additions & 67 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,41 +4,43 @@ on: [push, pull_request]
env:
CI: "ON"
BUILD_DIR: _build
CMAKE_OPTIONS: >-
-DCMAKE_BUILD_TYPE=Debug
-DFYPP_FLAGS='-DTRAVIS'
INSTALL_DIR: _install

jobs:

gcc-build:

runs-on: ${{ matrix.os }}

defaults:
run:
shell: bash -l {0}

strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
mpi: [nompi, openmpi]
mpi: [nompi, mpich]
socket: [nosocket, socket]
config: [Debug]
version: [11]

steps:
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4

- uses: actions/setup-python@v4
- uses: actions/setup-python@v5
with:
python-version: '3.x'

- name: Set up miniforge
uses: conda-incubator/setup-miniconda@v3
with:
miniforge-version: latest
auto-activate-base: true
activate-environment: ""

- name: Install GCC (Linux)
if: ${{ contains(matrix.os, 'ubuntu') }}
run: |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install -y gcc-${{ matrix.version}} gfortran-${{ matrix.version }} g++-${{ matrix.version }}
sudo update-alternatives \
--install /usr/bin/gcc gcc /usr/bin/gcc-${{ matrix.version }} 100 \
--slave /usr/bin/gfortran gfortran /usr/bin/gfortran-${{ matrix.version }} \
--slave /usr/bin/g++ g++ /usr/bin/g++-${{ matrix.version }} \
--slave /usr/bin/gcov gcov /usr/bin/gcov-${{ matrix.version }}
run: mamba install c-compiler cxx-compiler fortran-compiler

- name: Enable MPI build
if: contains(matrix.mpi, 'openmpi') || contains(matrix.mpi, 'mpich')
Expand All @@ -56,73 +58,72 @@ jobs:
if: contains(matrix.socket, 'nosocket')
run: echo "WITH_SOCKETS=false" >> $GITHUB_ENV

- name: Set Compiler (Linux)
if: contains(matrix.os, 'ubuntu')
- name: Set Compiler
run: |
echo "FC=gfortran" >> $GITHUB_ENV
echo "CC=gcc" >> $GITHUB_ENV
echo "FC=${CONDA_PREFIX}/bin/gfortran" >> $GITHUB_ENV
echo "CC=${CONDA_PREFIX}/bin/gcc" >> $GITHUB_ENV
- name: Install HDF5
if: contains(matrix.os, 'ubuntu')
run: |
sudo apt-get update
sudo apt-get install hdf5-tools libhdf5-dev libhdf5-103
run: mamba install hdf5

- name: Install OpenMPI (Linux)
if: contains(matrix.os, 'ubuntu') && contains(matrix.mpi, 'openmpi')
- name: Set HDF5 search paths
run: |
sudo apt-get update
sudo apt-get install libopenmpi-dev
echo "CMAKE_OPTIONS=${CMAKE_OPTIONS}" >> $GITHUB_ENV
echo "CMAKE_PREFIX_PATH=${CONDA_PREFIX}/" >> $GITHUB_ENV
- name: Install cmake
run: pip3 install cmake ninja fypp numpy h5py
- name: Install OpenMPI
if: contains(matrix.mpi, 'openmpi')
run: mamba install openmpi openmpi-mpifort

- name: Install MPICH
if: contains(matrix.mpi, 'mpich')
run: mamba install mpich mpich-mpifort

- name: Install BLAS
run: mamba install openblas libopenblas

- name: Install requirements (conda)
run: mamba install cmake fypp numpy h5py

- name: Configure build
run: >-
cmake -B _build -G Ninja
-DCMAKE_INSTALL_PREFIX=${PWD}/_install
${CMAKE_OPTIONS}
-DWITH_MPI=${WITH_MPI}
-DWITH_SOCKETS=${WITH_SOCKETS}
run: |
cmake -B ${BUILD_DIR} -DWITH_MPI=${WITH_MPI} -DWITH_SOCKETS=${WITH_SOCKETS} \
-DCMAKE_INSTALL_PREFIX=${PWD}/${BUILD_DIR}/${INSTALL_DIR} \
-DCMAKE_BUILD_TYPE=${{ matrix.config }} .
- name: Build project
run: cmake --build ${BUILD_DIR}

- name: Run regression tests
run: |
pushd ${BUILD_DIR}
ctest -j 2 --output-on-failure
ctest -j2 --output-on-failure
popd
- name: Install project
run: |
cmake --install ${BUILD_DIR}
run: cmake --install ${BUILD_DIR}

intel-build:

runs-on: ${{ matrix.os }}

strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
mpi: [nompi]
socket: [nosocket, socket]
fc: [ifx]
cc: [icx]
config: [RelWithDebInfo]

env:
FC: ${{ matrix.fc }}
CC: ${{ matrix.cc }}
WITH_MPI: false
CMAKE_OPTIONS: >-
-DCMAKE_BUILD_TYPE=RelWithDebInfo
-DFYPP_FLAGS='-DTRAVIS'
FC: ifx
CC: icx

steps:
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: 3.x

Expand All @@ -138,27 +139,26 @@ jobs:
run: |
source /opt/intel/oneapi/setvars.sh
printenv >> ${GITHUB_ENV}
echo "FC=ifx" >> ${GITHUB_ENV}
echo "CC=icx" >> ${GITHUB_ENV}
echo "FC=${FC}" >> ${GITHUB_ENV}
echo "F9X=${FC}" >> ${GITHUB_ENV}
echo "CC=${CC}" >> ${GITHUB_ENV}
echo "CXX=${CC}" >> ${GITHUB_ENV}
- name: Install HDF5
if: contains(matrix.os, 'ubuntu')
run: |
wget https://support.hdfgroup.org/releases/hdf5/v1_14/v1_14_4/downloads/hdf5-1.14.4-3.tar.gz
tar xfz hdf5-1.14.4-3.tar.gz
cd hdf5-1.14.4-3/
CC=icx CXX=icx FC=ifx F9X=ifx ./configure --prefix=${PWD}/hdf5 --enable-fortran --enable-shared
make -j -l2
./configure --prefix=${PWD}/hdf5 --enable-fortran --enable-shared
make -j2
make install
export HDF5_ROOT=${PWD}/hdf5
cd ../../
printenv >> $GITHUB_ENV
- name: Disable MPI build
if: contains(matrix.mpi, 'nompi')
run: |
echo "WITH_MPI=false" >> $GITHUB_ENV
echo "FC=ifx" >> $GITHUB_ENV
run: echo "WITH_MPI=false" >> $GITHUB_ENV

- name: Enable socket build
if: contains(matrix.socket, 'socket')
Expand All @@ -174,12 +174,10 @@ jobs:
pip3 install cmake ninja fypp numpy h5py
- name: Configure build
run: >-
cmake -B _build -G Ninja
-DCMAKE_INSTALL_PREFIX=${PWD}/_install
${CMAKE_OPTIONS}
-DWITH_MPI=${WITH_MPI}
-DWITH_SOCKETS=${WITH_SOCKETS}
run: |
cmake -B ${BUILD_DIR} -DWITH_MPI=${WITH_MPI} -DWITH_SOCKETS=${WITH_SOCKETS} \
-DCMAKE_INSTALL_PREFIX=${PWD}/${BUILD_DIR}/${INSTALL_DIR} \
-DCMAKE_BUILD_TYPE=${{ matrix.config }} .
- name: Build project
run: cmake --build ${BUILD_DIR}
Expand All @@ -191,5 +189,4 @@ jobs:
popd
- name: Install project
run: |
cmake --install ${BUILD_DIR}
run: cmake --install ${BUILD_DIR}

0 comments on commit 3301768

Please sign in to comment.