DEBUG: run on fork #2
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Linux SIMD tests | |
# This file is meant for testing different SIMD-related build options and | |
# optimization levels. See `meson_options.txt` for the available build options. | |
# | |
# Jobs and their purposes: | |
# | |
# - baseline_only: | |
# Focuses on completing as quickly as possible and acts as a filter for other, more resource-intensive jobs. | |
# Utilizes only the default baseline targets (e.g., SSE3 on X86_64) without enabling any runtime dispatched features. | |
# | |
# - old_gcc: | |
# Tests the oldest supported GCC version with default CPU/baseline/dispatch settings. | |
# | |
# - without_optimizations: | |
# Completely disables all SIMD optimizations and other compiler optimizations such as loop unrolling. | |
# | |
# - native: | |
# Tests against the host CPU features set as the baseline without enabling any runtime dispatched features. | |
# Intended to assess the entire NumPy codebase against host flags, even for code sections lacking handwritten SIMD intrinsics. | |
# | |
# - without_avx512/avx2/fma3: | |
# Uses runtime SIMD dispatching but disables AVX2, FMA3, and AVX512. | |
# Intended to evaluate 128-bit SIMD extensions without FMA support. | |
# | |
# - without_avx512: | |
# Uses runtime SIMD dispatching but disables AVX512. | |
# Intended to evaluate 128-bit/256-bit SIMD extensions. | |
# | |
# - intel_sde: | |
# Executes only the SIMD tests for various AVX512 SIMD extensions under the Intel Software Development Emulator (SDE). | |
# | |
on: | |
pull_request: | |
branches: | |
- main | |
- maintenance/** | |
push: | |
branches: | |
- bump-oldest-gcc | |
defaults: | |
run: | |
shell: 'script -q -e -c "bash --noprofile --norc -eo pipefail {0}"' | |
env: | |
TERM: xterm-256color | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
permissions: | |
contents: read # to fetch code (actions/checkout) | |
jobs: | |
baseline_only: | |
# To enable this workflow on a fork, comment out: | |
runs-on: ubuntu-latest | |
env: | |
MESON_ARGS: "-Dallow-noblas=true -Dcpu-dispatch=none" | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: recursive | |
fetch-tags: true | |
persist-credentials: false | |
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 | |
with: | |
python-version: '3.11' | |
- uses: ./.github/meson_actions | |
name: Build/Test | |
old_gcc: | |
needs: [baseline_only] | |
runs-on: ubuntu-latest | |
env: | |
MESON_ARGS: "-Dallow-noblas=true" | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: recursive | |
fetch-tags: true | |
persist-credentials: false | |
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 | |
with: | |
python-version: '3.11' | |
- name: Install GCC9/10 | |
run: | | |
echo "deb http://archive.ubuntu.com/ubuntu focal main universe" | sudo tee /etc/apt/sources.list.d/focal.list | |
sudo apt update | |
sudo apt install -y g++-9 g++-10 | |
- name: Enable gcc-9 | |
run: | | |
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 1 | |
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 1 | |
- uses: ./.github/meson_actions | |
name: Build/Test against gcc-9 | |
- name: Enable gcc-10 | |
run: | | |
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 2 | |
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 2 | |
- uses: ./.github/meson_actions | |
name: Build/Test against gcc-10 | |
specialize: | |
needs: [baseline_only] | |
runs-on: ubuntu-latest | |
continue-on-error: true | |
strategy: | |
fail-fast: false | |
matrix: | |
BUILD_PROP: | |
- [ | |
"without optimizations", | |
"-Dallow-noblas=true -Ddisable-optimization=true", | |
"3.12" | |
] | |
- [ | |
"native", | |
"-Dallow-noblas=true -Dcpu-baseline=native -Dcpu-dispatch=none", | |
"3.11" | |
] | |
- [ | |
"without avx512", | |
"-Dallow-noblas=true -Dcpu-dispatch=SSSE3,SSE41,POPCNT,SSE42,AVX,F16C,AVX2,FMA3", | |
"3.11" | |
] | |
- [ | |
"without avx512/avx2/fma3", | |
"-Dallow-noblas=true -Dcpu-dispatch=SSSE3,SSE41,POPCNT,SSE42,AVX,F16C", | |
"3.11" | |
] | |
env: | |
MESON_ARGS: ${{ matrix.BUILD_PROP[1] }} | |
name: "${{ matrix.BUILD_PROP[0] }}" | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: recursive | |
fetch-tags: true | |
persist-credentials: false | |
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 | |
with: | |
python-version: "${{ matrix.BUILD_PROP[2] }}" | |
- uses: ./.github/meson_actions | |
name: Build/Test | |
intel_sde_avx512: | |
needs: [baseline_only] | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: recursive | |
fetch-tags: true | |
persist-credentials: false | |
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 | |
with: | |
python-version: '3.11' | |
- name: Install Intel SDE | |
run: | | |
curl -o /tmp/sde.tar.xz https://downloadmirror.intel.com/788820/sde-external-9.27.0-2023-09-13-lin.tar.xz | |
mkdir /tmp/sde && tar -xvf /tmp/sde.tar.xz -C /tmp/sde/ | |
sudo mv /tmp/sde/* /opt/sde && sudo ln -s /opt/sde/sde64 /usr/bin/sde | |
- name: Install dependencies | |
run: | | |
python -m pip install -r requirements/build_requirements.txt | |
python -m pip install pytest pytest-xdist hypothesis typing_extensions | |
- name: Build | |
run: CC=gcc-13 CXX=g++-13 spin build -- -Dallow-noblas=true -Dcpu-baseline=avx512_skx -Dtest-simd='BASELINE,AVX512_KNL,AVX512_KNM,AVX512_SKX,AVX512_CLX,AVX512_CNL,AVX512_ICL,AVX512_SPR' | |
- name: Meson Log | |
if: always() | |
run: cat build/meson-logs/meson-log.txt | |
- name: SIMD tests (SKX) | |
run: | | |
export NUMPY_SITE=$(realpath build-install/usr/lib/python*/site-packages/) | |
export PYTHONPATH="$PYTHONPATH:$NUMPY_SITE" | |
cd build-install && | |
sde -skx -- python -c "import numpy; numpy.show_config()" && | |
sde -skx -- python -m pytest $NUMPY_SITE/numpy/_core/tests/test_simd* | |
- name: linalg/ufunc/umath tests (TGL) | |
run: | | |
export NUMPY_SITE=$(realpath build-install/usr/lib/python*/site-packages/) | |
export PYTHONPATH="$PYTHONPATH:$NUMPY_SITE" | |
cd build-install && | |
sde -tgl -- python -c "import numpy; numpy.show_config()" && | |
sde -tgl -- python -m pytest $NUMPY_SITE/numpy/_core/tests/test_umath* \ | |
$NUMPY_SITE/numpy/_core/tests/test_ufunc.py \ | |
$NUMPY_SITE/numpy/_core/tests/test_multiarray.py \ | |
$NUMPY_SITE/numpy/linalg/tests/test_* | |
intel_sde_spr: | |
needs: [baseline_only] | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: recursive | |
fetch-tags: true | |
persist-credentials: false | |
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 | |
with: | |
python-version: '3.11' | |
- name: Install Intel SDE | |
run: | | |
curl -o /tmp/sde.tar.xz https://downloadmirror.intel.com/788820/sde-external-9.27.0-2023-09-13-lin.tar.xz | |
mkdir /tmp/sde && tar -xvf /tmp/sde.tar.xz -C /tmp/sde/ | |
sudo mv /tmp/sde/* /opt/sde && sudo ln -s /opt/sde/sde64 /usr/bin/sde | |
- name: Install dependencies | |
run: | | |
python -m pip install -r requirements/build_requirements.txt | |
python -m pip install pytest pytest-xdist hypothesis typing_extensions | |
- name: Build | |
run: CC=gcc-13 CXX=g++-13 spin build -- -Dallow-noblas=true -Dcpu-baseline=avx512_spr | |
- name: Meson Log | |
if: always() | |
run: cat build/meson-logs/meson-log.txt | |
- name: SIMD tests (SPR) | |
run: | | |
export NUMPY_SITE=$(realpath build-install/usr/lib/python*/site-packages/) | |
export PYTHONPATH="$PYTHONPATH:$NUMPY_SITE" | |
cd build-install && | |
sde -spr -- python -c "import numpy; numpy.show_config()" && | |
sde -spr -- python -m pytest $NUMPY_SITE/numpy/_core/tests/test_simd* | |
- name: linalg/ufunc/umath tests on Intel SPR | |
run: | | |
export NUMPY_SITE=$(realpath build-install/usr/lib/python*/site-packages/) | |
export PYTHONPATH="$PYTHONPATH:$NUMPY_SITE" | |
cd build-install && | |
sde -spr -- python -c "import numpy; numpy.show_config()" && | |
sde -spr -- python -m pytest $NUMPY_SITE/numpy/_core/tests/test_umath* \ | |
$NUMPY_SITE/numpy/_core/tests/test_ufunc.py \ | |
$NUMPY_SITE/numpy/_core/tests/test_multiarray.py \ | |
$NUMPY_SITE/numpy/linalg/tests/test_* |