Blas\Lapack (#52) #69
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: Documentation | |
| on: | |
| push: | |
| branches: [main] | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: documentation-${{ github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| PRIK_GFORTRAN_BINARY: gfortran-13 | |
| PRIK_GFORTRAN_PACKAGE: gfortran-13 | |
| jobs: | |
| benchmark: | |
| name: Documentation performance benchmark · Ubuntu 24.04 ARM64 · Python 3.12 | |
| runs-on: ubuntu-24.04-arm | |
| timeout-minutes: 90 | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 2 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| cache: pip | |
| cache-dependency-path: pyproject.toml | |
| - name: Verify and record benchmark host | |
| run: >- | |
| python tools/benchmark_host.py | |
| --require-machine aarch64 | |
| --require-arm-part 0xd49 | |
| --github-env "$GITHUB_ENV" | |
| - name: Install benchmark dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install -e ".[docs]" \ | |
| "numpy==2.5.1" \ | |
| "meson==1.11.2" \ | |
| "ninja==1.13.0" | |
| - name: Install pinned GFortran | |
| shell: bash | |
| run: | | |
| if ! command -v "$PRIK_GFORTRAN_BINARY" >/dev/null 2>&1; then | |
| sudo apt-get update | |
| sudo apt-get install --yes "$PRIK_GFORTRAN_PACKAGE" | |
| fi | |
| compiler_dir="$RUNNER_TEMP/prik-gfortran" | |
| mkdir -p "$compiler_dir" | |
| ln -sf "$(command -v "$PRIK_GFORTRAN_BINARY")" "$compiler_dir/gfortran" | |
| echo "$compiler_dir" >> "$GITHUB_PATH" | |
| "$compiler_dir/gfortran" --version | |
| - name: Run correctness and rigorous performance suite | |
| shell: bash | |
| run: | | |
| if (( GITHUB_RUN_NUMBER % 2 == 0 )); then | |
| export PRIK_BENCHMARK_FIRST=f2py | |
| else | |
| export PRIK_BENCHMARK_FIRST=prik | |
| fi | |
| bash benchmarks/run.sh | |
| - name: Generate public Performance snapshot | |
| run: | | |
| python tools/generate_performance_docs.py \ | |
| --commit "$GITHUB_SHA" | |
| - name: Report measurement stability | |
| run: | | |
| python -m pyperf check \ | |
| benchmarks/results/f2py.json \ | |
| benchmarks/results/prik.json \ | |
| benchmarks/results/f2py-build.json \ | |
| benchmarks/results/prik-build.json | |
| - name: Upload Performance snapshot and raw results | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: performance-snapshot | |
| path: | | |
| benchmarks/results/f2py.json | |
| benchmarks/results/prik.json | |
| benchmarks/results/f2py-build.json | |
| benchmarks/results/prik-build.json | |
| docs/user/performance.md | |
| docs/user/assets/performance-comparison.svg | |
| docs/user/assets/build-time-comparison.svg | |
| retention-days: 90 | |
| 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 | |
| permissions: | |
| contents: read | |
| pages: write | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| cache: pip | |
| cache-dependency-path: pyproject.toml | |
| - name: Install documentation dependencies | |
| run: python -m pip install -e ".[docs,qa]" | |
| - name: Download generated Performance snapshot | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: performance-snapshot | |
| path: . | |
| - name: Run documentation tests | |
| run: python -m pytest -q tests/shared/docs | |
| - name: Build reviewed documentation | |
| run: python -m mkdocs build --strict | |
| - name: Configure GitHub Pages | |
| if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request' | |
| uses: actions/configure-pages@v5 | |
| - name: Upload GitHub Pages artifact | |
| if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request' | |
| uses: actions/upload-pages-artifact@v4 | |
| with: | |
| path: site | |
| deploy: | |
| name: Documentation deployment · GitHub Pages | |
| if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request' | |
| environment: | |
| name: github-pages | |
| url: ${{ steps.deployment.outputs.page_url }} | |
| runs-on: ubuntu-latest | |
| needs: build | |
| permissions: | |
| pages: write | |
| id-token: write | |
| steps: | |
| - name: Deploy GitHub Pages | |
| id: deployment | |
| uses: actions/deploy-pages@v4 |