Conversation
Tests PIO across all three compilers (gcc, nvhpc, oneapi) with openmpi at 1 MPI rank. Validates against reference logs. Manual trigger only. Made-with: Cursor
There was a problem hiding this comment.
Pull request overview
Adds a manual, subset GitHub Actions workflow to quickly verify MPAS-A builds and runs with the PIO I/O library across the supported compiler containers, and validates run logs against a reference output.
Changes:
- Introduces
.github/workflows/test-pio.ymlwith a build/run/validate/cleanup job sequence. - Builds MPAS-A with PIO enabled for gcc/nvhpc/oneapi in OpenMPI containers and runs a 1-rank case.
- Downloads and validates log artifacts against the 240km reference log, then cleans up executable artifacts.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - name: Download executable | ||
| id: download | ||
| uses: actions/download-artifact@v4 | ||
| continue-on-error: true | ||
| with: | ||
| name: exe-${{ matrix.compiler }}-openmpi-pio | ||
|
|
||
| - name: Run MPAS-A | ||
| if: steps.download.outcome == 'success' | ||
| uses: ./.github/actions/run-mpas |
There was a problem hiding this comment.
actions/download-artifact is marked continue-on-error: true and the subsequent run/upload steps are skipped on download failure, which can make this job (and potentially the workflow) succeed without actually running MPAS-A for a compiler (e.g., if the artifact name changes/mismatches). For this subset CI, consider failing fast when the executable download fails (remove continue-on-error, or add an explicit step that exit 1 when steps.download.outcome != 'success').
| - name: Validate 1-proc logs against reference | ||
| uses: ./.github/actions/validate-logs | ||
| with: | ||
| logs-path: logs | ||
| log-filter: 1proc | ||
| reference-log: .github/test-cases/240km/reference_log.atmosphere.0000.out | ||
| expected-configs: >- | ||
| logs-1proc-gcc-openmpi-nogpu-pio, | ||
| logs-1proc-nvhpc-openmpi-nogpu-pio, | ||
| logs-1proc-oneapi-openmpi-nogpu-pio | ||
|
|
There was a problem hiding this comment.
The validate-logs composite action currently runs compare_logs.py with --allow-missing, which means missing entries in expected-configs are reported as NO_LOG but do not fail validation. Since this workflow’s purpose is to ensure all three compiler runs happened, add an explicit check that all expected log artifact directories exist (or adjust the validation invocation) so missing logs cause the workflow to fail.
- Add push and pull_request triggers so workflow runs on PRs - Remove continue-on-error from artifact download - Make allow-missing configurable in validate-logs action, set false here Made-with: Cursor
Summary
test-pio.yml-- PIO I/O library subset workflowTest plan