Parallel pytato PyOpenCL array context #2075
Workflow file for this run
This file contains hidden or 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: CI | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| schedule: | |
| - cron: '17 3 * * 0' | |
| concurrency: | |
| group: ${{ github.head_ref || github.ref_name }} | |
| cancel-in-progress: true | |
| jobs: | |
| typos: | |
| name: Typos | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: crate-ci/typos@master | |
| ruff: | |
| name: Ruff | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.x' | |
| - name: "Main Script" | |
| run: | | |
| pip install ruff | |
| ruff check | |
| basedpyright: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: "Main Script" | |
| run: | | |
| EXTRA_INSTALL="pytest types-colorama types-Pygments scipy-stubs" | |
| curl -L -O https://tiker.net/ci-support-v0 | |
| . ./ci-support-v0 | |
| build_py_project_in_conda_env | |
| cipip install basedpyright | |
| basedpyright "$(get_proj_name)" test | |
| pytest3_pocl: | |
| name: Pytest Conda Py3 POCL | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: "Main Script" | |
| run: | | |
| EXTRA_INSTALL="scipy" | |
| curl -L -O https://tiker.net/ci-support-v0 | |
| . ./ci-support-v0 | |
| build_py_project_in_conda_env | |
| test_py_project | |
| pytest3_intel_cl: | |
| name: Pytest Conda Py3 Intel | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: "Main Script" | |
| run: | | |
| curl -L -O https://raw.githubusercontent.com/illinois-scicomp/machine-shop-maintenance/main/install-intel-icd.sh | |
| sed -i \ | |
| -e '0,/^VERSION=/s|^VERSION=.*|VERSION=oclcpuexp-2025.20.6.0.04_224945_rel|' \ | |
| -e '0,/^RELEASE=/s|^RELEASE=.*|RELEASE="2025-WW27"|' \ | |
| -e '0,/^TBB_VERSION=/s|^TBB_VERSION=.*|TBB_VERSION=2022.1.0|' \ | |
| install-intel-icd.sh | |
| sudo bash ./install-intel-icd.sh | |
| CONDA_ENVIRONMENT=.test-conda-env-py3.yml | |
| echo "- ocl-icd-system" >> "$CONDA_ENVIRONMENT" | |
| sed -i "/pocl/ d" "$CONDA_ENVIRONMENT" | |
| export PYOPENCL_TEST=intel | |
| source /opt/enable-intel-cl.sh | |
| EXTRA_INSTALL="scipy" | |
| curl -L -O https://tiker.net/ci-support-v0 | |
| . ./ci-support-v0 | |
| build_py_project_in_conda_env | |
| # Diagnose the Intel CPU OpenCL heap corruption: run serially | |
| # in-process (no xdist workers, via CISUPPORT_PARALLEL_PYTEST=no) | |
| # so a glibc abort happens at the culprit test with a full | |
| # faulthandler traceback, instead of detonating later in another | |
| # worker's GC. ARRAYCONTEXT_INTEL_DIAG makes the conftest force a | |
| # gc pass at each test teardown so the abort lands on the test | |
| # that caused it. A fresh cache dir keeps a crash from leaving a | |
| # poisoned sqlite cache that cascades into spurious failures. | |
| export CISUPPORT_PARALLEL_PYTEST=no | |
| export ARRAYCONTEXT_INTEL_DIAG=1 | |
| export PYTHONFAULTHANDLER=1 | |
| export XDG_CACHE_HOME="$(mktemp -d)" | |
| export PYTEST_FLAGS="-sv -p no:cacheprovider" | |
| export NO_COLOR=1 | |
| test_py_project | |
| crash_reproducer_intel_cl: | |
| name: Crash Reproducer Conda Py3 Intel | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: "Main Script" | |
| run: | | |
| curl -L -O https://raw.githubusercontent.com/illinois-scicomp/machine-shop-maintenance/main/install-intel-icd.sh | |
| sed -i \ | |
| -e '0,/^VERSION=/s|^VERSION=.*|VERSION=oclcpuexp-2025.20.6.0.04_224945_rel|' \ | |
| -e '0,/^RELEASE=/s|^RELEASE=.*|RELEASE="2025-WW27"|' \ | |
| -e '0,/^TBB_VERSION=/s|^TBB_VERSION=.*|TBB_VERSION=2022.1.0|' \ | |
| install-intel-icd.sh | |
| sudo bash ./install-intel-icd.sh | |
| CONDA_ENVIRONMENT=.test-conda-env-py3.yml | |
| echo "- ocl-icd-system" >> "$CONDA_ENVIRONMENT" | |
| sed -i "/pocl/ d" "$CONDA_ENVIRONMENT" | |
| export PYOPENCL_TEST=intel | |
| source /opt/enable-intel-cl.sh | |
| EXTRA_INSTALL="scipy" | |
| curl -L -O https://tiker.net/ci-support-v0 | |
| . ./ci-support-v0 | |
| build_py_project_in_conda_env | |
| # Capture the heap-corrupting write directly with valgrind. The | |
| # Intel CPU OpenCL runtime corrupts the host heap during kernel | |
| # execution; faulthandler only shows where the corruption later | |
| # detonates (often in unrelated code), not the bad write itself. | |
| # valgrind traps the invalid write at the instant it happens, even | |
| # inside the closed-source libintelocl.so. | |
| # | |
| # - PYTHONMALLOC=malloc routes CPython allocations through libc so | |
| # valgrind isn't drowned in pymalloc false positives. | |
| # - --smc-check=all-non-file: the runtime JITs kernels into | |
| # non-file-backed memory; without it valgrind may run stale | |
| # translations of the generated code. | |
| sudo apt-get update && sudo apt-get install -y valgrind | |
| export PYTHONMALLOC=malloc | |
| export NO_COLOR=1 | |
| valgrind \ | |
| --smc-check=all-non-file \ | |
| --leak-check=no --errors-for-leak-kinds=none \ | |
| --error-exitcode=1 \ | |
| python intel_crash_reproducer.py | |
| examples3: | |
| name: Examples Conda Py3 | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: "Main Script" | |
| run: | | |
| export MPLBACKEND=Agg | |
| USE_CONDA_BUILD=1 | |
| curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-py-project-and-run-examples.sh | |
| . ./build-py-project-and-run-examples.sh | |
| docs: | |
| name: Documentation | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.x' | |
| - name: "Main Script" | |
| run: | | |
| curl -L -O https://tiker.net/ci-support-v0 | |
| . ci-support-v0 | |
| build_py_project_in_conda_env | |
| conda install graphviz | |
| build_docs | |
| downstream_tests: | |
| strategy: | |
| matrix: | |
| downstream_project: [meshmode, grudge, mirgecom, mirgecom_examples] | |
| fail-fast: false | |
| name: Tests for downstream project ${{ matrix.downstream_project }} | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: "Main Script" | |
| env: | |
| DOWNSTREAM_PROJECT: ${{ matrix.downstream_project }} | |
| run: | | |
| curl -L -O https://tiker.net/ci-support-v0 | |
| . ./ci-support-v0 | |
| test_downstream "$DOWNSTREAM_PROJECT" | |
| if [[ "$DOWNSTREAM_PROJECT" = "meshmode" ]]; then | |
| python ../examples/simple-dg.py --lazy | |
| fi | |
| # vim: sw=4 |