Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
145 changes: 70 additions & 75 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 OpenMPI
if: contains(matrix.mpi, 'openmpi')
run: mamba install openmpi openmpi-mpifort

- name: Install cmake
run: pip3 install cmake ninja fypp numpy h5py
- 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}
run: cmake --build ${BUILD_DIR} -j2

- 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,24 @@ 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 "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
make install
export HDF5_ROOT=${PWD}/hdf5
cd ../../
printenv >> $GITHUB_ENV
cmake -DCMAKE_INSTALL_PREFIX=${PWD}/${BUILD_DIR}/${INSTALL_DIR} \
-DHDF5_BUILD_FORTRAN=1 -DBUILD_SHARED_LIBS=1 -B ${BUILD_DIR}
cmake --build ${BUILD_DIR} -j2
cmake --install ${BUILD_DIR}
echo "HDF5_ROOT=${PWD}/${BUILD_DIR}/${INSTALL_DIR}" >> ${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 @@ -168,21 +166,19 @@ jobs:
if: contains(matrix.socket, 'nosocket')
run: echo "WITH_SOCKETS=false" >> $GITHUB_ENV

- name: Install cmake
- name: Install requirements (pip)
run: |
pip3 install --upgrade pip
pip3 install cmake ninja fypp numpy h5py
pip3 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}
run: cmake --build ${BUILD_DIR} -j2

- name: Run regression tests
run: |
Expand All @@ -191,5 +187,4 @@ jobs:
popd

- name: Install project
run: |
cmake --install ${BUILD_DIR}
run: cmake --install ${BUILD_DIR}
Loading