Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
59 changes: 46 additions & 13 deletions .github/workflows/blas-lapack.yml
Original file line number Diff line number Diff line change
@@ -1,21 +1,18 @@
name: BLAS + LAPACK
name: Native Libraries

on:
pull_request:
types: [opened, synchronize, reopened, labeled, unlabeled]
push:
branches:
- main
- release/*
workflow_call:

env:
PRIK_GFORTRAN_BINARY: gfortran-13
PRIK_GFORTRAN_PACKAGE: gfortran-13

jobs:
real-library-wrappers:
name: Python 3.12
name: BLAS + LAPACK · Ubuntu 24.04 · Python 3.12
if: >-
${{
github.event_name != 'pull_request' ||
Expand All @@ -38,13 +35,20 @@ jobs:
run: |
python -m pip install --upgrade pip
python -m pip install -e ".[qa]"
- name: Install pinned GFortran
python -m pip install \
"numpy==2.5.1" \
"meson==1.11.2" \
"ninja==1.13.0" \
"scipy==1.18.0"
- name: Install pinned GFortran and LAPACK link dependencies
shell: bash
run: |
packages=(libblas-dev liblapack-dev)
if ! command -v "$PRIK_GFORTRAN_BINARY" >/dev/null 2>&1; then
sudo apt-get update
sudo apt-get install --yes "$PRIK_GFORTRAN_PACKAGE"
packages+=("$PRIK_GFORTRAN_PACKAGE")
fi
sudo apt-get update
sudo apt-get install --yes "${packages[@]}"
compiler_dir="$RUNNER_TEMP/prik-gfortran"
mkdir -p "$compiler_dir"
ln -sf "$(command -v "$PRIK_GFORTRAN_BINARY")" "$compiler_dir/gfortran"
Expand All @@ -54,13 +58,42 @@ jobs:
uses: actions/cache@v4
with:
path: ${{ runner.temp }}/prik-real-library-native
key: real-libraries-${{ runner.os }}-gfortran13-${{ hashFiles('tests/fortran/building_shared_library/end_to_end/real_libraries/blas/native/**', 'tests/fortran/building_shared_library/end_to_end/real_libraries/lapack/native/**') }}
- name: Run full BLAS and LAPACK wrapper tests
key: real-libraries-${{ runner.os }}-gfortran13-${{ hashFiles('examples/blas/native/**', 'examples/lapack/native/**') }}
- name: Run BLAS example and CI full-surface audit
env:
PYTHONPATH: .
HYPOTHESIS_PROFILE: ci
PRIK_REAL_LIBRARY_NATIVE_CACHE_DIR: ${{ runner.temp }}/prik-real-library-native
run: |
python -m pytest -q --randomly-seed=1 \
"tests/fortran/building_shared_library/end_to_end/real_libraries/test_full_libraries.py::test_full_library_wrapper_imports_every_root_procedure_from_cached_shared_library[blas]" \
"tests/fortran/building_shared_library/end_to_end/real_libraries/test_full_libraries.py::test_full_library_wrapper_imports_every_root_procedure_from_cached_shared_library[lapack]"
source examples/blas/build_all.sh
python -m pytest -q examples/blas/tests examples/blas/ci/full_surface.py
- name: Report reviewed LAPACK inventory
env:
PYTHONPATH: .
run: |
python - <<'PY'
from examples.lapack.routine_inventory import (
EXPECTED_LAPACK_PROCEDURES,
EXPECTED_LAPACK_SOURCE_FILES,
F2PY_SCALAR_WRITEBACK_ROUTINES,
ROUTINE_GROUPS,
ROUTINES,
SCIPY_VERSION,
)

print(f"SciPy version: {SCIPY_VERSION}")
print(f"LAPACK implementation sources: {EXPECTED_LAPACK_SOURCE_FILES}")
print(f"Expected PRIK procedures: {EXPECTED_LAPACK_PROCEDURES}")
print(f"Selected float64 correctness routines: {len(ROUTINES)}")
print(f"f2py scalar writebacks: {len(F2PY_SCALAR_WRITEBACK_ROUTINES)}")
for family, routines in ROUTINE_GROUPS.items():
print(f" {family}: {len(routines)}")
PY
- name: Run LAPACK example and CI full-surface audit
env:
PYTHONPATH: .
HYPOTHESIS_PROFILE: ci
PRIK_REAL_LIBRARY_NATIVE_CACHE_DIR: ${{ runner.temp }}/prik-real-library-native
run: |
source examples/lapack/build_all.sh
python -m pytest -q examples/lapack/tests examples/lapack/ci/full_surface.py
4 changes: 2 additions & 2 deletions .github/workflows/claude.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Claude Code
name: Repository Automation

on:
issue_comment:
Expand All @@ -12,7 +12,7 @@ on:

jobs:
claude:
name: Respond
name: Claude Code response to mention
if: |
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
Expand Down
12 changes: 2 additions & 10 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
@@ -1,26 +1,18 @@
name: Coverage
name: Quality Metrics

on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened, labeled, unlabeled]
workflow_dispatch:
workflow_call:

env:
PRIK_GFORTRAN_BINARY: gfortran-13
PRIK_GFORTRAN_PACKAGE: gfortran-13

jobs:
coverage:
name: Python 3.12
if: >-
${{
github.event_name != 'pull_request' ||
contains(github.event.pull_request.labels.*.name, 'run-coverage')
}}
name: Project coverage · Ubuntu 24.04 · Python 3.12
runs-on: ubuntu-24.04
permissions:
contents: read
Expand Down
24 changes: 4 additions & 20 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,37 +3,22 @@ name: Documentation
on:
push:
branches: [main]
pull_request:
paths:
- ".github/workflows/docs.yml"
- "README.md"
- "benchmarks/**"
- "docs/**"
- "docs_theme/**"
- "mkdocs.yml"
- "pyproject.toml"
- "tests/shared/architecture/test_test_suite_layout.py"
- "tests/shared/docs/**"
- "tests/shared/tools/test_generate_performance_docs.py"
- "tools/generate_performance_docs.py"
- "tools/mkdocs_publication.py"
workflow_dispatch:

permissions:
contents: read

concurrency:
group: documentation-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
cancel-in-progress: true

env:
PRIK_GFORTRAN_BINARY: gfortran-13
PRIK_GFORTRAN_PACKAGE: gfortran-13

jobs:
benchmark:
name: Benchmark
if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request'
name: Documentation performance benchmark · Ubuntu 24.04 ARM64 · Python 3.12
runs-on: ubuntu-24.04-arm
timeout-minutes: 90
permissions:
Expand Down Expand Up @@ -117,7 +102,7 @@ jobs:
retention-days: 90

build:
name: Build
name: Documentation site build · Ubuntu 24.04 · Python 3.12
needs: benchmark
if: always() && (needs.benchmark.result == 'success' || needs.benchmark.result == 'skipped')
runs-on: ubuntu-24.04
Expand All @@ -139,7 +124,6 @@ jobs:
run: python -m pip install -e ".[docs,qa]"

- name: Download generated Performance snapshot
if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request'
uses: actions/download-artifact@v4
with:
name: performance-snapshot
Expand All @@ -162,7 +146,7 @@ jobs:
path: site

deploy:
name: Deploy
name: Documentation deployment · GitHub Pages
if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request'
environment:
name: github-pages
Expand Down
12 changes: 5 additions & 7 deletions .github/workflows/fortran-toolchain-smoke.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
name: Smoke Tests
name: Compiler Compatibility

on:
pull_request:
types: [opened, synchronize, reopened]
push:
branches:
- main
Expand All @@ -22,7 +20,7 @@ env:

jobs:
toolchain-smoke:
name: ${{ matrix.display_name }}
name: Compiler smoke · ${{ matrix.display_name }}
runs-on: ubuntu-24.04
timeout-minutes: 60
permissions:
Expand All @@ -32,13 +30,13 @@ jobs:
matrix:
include:
- toolchain: ifx
display_name: Linux · Intel IFX 2026.1.1 · Python 3.12
display_name: Ubuntu 24.04 · Intel IFX 2026.1.1 · Python 3.12
environment: prik-ifx-2026.1.1
fortran_compiler: ifx
c_compiler: icx
cache_version: "2026.1.1-v2"
- toolchain: flang
display_name: Linux · LLVM Flang 22.1.8 · Python 3.12
display_name: Ubuntu 24.04 · LLVM Flang 22.1.8 · Python 3.12
environment: prik-flang-22.1.8
fortran_compiler: flang
c_compiler: clang
Expand Down Expand Up @@ -120,7 +118,7 @@ jobs:
done

macos-flang-smoke:
name: macOS 15 ARM64 · LLVM Flang · Python 3.12
name: Compiler smoke · macOS 15 ARM64 · LLVM Flang · Python 3.12
runs-on: macos-15
timeout-minutes: 60
permissions:
Expand Down
Loading
Loading