Skip to content

Commit c76931a

Browse files
committed
CI: Intel icx/icpx via oneAPI
Add testing for Intel icx/icpx via the oneAPI images. This is Intel's next-gen compiler and new C++ support, e.g. C++17 bug fixes, first land here.
1 parent 98f1bbb commit c76931a

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

.github/workflows/ci.yml

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,74 @@ jobs:
388388
run: cmake --build build --target test_cmake_build
389389

390390

391+
# Testing on ICX/ICPX, Intel's next-gen C/C++ compiler using the oneAPI apt repo
392+
icx:
393+
runs-on: ubuntu-20.04
394+
strategy:
395+
fail-fast: false
396+
397+
name: "🐍 3 • ICPX latest • x64"
398+
399+
steps:
400+
- uses: actions/checkout@v1
401+
402+
- name: Add apt repo
403+
run: |
404+
sudo apt-get update
405+
sudo apt-get install -y wget build-essential pkg-config cmake ca-certificates gnupg
406+
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB
407+
sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB
408+
echo "deb https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
409+
- name: Add ICC & Python 3
410+
run: sudo apt-get update; sudo apt-get install -y intel-oneapi-compiler-dpcpp-cpp cmake python3-dev python3-numpy python3-pytest python3-pip
411+
412+
- name: Update pip
413+
shell: bash
414+
run: |
415+
set +e; source /opt/intel/oneapi/setvars.sh; set -e
416+
python3 -m pip install --upgrade pip
417+
- name: Install dependencies
418+
set +e; source /opt/intel/oneapi/setvars.sh; set -e
419+
python3 -m pip install -r tests/requirements.txt --prefer-binary
420+
421+
- name: Configure
422+
shell: bash
423+
run: |
424+
set +e; source /opt/intel/oneapi/setvars.sh; set -e
425+
cmake -S . -B build \
426+
-DPYBIND11_WERROR=ON \
427+
-DDOWNLOAD_CATCH=ON \
428+
-DDOWNLOAD_EIGEN=OFF \
429+
-DCMAKE_CXX_STANDARD=14 \
430+
-DCMAKE_CXX_COMPILER=$(which icpx) \
431+
-DCMAKE_CXX_COMPILER_ID="Clang" \
432+
-DCMAKE_CXX_COMPILER_VERSION=12.0 \
433+
-DCMAKE_CXX_STANDARD_COMPUTED_DEFAULT="14" \
434+
-DCMAKE_VERBOSE_MAKEFILE=ON
435+
-DPYTHON_EXECUTABLE=$(python3 -c "import sys; print(sys.executable)")
436+
- name: Build
437+
shell: bash
438+
run: |
439+
set +e; source /opt/intel/oneapi/setvars.sh; set -e
440+
cmake --build build -j 2
441+
- name: Python tests
442+
shell: bash
443+
run: |
444+
set +e; source /opt/intel/oneapi/setvars.sh; set -e
445+
sudo service apport stop
446+
cmake --build build --target check
447+
- name: C++ tests
448+
shell: bash
449+
run: |
450+
set +e; source /opt/intel/oneapi/setvars.sh; set -e
451+
cmake --build build --target cpptest
452+
- name: Interface test
453+
shell: bash
454+
run: |
455+
set +e; source /opt/intel/oneapi/setvars.sh; set -e
456+
cmake --build build --target test_cmake_build
457+
458+
391459
# Testing on CentOS (manylinux uses a centos base, and this is an easy way
392460
# to get GCC 4.8, which is the manylinux1 compiler).
393461
centos:

0 commit comments

Comments
 (0)