Skip to content

cpp to MPI type mapping improvements #6453

cpp to MPI type mapping improvements

cpp to MPI type mapping improvements #6453

Workflow file for this run

name: oneAPI compilers
on:
pull_request:
branches:
- main
push:
branches:
- "main"
tags:
- "v*"
merge_group:
branches:
- main
workflow_dispatch:
jobs:
fenicsx-refs:
uses: ./.github/workflows/fenicsx-refs.yml
build:
runs-on: ubuntu-latest
needs: fenicsx-refs
container: ubuntu:24.04
env:
CC: icx
CXX: icpx
MPICH_CC: icx
MPICH_CXX: icpx
I_MPI_OFI_LIBRARY_INTERNAL: 0
OMP_NUM_THREADS: 1
OPENBLAS_NUM_THREADS: 1
name: oneAPI build and test
defaults:
run:
shell: bash -el {0}
steps:
- name: Install compiler dependencies
run: |
apt-get -y update
apt-get -y install binutils libstdc++-14-dev
- uses: actions/checkout@v4
- uses: conda-incubator/setup-miniconda@v3
with:
activate-environment: oneapi-test-env
environment-file: python/conda-oneapi-test-env.yml
auto-activate-base: false
- run: |
conda info
conda list
- name: Install Basix
run: pip install --no-build-isolation git+https://github.com/FEniCS/basix.git@${{ needs.fenicsx-refs.outputs.basix_ref }}
- name: Clone FFCx
uses: actions/checkout@v4
with:
path: ./ffcx
repository: FEniCS/ffcx
ref: ${{ needs.fenicsx-refs.outputs.ffcx_ref }}
- name: Install UFCx C interface
run: |
cmake -G Ninja -B ufcx-build-dir -S ffcx/cmake/
cmake --build ufcx-build-dir
cmake --install ufcx-build-dir
- name: Configure DOLFINx C++
run: |
cmake -G Ninja -DCMAKE_BUILD_TYPE=Developer -DDOLFINX_ENABLE_SCOTCH=on -DDOLFINX_ENABLE_KAHIP=on -DDOLFINX_UFCX_PYTHON=off -B build -S cpp/
- name: Build and install DOLFINx C++ library
run: |
cmake --build build
cmake --install build
- name: Install UFL and FFCx modules
run: |
pip install --no-build-isolation git+https://github.com/FEniCS/ufl.git@${{ needs.fenicsx-refs.outputs.ufl_ref }}
pip install --no-build-isolation ffcx/
- name: Build and run DOLFINx C++ unit tests (serial and MPI)
run: |
cmake -G Ninja -DCMAKE_BUILD_TYPE=Developer -B build/test/ -S cpp/test/
cmake --build build/test
cd build/test
ctest --output-on-failure -R unittests
mpiexec -n 2 ctest --output-on-failure -R unittests
- name: Build and run DOLFINx C++ regression tests (serial and MPI (np=2))
run: |
cmake -G Ninja -DCMAKE_BUILD_TYPE=Developer -B build/demo/ -S cpp/demo/
cmake --build build/demo
cd build/demo
ctest -R demo -R serial
ctest -R demo -R mpi_2
- name: Build DOLFINx Python interface
run: pip -v install --check-build-dependencies --no-build-isolation --config-settings=cmake.build-type="Developer" python/
- name: Run DOLFINx demos (Python, serial)
run: python -m pytest -v -n=2 -m serial --durations=10 python/demo/test.py
- name: Run DOLFINx demos (Python, MPI (np=2))
run: pytest -m mpi --num-proc=2 python/demo/test.py
- name: Run DOLFINx Python unit tests (serial)
run: python -m pytest -m "not adios2" -n=auto --durations=50 python/test/unit
- name: Run DOLFINx Python unit tests (MPI, np=2)
run: mpiexec -n 2 python -m pytest -m "not adios2" python/test/unit