Containerized CI and reusable workflow implementation #2
Workflow file for this run
This file contains 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: "Translate PyFV3 test (subset)" | |
on: | |
workflow_call: | |
inputs: | |
ndsl_trigger: | |
type: boolean | |
default: false | |
required: true | |
pull_request: | |
types: [opened, synchronize, reopened, ready_for_review, labeled, unlabeled] | |
# cancel running jobs if theres a newer push | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
github_repository: ${{github.event.repository.name}} | |
jobs: | |
pyFV3_translate_tests: | |
runs-on: ubuntu-latest | |
container: | |
image: ghcr.io/noaa-gfdl/miniforge:mpich | |
steps: | |
- name: Checkout PyFV3 for external trigger | |
if: ${{inputs.ndsl_trigger}} | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
repository: noaa-gfdl/PyFV3 | |
path: PyFV3 | |
- name: Checkout repository that triggers workflow | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
path: ${{env.github_repository}} | |
- name: mv NDSL to PyFV3 if NDSL triggers test | |
if: ${{inputs.ndsl_trigger}} | |
run: | | |
cd ${GITHUB_WORKSPACE} | |
mv ${{env.github_repository}} PyFV3/. | |
- name: install packages to test NDSL in PyFV3 | |
if: ${{inputs.ndsl_trigger}} | |
run: | | |
cd ${GITHUB_WORKSPACE}/PyFV3 | |
cd NDSL && pip3 install .[test] | |
cd .. pip3 install .[test] | |
- name: Install pyFV3 packages ofr !ndsl_trigger | |
if: ${{ ! inputs.ndsl_trigger }} | |
run : | | |
cd ${GITHUB_WORKSPACE}/PyFV3 | |
pip install .[ndsl,test] | |
- name: Prepare test_data | |
run: | | |
cd ${GITHUB_WORKSPACE}/PyFV3 | |
mkdir -p test_data && cd test_data | |
wget https://portal.nccs.nasa.gov/datashare/astg/smt/pace-regression-data/8.1.3_c12_6ranks_standard.tar.gz | |
tar -xzvf 8.1.3_c12_6ranks_standard.tar.gz --no-same-owner | |
cd .. | |
- name: NumPy FvTp2d | |
run: | | |
cd ${GITHUB_WORKSPACE}/PyFV3 | |
pytest \ | |
-v -s --data_path=./test_data/8.1.3/c12_6ranks_standard/dycore \ | |
--backend=numpy \ | |
--which_modules=FvTp2d \ | |
--threshold_overrides_file=./tests/savepoint/translate/overrides/standard.yaml \ | |
./tests/savepoint | |
- name: Numpy D_SW | |
run: | | |
cd ${GITHUB_WORKSPACE}/PyFV3 | |
pytest \ | |
-v -s --data_path=./test_data/8.1.3/c12_6ranks_standard/dycore \ | |
--backend=numpy \ | |
--which_modules=D_SW \ | |
--threshold_overrides_file=./tests/savepoint/translate/overrides/standard.yaml \ | |
./tests/savepoint | |
- name: Numpy Remapping | |
run: | | |
cd ${GITHUB_WORKSPACE}/PyFV3 | |
pytest \ | |
-v -s --data_path=./test_data/8.1.3/c12_6ranks_standard/dycore \ | |
--backend=numpy \ | |
--which_modules=Remapping \ | |
--threshold_overrides_file=./tests/savepoint/translate/overrides/standard.yaml \ | |
./tests/savepoint | |
- name: Orchestrated dace-cpu Acoustics | |
run: | | |
cd ${GITHUB_WORKSPACE}/PyFV3 | |
export FV3_DACEMODE=BuildAndRun | |
export PACE_FLOAT_PRECISION=64 | |
export PACE_TEST_N_THRESHOLD_SAMPLES=0 | |
export OMP_NUM_THREADS=1 | |
export PACE_LOGLEVEL=Debug | |
mpiexec -mca orte_abort_on_non_zero_status 1 -np 6 --oversubscribe pytest \ | |
-v -s --data_path=./test_data/8.1.3/c12_6ranks_standard/dycore \ | |
--backend=dace:cpu \ | |
-m parallel \ | |
--which_rank=0 \ | |
--which_modules=DynCore \ | |
--threshold_overrides_file=./tests/savepoint/translate/overrides/standard.yaml \ | |
./tests/savepoint |