ENH: Enable RunsOn GPU support for lecture builds #1335
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: Build Project [using jupyter-book] | |
| on: [pull_request] | |
| jobs: | |
| preview: | |
| runs-on: "runs-on=${{ github.run_id }}/family=g4dn.2xlarge/image=quantecon_ubuntu2404/disk=large" | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 # Fetch full git history for changelog feature | |
| - name: Setup Anaconda | |
| uses: conda-incubator/setup-miniconda@v3 | |
| with: | |
| auto-update-conda: true | |
| auto-activate-base: true | |
| miniconda-version: 'latest' | |
| python-version: "3.13" | |
| environment-file: environment.yml | |
| activate-environment: quantecon | |
| - name: Check nvidia Drivers | |
| shell: bash -l {0} | |
| run: nvidia-smi | |
| - name: Install JAX and Numpyro | |
| shell: bash -l {0} | |
| run: | | |
| pip install -U "jax[cuda13]" | |
| pip install numpyro | |
| python scripts/test-jax-install.py | |
| # === Benchmark Tests (Bare Metal, Jupyter, Jupyter-Book) === | |
| - name: Run Hardware Benchmarks (Bare Metal) | |
| shell: bash -l {0} | |
| run: | | |
| echo "=== Bare Metal Python Script Execution ===" | |
| python scripts/benchmark-hardware.py | |
| - name: Run Jupyter Notebook Benchmark (via nbconvert) | |
| shell: bash -l {0} | |
| run: | | |
| echo "=== Jupyter Kernel Execution ===" | |
| jupyter nbconvert --to notebook --execute scripts/benchmark-jupyter.ipynb --output benchmark-jupyter-executed.ipynb | |
| echo "Notebook executed successfully" | |
| - name: Run Jupyter-Book Benchmark | |
| shell: bash -l {0} | |
| run: | | |
| echo "=== Jupyter-Book Execution ===" | |
| # Build just the benchmark file using jupyter-book | |
| mkdir -p benchmark_test | |
| cp scripts/benchmark-jupyterbook.md benchmark_test/ | |
| # Create minimal _config.yml | |
| echo "title: Benchmark Test" > benchmark_test/_config.yml | |
| echo "execute:" >> benchmark_test/_config.yml | |
| echo " execute_notebooks: force" >> benchmark_test/_config.yml | |
| # Create minimal _toc.yml | |
| echo "format: jb-book" > benchmark_test/_toc.yml | |
| echo "root: benchmark-jupyterbook" >> benchmark_test/_toc.yml | |
| # Build | |
| jb build benchmark_test --path-output benchmark_build/ | |
| echo "Jupyter-Book build completed successfully" | |
| - name: Install latex dependencies | |
| run: | | |
| sudo apt-get -qq update | |
| sudo apt-get install -y \ | |
| texlive-latex-recommended \ | |
| texlive-latex-extra \ | |
| texlive-fonts-recommended \ | |
| texlive-fonts-extra \ | |
| texlive-xetex \ | |
| latexmk \ | |
| xindy \ | |
| dvipng \ | |
| cm-super | |
| - name: Display Conda Environment Versions | |
| shell: bash -l {0} | |
| run: conda list | |
| - name: Display Pip Versions | |
| shell: bash -l {0} | |
| run: pip list | |
| - name: Download "build" folder (cache) | |
| uses: dawidd6/action-download-artifact@v11 | |
| with: | |
| workflow: cache.yml | |
| branch: main | |
| name: build-cache | |
| path: _build | |
| # Build Assets (Download Notebooks and PDF via LaTeX) | |
| - name: Build Download Notebooks (sphinx-tojupyter) | |
| shell: bash -l {0} | |
| run: | | |
| jb build lectures --path-output ./ --builder=custom --custom-builder=jupyter -n -W --keep-going | |
| mkdir -p _build/html/_notebooks | |
| cp -u _build/jupyter/*.ipynb _build/html/_notebooks | |
| - name: Build PDF from LaTeX | |
| shell: bash -l {0} | |
| run: | | |
| jb build lectures --builder pdflatex --path-output ./ -n -W --keep-going | |
| mkdir _build/html/_pdf | |
| cp -u _build/latex/*.pdf _build/html/_pdf | |
| # Final Build of HTML | |
| - name: Build HTML | |
| shell: bash -l {0} | |
| run: | | |
| jb build lectures --path-output ./ -n -W --keep-going | |
| - name: Upload Execution Reports | |
| uses: actions/upload-artifact@v5 | |
| if: failure() | |
| with: | |
| name: execution-reports | |
| path: _build/html/reports | |
| - name: Preview Deploy to Netlify | |
| uses: nwtgck/actions-netlify@v3 | |
| with: | |
| publish-dir: '_build/html/' | |
| production-branch: main | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| deploy-message: "Preview Deploy from GitHub Actions" | |
| env: | |
| NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} | |
| NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} |