From e0cbe0e052383d5db750c414647159cc71bba4db Mon Sep 17 00:00:00 2001 From: mloubout Date: Tue, 23 Jul 2024 11:21:20 -0400 Subject: [PATCH] CI: switch M1 runner to openmp --- .github/workflows/pytest-core-nompi.yml | 23 ++++++++++++++++------- tests/test_buffering.py | 4 +++- tests/test_gradient.py | 4 ++-- tests/test_roundoff.py | 3 +++ 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/.github/workflows/pytest-core-nompi.yml b/.github/workflows/pytest-core-nompi.yml index c9967fa351..bb701c3f69 100644 --- a/.github/workflows/pytest-core-nompi.yml +++ b/.github/workflows/pytest-core-nompi.yml @@ -22,6 +22,7 @@ jobs: env: DEVITO_ARCH: "${{ matrix.arch }}" DEVITO_LANGUAGE: ${{ matrix.language }} + DEVITO_PLATFORM: ${{ matrix.platform }} OMP_NUM_THREADS: 2 strategy: @@ -48,6 +49,7 @@ jobs: arch: "gcc-11" language: "C" sympy: "1.11" + platform: "cpu64" - name: pytest-ubuntu-py38-gcc12-omp python-version: '3.8' @@ -55,6 +57,7 @@ jobs: arch: "gcc-12" language: "openmp" sympy: "1.10" + platform: "cpu64" - name: pytest-ubuntu-py38-gcc7-omp python-version: '3.8' @@ -62,6 +65,7 @@ jobs: arch: "gcc-7" language: "openmp" sympy: "1.9" + platform: "cpu64" - name: pytest-ubuntu-py310-gcc10-noomp python-version: '3.10' @@ -69,6 +73,7 @@ jobs: arch: "gcc-10" language: "C" sympy: "1.11" + platform: "cpu64" - name: pytest-ubuntu-py312-gcc13-omp python-version: '3.12' @@ -76,6 +81,7 @@ jobs: arch: "gcc-13" language: "openmp" sympy: "1.13" + platform: "cpu64" - name: pytest-ubuntu-py39-gcc9-omp python-version: '3.9' @@ -83,13 +89,15 @@ jobs: arch: "custom" language: "openmp" sympy: "1.9" + platform: "cpu64" - name: pytest-osx-py312-clang-omp python-version: '3.12' os: macos-latest arch: "clang" - language: "C" + language: "openmp" sympy: "1.9" + platform: "m1" - name: pytest-docker-py39-gcc-omp python-version: '3.9' @@ -97,6 +105,7 @@ jobs: arch: "gcc" language: "openmp" sympy: "1.12" + platform: "cpu64" - name: pytest-docker-py39-icx-omp python-version: '3.9' @@ -104,6 +113,7 @@ jobs: arch: "icx" language: "openmp" sympy: "1.12" + platform: "intel64" - set: base test-set: 'not adjoint' @@ -147,9 +157,8 @@ jobs: - name: Set tests (reduced number for OSX) run : | if [ "${{ runner.os }}" == 'macOS' ]; then - echo "TESTS=tests/test_operator.py" >> $GITHUB_ENV - else - echo "TESTS=tests/" >> $GITHUB_ENV + brew install llvm libomp + echo "/opt/homebrew/bin:/opt/homebrew/opt/llvm/bin" >> $GITHUB_PATH fi id: set-tests @@ -162,9 +171,9 @@ jobs: - name: Install dependencies if: "!contains(matrix.name, 'docker')" run: | - pip install ${{ env.PIPFLAGS }} --upgrade pip - pip install ${{ env.PIPFLAGS }} sympy==${{matrix.sympy}} - pip install ${{ env.PIPFLAGS }} -e .[tests] + python3 -m pip install ${{ env.PIPFLAGS }} --upgrade pip + python3 -m pip install ${{ env.PIPFLAGS }} sympy==${{matrix.sympy}} + python3 -m pip install ${{ env.PIPFLAGS }} -e .[tests,extras] - name: Check configuration run: | diff --git a/tests/test_buffering.py b/tests/test_buffering.py index d4c6b54949..a7472ae22c 100644 --- a/tests/test_buffering.py +++ b/tests/test_buffering.py @@ -3,7 +3,8 @@ from conftest import skipif from devito import (Constant, Grid, TimeFunction, Operator, Eq, SubDimension, - SubDomain, ConditionalDimension) + SubDomain, ConditionalDimension, configuration, switchconfig) +from devito.arch.archinfo import AppleArm from devito.ir import FindSymbols, retrieve_iteration_tree from devito.exceptions import InvalidOperator @@ -672,6 +673,7 @@ def test_everything(): @pytest.mark.parametrize('subdomain', ['domain', 'interior']) +@switchconfig(safe_math=True, condition=isinstance(configuration['platform'], AppleArm)) def test_stencil_issue_1915(subdomain): nt = 5 grid = Grid(shape=(6, 6)) diff --git a/tests/test_gradient.py b/tests/test_gradient.py index 8e82aef2c3..67a691ab1d 100644 --- a/tests/test_gradient.py +++ b/tests/test_gradient.py @@ -14,7 +14,7 @@ class TestGradient: - @skipif(['chkpnt', 'cpu64-icc']) + @skipif(['chkpnt', 'cpu64-icc', 'cpu64-arm']) @switchconfig(safe_math=True) @pytest.mark.parametrize('dtype', [np.float32, np.float64]) @pytest.mark.parametrize('opt', [('advanced', {'openmp': True}), @@ -59,7 +59,7 @@ def test_gradient_checkpointing(self, dtype, opt, space_order, kernel, shape, sp assert np.allclose(gradient.data, gradient2.data, atol=0, rtol=0) - @skipif('cpu64-icc') + @skipif(['cpu64-icc', 'cpu64-arm']) @pytest.mark.parametrize('tn', [750.]) @pytest.mark.parametrize('spacing', [(10, 10)]) @pytest.mark.parametrize("dtype, tolerance", [(np.float32, 1e-4), diff --git a/tests/test_roundoff.py b/tests/test_roundoff.py index 8b90f871a0..e853019deb 100644 --- a/tests/test_roundoff.py +++ b/tests/test_roundoff.py @@ -1,6 +1,7 @@ import pytest import numpy as np +from conftest import skipif from devito import Grid, Constant, TimeFunction, Eq, Operator, switchconfig @@ -84,6 +85,7 @@ def test_lm_backward(self, dat, dtype): @pytest.mark.parametrize('dat', [0.5, 0.624, 1.0, 1.5, 2.0, 3.0, 3.6767, 4.0]) @pytest.mark.parametrize('dtype', [np.float32, np.float64]) @switchconfig(log_level='DEBUG', safe_math=True) + @skipif('cpu64-arm') def test_lm_fb(self, dat, dtype): """ Test logistic map with forward and backward terms that should cancel. @@ -123,6 +125,7 @@ def test_lm_fb(self, dat, dtype): @pytest.mark.parametrize('dat', [0.5, 0.624, 1.0, 1.5, 2.0, 3.0, 3.6767, 4.0]) @pytest.mark.parametrize('dtype', [np.float32, np.float64]) @switchconfig(log_level='DEBUG', safe_math=True) + @skipif('cpu64-arm') def test_lm_ds(self, dat, dtype): """ Test logistic map with 2nd derivative term that should cancel.