Skip to content

Adds -fopenmp flag to omp kernels + adds c++20 omp kernel #800

Adds -fopenmp flag to omp kernels + adds c++20 omp kernel

Adds -fopenmp flag to omp kernels + adds c++20 omp kernel #800

Workflow file for this run

name: CI
on:
workflow_dispatch:
pull_request:
branches:
- main
push:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- name: ubu24
os: ubuntu-24.04
micromamba_shell_init: bash
- name: ubu24-analyzers
os: ubuntu-24.04
coverage: true
extra_cmake_flags: -DCMAKE_BUILD_TYPE=Debug
micromamba_shell_init: bash
- name: osx13-x86
os: macos-13
micromamba_shell_init: bash
- name: osx14-arm
os: macos-14
micromamba_shell_init: bash
- name: Windows22
os: windows-2022
micromamba_shell_init: cmd.exe
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: install mamba
uses: mamba-org/setup-micromamba@main
with:
environment-file: environment-dev.yml
init-shell: >-
${{ matrix.micromamba_shell_init }}
environment-name: xeus-cpp
- name: Setup default Build Type on *nux
if: ${{ runner.os != 'windows' }}
run: |
os="${{ matrix.os }}"
if [[ "${os}" == "macos"* ]]; then
echo "ncpus=$(sysctl -n hw.ncpu)" >> $GITHUB_ENV
else
echo "ncpus=$(nproc --all)" >> $GITHUB_ENV
fi
- name: Setup default Build Type on Windows
if: ${{ runner.os == 'windows' }}
run: |
$env:ncpus=$([Environment]::ProcessorCount)
echo "ncpus=$env:ncpus" >> $env:GITHUB_ENV
- name: micromamba shell hook
if: ${{ runner.os == 'windows' }}
shell: powershell
run: |
micromamba shell hook -s cmd.exe -p C:\Users\runneradmin\micromamba-root
- name: install cxx compiler
if: ${{ runner.os != 'windows' }}
shell: bash -l {0}
run: |
$HOME/micromamba-bin/micromamba install cxx-compiler -c conda-forge -y
- name: cmake configure
if: ${{ runner.os == 'windows' }}
shell: cmd /C call {0}
run: |
call C:\Users\runneradmin\micromamba-root\condabin\micromamba.bat activate xeus-cpp
mkdir -p build
cd build
cmake .. -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DXEUS_BUILD_TESTS=ON -DDEPENDENCY_SEARCH_PREFIX="%CONDA_PREFIX%\Library" -DCMAKE_PREFIX_PATH="%CONDA_PREFIX%\Library" -DCMAKE_INSTALL_PREFIX="%CONDA_PREFIX%"
- name: cmake configure
if: ${{ runner.os != 'windows' }}
shell: bash -l {0}
run: |
mkdir -p build
cd build
export LD_LIBRARY_PATH="$CONDA_PREFIX/lib:$LD_LIBRARY_PATH"
echo $LD_LIBRARY_PATH
find "$CONDA_PREFIX/include"
cmake .. \
-DCMAKE_PREFIX_PATH=$CONDA_PREFIX \
-DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX \
-DXEUS_CPP_ENABLE_CODE_COVERAGE=${{ matrix.coverage }} \
-DCMAKE_COMPILE_WARNING_AS_ERROR=ON \
${{ matrix.extra_cmake_flags }}
- name: build & install
if: ${{ runner.os == 'windows' }}
shell: cmd /C call {0}
run: |
call C:\Users\runneradmin\micromamba-root\condabin\micromamba.bat activate xeus-cpp
cd build
set CL=/MP
nmake install
- name: build & install
if: ${{ runner.os != 'windows' }}
shell: bash -l {0}
run: |
cd build
make install -j ${{ env.ncpus }}
- name: Test xeus-cpp C++ Unix Systems
if: ${{ runner.os != 'windows' }}
shell: bash -l {0}
run: |
cd build/test
./test_xeus_cpp
timeout-minutes: 4
- name: Test xeus-cpp C++ Windows Systems
if: ${{ runner.os == 'windows' }}
shell: cmd /C call {0}
run: |
call C:\Users\runneradmin\micromamba-root\condabin\micromamba.bat activate xeus-cpp
cd build\test
.\test_xeus_cpp.exe
- name: Python tests Unix Systems
if: ${{ runner.os != 'windows' }}
shell: bash -l {0}
run: |
cd test
pytest -sv . --reruns 5
- name: Python tests Windows Systems
if: ${{ runner.os == 'windows' }}
shell: cmd /C call {0}
run: |
call C:\Users\runneradmin\micromamba-root\condabin\micromamba.bat activate xeus-cpp
cd test
pytest -sv test_xcpp_kernel.py
- name: Prepare code coverage report
if: ${{ success() && (matrix.coverage == true) }}
shell: bash -l {0}
run: |
# Create lcov report
# Find the current compiler version.
CC=$(realpath `which c++`)
vers="${CC##*-}"
sudo apt install lcov
# capture coverage info
lcov --directory build/ --capture --output-file coverage.info --gcov-tool $CONDA_PREFIX/bin/gcov
lcov --remove coverage.info '/usr/*' "${HOME}"'/.cache/*' ${{ github.workspace }}'/llvm-project/*' ${{ github.workspace }}'/test/*' --output-file coverage.info
# output coverage data for debugging (optional)
lcov --list coverage.info
- name: Upload to codecov.io
if: ${{ success() && (matrix.coverage == true) }}
uses: codecov/codecov-action@v4
with:
file: ./coverage.info
fail_ci_if_error: true
verbose: true
token: ${{ secrets.CODECOV_TOKEN }}
- name: Setup tmate session
if: ${{ failure() && runner.debug }}
uses: mxschmitt/action-tmate@v3
# When debugging increase to a suitable value!
timeout-minutes: 30
emscripten_wasm:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- name: ubu24
os: ubuntu-24.04
emsdk_ver: "3.1.45"
micromamba_shell_init: bash
- name: osx13-x86
os: macos-13
emsdk_ver: "3.1.45"
micromamba_shell_init: bash
- name: osx14-arm
os: macos-14
emsdk_ver: "3.1.45"
micromamba_shell_init: bash
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: install mamba
uses: mamba-org/setup-micromamba@main
with:
environment-file: environment-wasm-build.yml
init-shell: >-
${{ matrix.micromamba_shell_init }}
environment-name: xeus-cpp-wasm-build
- name: Setup default Build Type on *nux
if: ${{ runner.os != 'windows' }}
run: |
os="${{ matrix.os }}"
if [[ "${os}" == "macos"* ]]; then
echo "ncpus=$(sysctl -n hw.ncpu)" >> $GITHUB_ENV
else
echo "ncpus=$(nproc --all)" >> $GITHUB_ENV
fi
- name: Setup default Build Type on Windows
if: ${{ runner.os == 'windows' }}
run: |
$env:ncpus=$([Environment]::ProcessorCount)
echo "ncpus=$env:ncpus" >> $env:GITHUB_ENV
- name: Setup emsdk
shell: bash -l {0}
run: |
emsdk install ${{matrix.emsdk_ver}}
- name: Build xeus-cpp
shell: bash -l {0}
run: |
emsdk activate ${{matrix.emsdk_ver}}
source $CONDA_EMSDK_DIR/emsdk_env.sh
micromamba create -f environment-wasm-host.yml --platform=emscripten-wasm32
mkdir build
pushd build
export EMPACK_PREFIX=$MAMBA_ROOT_PREFIX/envs/xeus-cpp-wasm-build
export PREFIX=$MAMBA_ROOT_PREFIX/envs/xeus-cpp-wasm-host
echo "PREFIX=$PREFIX" >> $GITHUB_ENV
export CMAKE_PREFIX_PATH=$PREFIX
export CMAKE_SYSTEM_PREFIX_PATH=$PREFIX
emcmake cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=$PREFIX \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
-DXEUS_CPP_EMSCRIPTEN_WASM_BUILD=ON \
-DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ON \
..
EMCC_CFLAGS='-sERROR_ON_UNDEFINED_SYMBOLS=0' emmake make -j ${{ env.ncpus }} install
- name: Jupyter Lite integration
shell: bash -l {0}
run: |
micromamba create -n xeus-lite-host jupyterlite-core
micromamba activate xeus-lite-host
python -m pip install jupyterlite-xeus
jupyter lite build --XeusAddon.prefix=${{ env.PREFIX }}
- name: Setup tmate session
if: ${{ failure() && runner.debug }}
uses: mxschmitt/action-tmate@v3
# When debugging increase to a suitable value!
timeout-minutes: 30