From 3ebc4a79c2b630530a6658cf42e2045bd09e3b9a Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Mon, 16 Mar 2026 20:19:49 -0400 Subject: [PATCH 01/41] ci: add NVHPC version matrix to GitHub runner CI Test 5 NVHPC versions (23.11, 24.5, 24.11, 25.1, 25.3) on GitHub-hosted runners using official NVIDIA container images. Each version runs both a CPU build+test and a GPU (OpenACC) build-only target. Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/test.yml | 62 +++++++++++++++++++++++++++++++++++--- 1 file changed, 58 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 305e409722..c1c84bd958 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -165,7 +165,7 @@ jobs: fi github: - name: Github + name: ${{ matrix.nvhpc && format('NVHPC {0} ({1})', matrix.nvhpc, matrix.target) || 'Github' }} needs: [lint-gate, file-changes, rebuild-cache] if: >- !cancelled() && @@ -191,9 +191,38 @@ jobs: debug: no-debug intel: false + # NVHPC compiler matrix (CPU build+test, GPU build-only) + - nvhpc: '23.11' + target: cpu + - nvhpc: '23.11' + target: gpu + - nvhpc: '24.5' + target: cpu + - nvhpc: '24.5' + target: gpu + - nvhpc: '24.11' + target: cpu + - nvhpc: '24.11' + target: gpu + - nvhpc: '25.1' + target: cpu + - nvhpc: '25.1' + target: gpu + - nvhpc: '25.3' + target: cpu + - nvhpc: '25.3' + target: gpu + fail-fast: false continue-on-error: true - runs-on: ${{ matrix.os }}-latest + runs-on: ${{ matrix.nvhpc && 'ubuntu-22.04' || format('{0}-latest', matrix.os) }} + container: ${{ matrix.nvhpc && format('nvcr.io/nvidia/nvhpc:{0}-devel-cuda_multi-ubuntu22.04', matrix.nvhpc) || '' }} + env: + CC: ${{ matrix.nvhpc && 'nvc' || '' }} + CXX: ${{ matrix.nvhpc && 'nvc++' || '' }} + FC: ${{ matrix.nvhpc && 'nvfortran' || '' }} + OMPI_ALLOW_RUN_AS_ROOT: ${{ matrix.nvhpc && '1' || '' }} + OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: ${{ matrix.nvhpc && '1' || '' }} steps: - name: Clone @@ -212,8 +241,9 @@ jobs: path: toolchain/mfc/test continue-on-error: true + # --- Standard (non-NVHPC) setup --- - name: Setup MacOS - if: matrix.os == 'macos' + if: matrix.os == 'macos' && !matrix.nvhpc run: | brew update brew upgrade @@ -222,7 +252,7 @@ jobs: echo "BOOST_INCLUDE=/opt/homebrew/include/" >> $GITHUB_ENV - name: Setup Ubuntu - if: matrix.os == 'ubuntu' && matrix.intel == false + if: matrix.os == 'ubuntu' && matrix.intel == false && !matrix.nvhpc run: | sudo apt update -y sudo apt install -y cmake gcc g++ python3 python3-dev hdf5-tools \ @@ -245,7 +275,17 @@ jobs: printenv | sort > /tmp/env_after diff /tmp/env_before /tmp/env_after | grep '^>' | sed 's/^> //' >> $GITHUB_ENV + # --- NVHPC container setup --- + - name: Setup NVHPC + if: matrix.nvhpc + run: | + apt-get update -y + apt-get install -y cmake python3 python3-venv python3-pip \ + libfftw3-dev git + + # --- Standard build + test --- - name: Build + if: '!matrix.nvhpc' run: | /bin/bash mfc.sh test -v --dry-run -j $(nproc) --${{ matrix.debug }} --${{ matrix.mpi }} $PRECISION $TEST_ALL env: @@ -253,6 +293,7 @@ jobs: PRECISION: ${{ matrix.precision != '' && format('--{0}', matrix.precision) || '' }} - name: Test + if: '!matrix.nvhpc' run: | /bin/bash mfc.sh test -v --max-attempts 3 -j $(nproc) $ONLY_CHANGES $TEST_ALL $TEST_PCT env: @@ -260,6 +301,19 @@ jobs: TEST_PCT: ${{ matrix.debug == 'debug' && '-% 20' || '' }} ONLY_CHANGES: ${{ github.event_name == 'pull_request' && '--only-changes' || '' }} + # --- NVHPC build + test --- + - name: Build (NVHPC CPU) + if: matrix.nvhpc && matrix.target == 'cpu' + run: /bin/bash mfc.sh test -v --dry-run -j $(nproc) --test-all + + - name: Test (NVHPC CPU) + if: matrix.nvhpc && matrix.target == 'cpu' + run: /bin/bash mfc.sh test -v --max-attempts 3 -j $(nproc) --test-all + + - name: Build (NVHPC GPU) + if: matrix.nvhpc && matrix.target == 'gpu' + run: /bin/bash mfc.sh test -v --dry-run --gpu acc -j $(nproc) --test-all + self: name: "${{ matrix.cluster_name }} (${{ matrix.device }}${{ matrix.interface != 'none' && format('-{0}', matrix.interface) || '' }}${{ matrix.shard != '' && format(' [{0}]', matrix.shard) || '' }})" needs: [lint-gate, file-changes, rebuild-cache] From 790dfbd5aebe05a528cad17ba68ca48df5617980 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Mon, 16 Mar 2026 20:22:52 -0400 Subject: [PATCH 02/41] ci: consolidate NVHPC build steps using matrix.target --- .github/workflows/test.yml | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c1c84bd958..122d2dd7fd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -302,18 +302,14 @@ jobs: ONLY_CHANGES: ${{ github.event_name == 'pull_request' && '--only-changes' || '' }} # --- NVHPC build + test --- - - name: Build (NVHPC CPU) - if: matrix.nvhpc && matrix.target == 'cpu' - run: /bin/bash mfc.sh test -v --dry-run -j $(nproc) --test-all + - name: Build (NVHPC) + if: matrix.nvhpc + run: /bin/bash mfc.sh test -v --dry-run -j $(nproc) --test-all ${{ matrix.target == 'gpu' && '--gpu acc' || '' }} - - name: Test (NVHPC CPU) + - name: Test (NVHPC) if: matrix.nvhpc && matrix.target == 'cpu' run: /bin/bash mfc.sh test -v --max-attempts 3 -j $(nproc) --test-all - - name: Build (NVHPC GPU) - if: matrix.nvhpc && matrix.target == 'gpu' - run: /bin/bash mfc.sh test -v --dry-run --gpu acc -j $(nproc) --test-all - self: name: "${{ matrix.cluster_name }} (${{ matrix.device }}${{ matrix.interface != 'none' && format('-{0}', matrix.interface) || '' }}${{ matrix.shard != '' && format(' [{0}]', matrix.shard) || '' }})" needs: [lint-gate, file-changes, rebuild-cache] From e72b8fcb9af90ed4b2e91577a325625a2b774808 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Mon, 16 Mar 2026 20:41:13 -0400 Subject: [PATCH 03/41] ci: add OpenMP target offload (gpu-omp) to NVHPC matrix --- .github/workflows/test.yml | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 122d2dd7fd..be79584841 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -195,23 +195,33 @@ jobs: - nvhpc: '23.11' target: cpu - nvhpc: '23.11' - target: gpu + target: gpu-acc + - nvhpc: '23.11' + target: gpu-omp - nvhpc: '24.5' target: cpu - nvhpc: '24.5' - target: gpu + target: gpu-acc + - nvhpc: '24.5' + target: gpu-omp - nvhpc: '24.11' target: cpu - nvhpc: '24.11' - target: gpu + target: gpu-acc + - nvhpc: '24.11' + target: gpu-omp - nvhpc: '25.1' target: cpu - nvhpc: '25.1' - target: gpu + target: gpu-acc + - nvhpc: '25.1' + target: gpu-omp - nvhpc: '25.3' target: cpu - nvhpc: '25.3' - target: gpu + target: gpu-acc + - nvhpc: '25.3' + target: gpu-omp fail-fast: false continue-on-error: true @@ -304,7 +314,9 @@ jobs: # --- NVHPC build + test --- - name: Build (NVHPC) if: matrix.nvhpc - run: /bin/bash mfc.sh test -v --dry-run -j $(nproc) --test-all ${{ matrix.target == 'gpu' && '--gpu acc' || '' }} + run: /bin/bash mfc.sh test -v --dry-run -j $(nproc) --test-all $GPU + env: + GPU: ${{ matrix.target == 'gpu-acc' && '--gpu acc' || matrix.target == 'gpu-omp' && '--gpu mp' || '' }} - name: Test (NVHPC) if: matrix.nvhpc && matrix.target == 'cpu' From 4f44702b19f9ceea3b913f92a89126e9cb050e75 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Mon, 16 Mar 2026 21:08:55 -0400 Subject: [PATCH 04/41] ci: fix NVHPC matrix by adding nvhpc/target as main axes with empty defaults GitHub Actions include entries with new-only keys get merged into all existing combos instead of creating new ones. Adding nvhpc and target as main matrix axes with empty defaults means the include entries overwrite original values, forcing creation of standalone combos. --- .github/workflows/test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index be79584841..1675a39305 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -180,6 +180,8 @@ jobs: precision: [''] debug: ['debug', 'no-debug'] intel: [true, false] + nvhpc: [''] + target: [''] exclude: - os: macos intel: true From fed16a2e9d12174c02c95732e5297f7152427f9c Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Mon, 16 Mar 2026 21:11:41 -0400 Subject: [PATCH 05/41] ci: add matrix details to standard GitHub runner job names --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1675a39305..c2f069c62c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -165,7 +165,7 @@ jobs: fi github: - name: ${{ matrix.nvhpc && format('NVHPC {0} ({1})', matrix.nvhpc, matrix.target) || 'Github' }} + name: ${{ matrix.nvhpc && format('NVHPC {0} ({1})', matrix.nvhpc, matrix.target) || format('Github ({0}, {1}, {2}, intel={3})', matrix.os, matrix.mpi, matrix.debug, matrix.intel) }} needs: [lint-gate, file-changes, rebuild-cache] if: >- !cancelled() && From 00857fe2d1b42373870f7a823de3ca6bd2d49416 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Mon, 16 Mar 2026 23:06:49 -0400 Subject: [PATCH 06/41] ci: add OpenMPI and HDF5 to NVHPC container setup --- .github/workflows/test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c2f069c62c..c3569072bf 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -293,7 +293,8 @@ jobs: run: | apt-get update -y apt-get install -y cmake python3 python3-venv python3-pip \ - libfftw3-dev git + libfftw3-dev libhdf5-dev hdf5-tools \ + openmpi-bin libopenmpi-dev git # --- Standard build + test --- - name: Build From f38b5a2d449f61604e9dbb0afb3714934de15e46 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Mon, 16 Mar 2026 23:41:46 -0400 Subject: [PATCH 07/41] ci: reduce NVHPC GPU build parallelism to -j 2 to avoid OOM --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c3569072bf..ad5b4f8a69 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -317,7 +317,7 @@ jobs: # --- NVHPC build + test --- - name: Build (NVHPC) if: matrix.nvhpc - run: /bin/bash mfc.sh test -v --dry-run -j $(nproc) --test-all $GPU + run: /bin/bash mfc.sh test -v --dry-run -j ${{ matrix.target == 'cpu' && '$(nproc)' || '2' }} --test-all $GPU env: GPU: ${{ matrix.target == 'gpu-acc' && '--gpu acc' || matrix.target == 'gpu-omp' && '--gpu mp' || '' }} From 5e8b22b033cbf72ea8aa2fc8ea8a363d894e04b4 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Sat, 28 Mar 2026 18:37:18 -0400 Subject: [PATCH 08/41] ci: add env diagnostics to NVHPC CPU test step --- .github/workflows/test.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e39e58543f..96ddb28fb7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -331,7 +331,15 @@ jobs: - name: Test (NVHPC) if: matrix.nvhpc && matrix.target == 'cpu' - run: /bin/bash mfc.sh test -v --max-attempts 3 -j $(nproc) --test-all + run: | + echo "=== NVHPC CPU test env debug ===" + echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" + echo "PATH=$PATH" + echo "which mpirun: $(which mpirun)" + echo "which nvfortran: $(which nvfortran)" + ldd $(find build/install -name simulation -type f | head -1) 2>/dev/null | head -20 + echo "=== end debug ===" + /bin/bash mfc.sh test -v --max-attempts 3 -j $(nproc) --test-all self: name: "${{ matrix.cluster_name }} (${{ matrix.device }}${{ matrix.interface != 'none' && format('-{0}', matrix.interface) || '' }}${{ matrix.shard != '' && format(' [{0}]', matrix.shard) || '' }})" From 65bc2f8ba2b1597d93c6345f7312213effe19092 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Sat, 28 Mar 2026 20:48:11 -0400 Subject: [PATCH 09/41] fix: add missing private clauses for GPU offload; disable ZFP in silo build - Add h_iL, h_iR, h_avg_2 and other chemistry locals to private clauses of two GPU_PARALLEL_LOOP regions in s_hllc_riemann_solver (lines 2201, 2421) where they were declared at subroutine scope but not privatized, causing nvfortran 25.1 gpu-omp to fail with 'Could not find allocated-variable index for symbol - h_il' - Disable ZFP compression in silo (-DSILO_ENABLE_ZFP=OFF) since MFC never uses it and nvc crashes compiling zfp/decode1d.c on 23.11/25.3 - Pin silo to 4.12.0 tag with GIT_SHALLOW; clean up HDF5 build flags --- src/simulation/m_riemann_solvers.fpp | 6 ++++-- toolchain/dependencies/CMakeLists.txt | 8 ++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/simulation/m_riemann_solvers.fpp b/src/simulation/m_riemann_solvers.fpp index 72055ef4ab..6b5c2e1b71 100644 --- a/src/simulation/m_riemann_solvers.fpp +++ b/src/simulation/m_riemann_solvers.fpp @@ -2205,7 +2205,8 @@ contains & G_L, G_R, rho_avg, H_avg, c_avg, gamma_avg, ptilde_L, ptilde_R, vel_L_rms, vel_R_rms, & & vel_avg_rms, vel_L_tmp, vel_R_tmp, Ms_L, Ms_R, pres_SL, pres_SR, alpha_L_sum, & & alpha_R_sum, rho_Star, E_Star, p_Star, p_K_Star, vel_K_star, s_L, s_R, s_M, s_P, s_S, & - & xi_M, xi_P, xi_L, xi_R, xi_MP, xi_PP]') + & xi_M, xi_P, xi_L, xi_R, xi_MP, xi_PP, Ys_L, Ys_R, Cp_iL, Cp_iR, Xs_L, Xs_R, & + & Gamma_iL, Gamma_iR, Yi_avg, Phi_avg, h_iL, h_iR, h_avg_2]') do l = is3%beg, is3%end do k = is2%beg, is2%end do j = is1%beg, is1%end @@ -2423,7 +2424,8 @@ contains & qv_R, qv_avg, c_L, c_R, c_avg, vel_L_rms, vel_R_rms, vel_avg_rms, vel_L_tmp, vel_R_tmp, & & Ms_L, Ms_R, pres_SL, pres_SR, alpha_L_sum, alpha_R_sum, s_L, s_R, s_M, s_P, s_S, xi_M, & & xi_P, xi_L, xi_R, xi_MP, xi_PP, nbub_L, nbub_R, PbwR3Lbar, PbwR3Rbar, R3Lbar, R3Rbar, & - & R3V2Lbar, R3V2Rbar]') + & R3V2Lbar, R3V2Rbar, Ys_L, Ys_R, Cp_iL, Cp_iR, Xs_L, Xs_R, Gamma_iL, Gamma_iR, & + & Yi_avg, Phi_avg, h_iL, h_iR, h_avg_2]') do l = is3%beg, is3%end do k = is2%beg, is2%end do j = is1%beg, is1%end diff --git a/toolchain/dependencies/CMakeLists.txt b/toolchain/dependencies/CMakeLists.txt index 8f51fbce76..0ef1dcf604 100644 --- a/toolchain/dependencies/CMakeLists.txt +++ b/toolchain/dependencies/CMakeLists.txt @@ -61,11 +61,13 @@ if (MFC_HDF5) GIT_PROGRESS ON CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}" -DBUILD_SHARED_LIBS=OFF - -DFORTRAN_LIBRARIES=ON -DBUILD_TESTING=OFF -DHDF5_BUILD_UTILS=OFF -DHDF5_BUILD_TOOLS=ON -DHDF5_BUILD_EXAMPLES=OFF + -DHDF5_BUILD_CPP_LIB=OFF + -DHDF5_BUILD_FORTRAN=OFF + -DHDF5_ENABLE_PARALLEL=OFF ) endif() endif() @@ -82,13 +84,15 @@ if (MFC_SILO) ExternalProject_Add(silo GIT_REPOSITORY "https://github.com/LLNL/Silo" - GIT_TAG 0cddaa6865fb49ae7b2110fa1b6f2709592abe0b + GIT_TAG 4.12.0 + GIT_SHALLOW ON GIT_PROGRESS ON PATCH_COMMAND "${GIT_EXECUTABLE}" stash && "${GIT_EXECUTABLE}" apply "${CMAKE_SOURCE_DIR}/Silo.patch" CMAKE_ARGS -DSILO_ENABLE_SHARED=OFF -DSILO_ENABLE_SILOCK=OFF -DSILO_ENABLE_BROWSER=OFF + -DSILO_ENABLE_ZFP=OFF -DFIND_LIBRARY_USE_LIB64_PATHS=ON "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" "-DCMAKE_FIND_ROOT_PATH=${CMAKE_FIND_ROOT_PATH}" From 066089fb3bfad02bc2f2855916f043951c85003e Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Sat, 28 Mar 2026 20:52:47 -0400 Subject: [PATCH 10/41] style: format m_riemann_solvers.fpp --- src/simulation/m_riemann_solvers.fpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/simulation/m_riemann_solvers.fpp b/src/simulation/m_riemann_solvers.fpp index 6b5c2e1b71..1e533673e8 100644 --- a/src/simulation/m_riemann_solvers.fpp +++ b/src/simulation/m_riemann_solvers.fpp @@ -2205,8 +2205,8 @@ contains & G_L, G_R, rho_avg, H_avg, c_avg, gamma_avg, ptilde_L, ptilde_R, vel_L_rms, vel_R_rms, & & vel_avg_rms, vel_L_tmp, vel_R_tmp, Ms_L, Ms_R, pres_SL, pres_SR, alpha_L_sum, & & alpha_R_sum, rho_Star, E_Star, p_Star, p_K_Star, vel_K_star, s_L, s_R, s_M, s_P, s_S, & - & xi_M, xi_P, xi_L, xi_R, xi_MP, xi_PP, Ys_L, Ys_R, Cp_iL, Cp_iR, Xs_L, Xs_R, & - & Gamma_iL, Gamma_iR, Yi_avg, Phi_avg, h_iL, h_iR, h_avg_2]') + & xi_M, xi_P, xi_L, xi_R, xi_MP, xi_PP, Ys_L, Ys_R, Cp_iL, Cp_iR, Xs_L, Xs_R, Gamma_iL, & + & Gamma_iR, Yi_avg, Phi_avg, h_iL, h_iR, h_avg_2]') do l = is3%beg, is3%end do k = is2%beg, is2%end do j = is1%beg, is1%end @@ -2424,8 +2424,8 @@ contains & qv_R, qv_avg, c_L, c_R, c_avg, vel_L_rms, vel_R_rms, vel_avg_rms, vel_L_tmp, vel_R_tmp, & & Ms_L, Ms_R, pres_SL, pres_SR, alpha_L_sum, alpha_R_sum, s_L, s_R, s_M, s_P, s_S, xi_M, & & xi_P, xi_L, xi_R, xi_MP, xi_PP, nbub_L, nbub_R, PbwR3Lbar, PbwR3Rbar, R3Lbar, R3Rbar, & - & R3V2Lbar, R3V2Rbar, Ys_L, Ys_R, Cp_iL, Cp_iR, Xs_L, Xs_R, Gamma_iL, Gamma_iR, & - & Yi_avg, Phi_avg, h_iL, h_iR, h_avg_2]') + & R3V2Lbar, R3V2Rbar, Ys_L, Ys_R, Cp_iL, Cp_iR, Xs_L, Xs_R, Gamma_iL, Gamma_iR, Yi_avg, & + & Phi_avg, h_iL, h_iR, h_avg_2]') do l = is3%beg, is3%end do k = is2%beg, is2%end do j = is1%beg, is1%end From 9472f4d25061ba41c45834702397fb45e6f74add Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Sat, 28 Mar 2026 22:01:49 -0400 Subject: [PATCH 11/41] ci: fix git safe.directory in NVHPC containers to silence ownership warnings --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 96ddb28fb7..0650ec425e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -303,6 +303,7 @@ jobs: apt-get install -y cmake python3 python3-venv python3-pip \ libfftw3-dev libhdf5-dev hdf5-tools \ openmpi-bin libopenmpi-dev git + git config --global --add safe.directory /__w/MFC/MFC # --- Standard build + test --- - name: Build From ff30d8a881752a1a986e2be5d51b78ff196cb805 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Sat, 28 Mar 2026 22:04:18 -0400 Subject: [PATCH 12/41] fix: use assumed-shape array in s_initialize_internal_energy_equations Change v_vf argument from dimension(sys_size) to dimension(:) to match the caller which passes an allocatable array. The explicit-size vs assumed-shape mismatch caused nvfortran 24.11's IPO inliner to create partial inline temporaries that the OpenACC backend could not map. --- src/simulation/m_start_up.fpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/simulation/m_start_up.fpp b/src/simulation/m_start_up.fpp index c3f38ef500..0815042ed1 100644 --- a/src/simulation/m_start_up.fpp +++ b/src/simulation/m_start_up.fpp @@ -552,7 +552,7 @@ contains !> Initialize internal-energy equations from phase mass, mixture momentum, and total energy subroutine s_initialize_internal_energy_equations(v_vf) - type(scalar_field), dimension(sys_size), intent(inout) :: v_vf + type(scalar_field), dimension(:), intent(inout) :: v_vf real(wp) :: rho real(wp) :: dyn_pres real(wp) :: gamma From dc12849241387d84734cfd6bb98390b04c4f2361 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Sat, 28 Mar 2026 22:16:16 -0400 Subject: [PATCH 13/41] style: format m_start_up.fpp --- src/simulation/m_start_up.fpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/simulation/m_start_up.fpp b/src/simulation/m_start_up.fpp index 0815042ed1..bd95d8aa91 100644 --- a/src/simulation/m_start_up.fpp +++ b/src/simulation/m_start_up.fpp @@ -553,16 +553,16 @@ contains subroutine s_initialize_internal_energy_equations(v_vf) type(scalar_field), dimension(:), intent(inout) :: v_vf - real(wp) :: rho - real(wp) :: dyn_pres - real(wp) :: gamma - real(wp) :: pi_inf - real(wp) :: qv - real(wp), dimension(2) :: Re - real(wp) :: pres, T - integer :: i, j, k, l, c - real(wp), dimension(num_species) :: rhoYks - real(wp) :: pres_mag + real(wp) :: rho + real(wp) :: dyn_pres + real(wp) :: gamma + real(wp) :: pi_inf + real(wp) :: qv + real(wp), dimension(2) :: Re + real(wp) :: pres, T + integer :: i, j, k, l, c + real(wp), dimension(num_species) :: rhoYks + real(wp) :: pres_mag pres_mag = 0._wp From 627d01aadcc3a934954b47bc95cc22ad190345e5 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Sat, 28 Mar 2026 23:06:48 -0400 Subject: [PATCH 14/41] Revert "style: format m_start_up.fpp" This reverts commit dc12849241387d84734cfd6bb98390b04c4f2361. --- src/simulation/m_start_up.fpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/simulation/m_start_up.fpp b/src/simulation/m_start_up.fpp index bd95d8aa91..0815042ed1 100644 --- a/src/simulation/m_start_up.fpp +++ b/src/simulation/m_start_up.fpp @@ -553,16 +553,16 @@ contains subroutine s_initialize_internal_energy_equations(v_vf) type(scalar_field), dimension(:), intent(inout) :: v_vf - real(wp) :: rho - real(wp) :: dyn_pres - real(wp) :: gamma - real(wp) :: pi_inf - real(wp) :: qv - real(wp), dimension(2) :: Re - real(wp) :: pres, T - integer :: i, j, k, l, c - real(wp), dimension(num_species) :: rhoYks - real(wp) :: pres_mag + real(wp) :: rho + real(wp) :: dyn_pres + real(wp) :: gamma + real(wp) :: pi_inf + real(wp) :: qv + real(wp), dimension(2) :: Re + real(wp) :: pres, T + integer :: i, j, k, l, c + real(wp), dimension(num_species) :: rhoYks + real(wp) :: pres_mag pres_mag = 0._wp From 4ad88a9393d0e07658d4dd940d3ddad837a1c553 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Sat, 28 Mar 2026 23:06:48 -0400 Subject: [PATCH 15/41] Revert "fix: use assumed-shape array in s_initialize_internal_energy_equations" This reverts commit ff30d8a881752a1a986e2be5d51b78ff196cb805. --- src/simulation/m_start_up.fpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/simulation/m_start_up.fpp b/src/simulation/m_start_up.fpp index 0815042ed1..c3f38ef500 100644 --- a/src/simulation/m_start_up.fpp +++ b/src/simulation/m_start_up.fpp @@ -552,7 +552,7 @@ contains !> Initialize internal-energy equations from phase mass, mixture momentum, and total energy subroutine s_initialize_internal_energy_equations(v_vf) - type(scalar_field), dimension(:), intent(inout) :: v_vf + type(scalar_field), dimension(sys_size), intent(inout) :: v_vf real(wp) :: rho real(wp) :: dyn_pres real(wp) :: gamma From 20288ec55b1019d13f7ca1e82c93c2a729671fdc Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Sun, 29 Mar 2026 12:24:23 -0400 Subject: [PATCH 16/41] fix: remove system OpenMPI from NVHPC containers; enable IPO for all versions - Remove openmpi-bin/libopenmpi-dev from NVHPC container apt install. The system OpenMPI (gfortran-compiled) was overriding the NVHPC-bundled MPI at runtime via ldconfig, causing ABI mismatch segfaults in all CPU tests (rayleigh_taylor_muscl crash in s_interface_compression). - Remove NVHPC version exclusion range for two-pass IPO. Binary search identified s_compute_dt as the single function causing ICE on 24.11; add noinline directive to prevent its extraction into the inline library. --- .github/workflows/test.yml | 3 +-- CMakeLists.txt | 5 ----- src/simulation/m_time_steppers.fpp | 3 +++ 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0650ec425e..b9636f9aff 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -301,8 +301,7 @@ jobs: run: | apt-get update -y apt-get install -y cmake python3 python3-venv python3-pip \ - libfftw3-dev libhdf5-dev hdf5-tools \ - openmpi-bin libopenmpi-dev git + libfftw3-dev libhdf5-dev hdf5-tools git git config --global --add safe.directory /__w/MFC/MFC # --- Standard build + test --- diff --git a/CMakeLists.txt b/CMakeLists.txt index fb77271a37..ef4b17ab25 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -262,11 +262,6 @@ if (CMAKE_BUILD_TYPE STREQUAL "Release") elseif (CMAKE_Fortran_COMPILER_ID STREQUAL "NVHPC") if (MFC_Unified) message(STATUS "LTO/IPO is not available with NVHPC using Unified Memory") - elseif (CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER "24.11" AND CMAKE_Fortran_COMPILER_VERSION VERSION_LESS "25.9") - message(STATUS "LTO/IPO is not supported in NVHPC Version 24.11 to 25.9. Use >=25.9 or (<=24.11 && > 23.11) Performance will be degraded.") - set(NVHPC_USE_TWO_PASS_IPO FALSE) - elseif(CMAKE_Fortran_COMPILER_VERSION VERSION_LESS "23.11") - message(STATUS "LTO/IPO is not supported in NVHPC Version < 23.11. Use a newer version of NVHPC for best performance.") else() message(STATUS "Performing IPO using -Mextract followed by -Minline") set(NVHPC_USE_TWO_PASS_IPO TRUE) diff --git a/src/simulation/m_time_steppers.fpp b/src/simulation/m_time_steppers.fpp index 4a741a4068..f6e5c8b0bf 100644 --- a/src/simulation/m_time_steppers.fpp +++ b/src/simulation/m_time_steppers.fpp @@ -625,6 +625,9 @@ contains !> Compute the global time step size from CFL stability constraints across all cells impure subroutine s_compute_dt() +#ifdef __NVCOMPILER + !dir$ noinline +#endif real(wp) :: rho !< Cell-avg. density From f64894f4021647e672d1b9162d03ca6c7fe4ae97 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Sun, 29 Mar 2026 12:26:24 -0400 Subject: [PATCH 17/41] style: format m_time_steppers.fpp --- src/simulation/m_time_steppers.fpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/simulation/m_time_steppers.fpp b/src/simulation/m_time_steppers.fpp index f6e5c8b0bf..c80a5d959d 100644 --- a/src/simulation/m_time_steppers.fpp +++ b/src/simulation/m_time_steppers.fpp @@ -625,8 +625,9 @@ contains !> Compute the global time step size from CFL stability constraints across all cells impure subroutine s_compute_dt() + #ifdef __NVCOMPILER - !dir$ noinline + ! dir$ noinline #endif real(wp) :: rho !< Cell-avg. density From 1a60cbebdd1165dda74dc3298c7c628d18035148 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Sun, 29 Mar 2026 12:36:41 -0400 Subject: [PATCH 18/41] ci: move git safe.directory before checkout to fix NVHPC 25.3 clone failure --- .github/workflows/test.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b9636f9aff..5bf20041f5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -221,6 +221,10 @@ jobs: OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: ${{ matrix.nvhpc && '1' || '' }} steps: + - name: Git safe directory + if: matrix.nvhpc + run: git config --global --add safe.directory /__w/MFC/MFC + - name: Clone uses: actions/checkout@v4 @@ -302,7 +306,6 @@ jobs: apt-get update -y apt-get install -y cmake python3 python3-venv python3-pip \ libfftw3-dev libhdf5-dev hdf5-tools git - git config --global --add safe.directory /__w/MFC/MFC # --- Standard build + test --- - name: Build From 419132c62f2562e90e1b73f42e2e032cb2624126 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Sun, 29 Mar 2026 18:45:42 -0400 Subject: [PATCH 19/41] fix: exclude 3 functions from IPO cross-inlining to fix NVHPC 24.11/25.x ICE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Exclude f_is_default, s_compute_dt, and my_inquire from cross-file inlining (-Minline=lib:...,except:...) to prevent compiler ICE on NVHPC 24.11+ during the two-pass IPO inline pass. These are tiny non-performance-critical helpers; all large GPU-critical functions (riemann solvers, weno, viscous flux, etc.) remain fully inlined. Removes the NVHPC version exclusion range for IPO — IPO is now enabled for all NVHPC versions. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ef4b17ab25..deb698dedf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -448,7 +448,7 @@ function(MFC_SETUP_TARGET) $<$:-Minline> ) add_dependencies(${ARGS_TARGET} ${ARGS_TARGET}_lib) - target_compile_options(${ARGS_TARGET} PRIVATE -Minline=lib:${ARGS_TARGET}_lib) + target_compile_options(${ARGS_TARGET} PRIVATE -Minline=lib:${ARGS_TARGET}_lib,except:f_is_default,except:s_compute_dt,except:my_inquire) list(PREPEND IPO_TARGETS ${ARGS_TARGET}_lib) endif() From b30a38b0a7b65ec97d16d3eb58b4d6b5ef5637fe Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Sun, 29 Mar 2026 20:04:10 -0400 Subject: [PATCH 20/41] fix: add s_mpi_abort and s_mpi_barrier to IPO except list for NVHPC 25.3 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index deb698dedf..23327c3d57 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -448,7 +448,7 @@ function(MFC_SETUP_TARGET) $<$:-Minline> ) add_dependencies(${ARGS_TARGET} ${ARGS_TARGET}_lib) - target_compile_options(${ARGS_TARGET} PRIVATE -Minline=lib:${ARGS_TARGET}_lib,except:f_is_default,except:s_compute_dt,except:my_inquire) + target_compile_options(${ARGS_TARGET} PRIVATE -Minline=lib:${ARGS_TARGET}_lib,except:f_is_default,except:s_compute_dt,except:my_inquire,except:s_mpi_abort,except:s_mpi_barrier) list(PREPEND IPO_TARGETS ${ARGS_TARGET}_lib) endif() From 2c4dd4b1a976f8eebe5f7952f6fcbb437487236a Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Sun, 29 Mar 2026 20:14:01 -0400 Subject: [PATCH 21/41] fix: add s_prohibit_abort to IPO except list for NVHPC 25.3 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 23327c3d57..c1d8ecb9ea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -448,7 +448,7 @@ function(MFC_SETUP_TARGET) $<$:-Minline> ) add_dependencies(${ARGS_TARGET} ${ARGS_TARGET}_lib) - target_compile_options(${ARGS_TARGET} PRIVATE -Minline=lib:${ARGS_TARGET}_lib,except:f_is_default,except:s_compute_dt,except:my_inquire,except:s_mpi_abort,except:s_mpi_barrier) + target_compile_options(${ARGS_TARGET} PRIVATE -Minline=lib:${ARGS_TARGET}_lib,except:f_is_default,except:s_compute_dt,except:my_inquire,except:s_mpi_abort,except:s_mpi_barrier,except:s_prohibit_abort) list(PREPEND IPO_TARGETS ${ARGS_TARGET}_lib) endif() From ebf82b4e70c635bc9aa78b17f7912db113dd4829 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Sun, 29 Mar 2026 20:16:34 -0400 Subject: [PATCH 22/41] fix: remove dead noinline directive (handled by CMake except: instead) --- src/simulation/m_time_steppers.fpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/simulation/m_time_steppers.fpp b/src/simulation/m_time_steppers.fpp index c80a5d959d..4a741a4068 100644 --- a/src/simulation/m_time_steppers.fpp +++ b/src/simulation/m_time_steppers.fpp @@ -626,10 +626,6 @@ contains !> Compute the global time step size from CFL stability constraints across all cells impure subroutine s_compute_dt() -#ifdef __NVCOMPILER - ! dir$ noinline -#endif - real(wp) :: rho !< Cell-avg. density #:if not MFC_CASE_OPTIMIZATION and USING_AMD From 26d82be1dbd7b4c69575d3a175b247a57fb6f238 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Sun, 29 Mar 2026 20:28:27 -0400 Subject: [PATCH 23/41] fix: add s_int_to_str to IPO except list for NVHPC 25.3 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c1d8ecb9ea..15b507f02b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -448,7 +448,7 @@ function(MFC_SETUP_TARGET) $<$:-Minline> ) add_dependencies(${ARGS_TARGET} ${ARGS_TARGET}_lib) - target_compile_options(${ARGS_TARGET} PRIVATE -Minline=lib:${ARGS_TARGET}_lib,except:f_is_default,except:s_compute_dt,except:my_inquire,except:s_mpi_abort,except:s_mpi_barrier,except:s_prohibit_abort) + target_compile_options(${ARGS_TARGET} PRIVATE -Minline=lib:${ARGS_TARGET}_lib,except:f_is_default,except:s_compute_dt,except:my_inquire,except:s_mpi_abort,except:s_mpi_barrier,except:s_prohibit_abort,except:s_int_to_str) list(PREPEND IPO_TARGETS ${ARGS_TARGET}_lib) endif() From fb2b89732f4447a7d6ddf4e01d59e013fde21ad0 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Sun, 29 Mar 2026 21:17:30 -0400 Subject: [PATCH 24/41] fix: add s_associate_cbc_coefficients_pointers and totalsize:10000 for NVHPC 25.3 IPO; add 25.5 to CI matrix --- .github/workflows/test.yml | 6 ++++++ CMakeLists.txt | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5bf20041f5..cc8089ee10 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -208,6 +208,12 @@ jobs: target: gpu-acc - nvhpc: '25.3' target: gpu-omp + - nvhpc: '25.5' + target: cpu + - nvhpc: '25.5' + target: gpu-acc + - nvhpc: '25.5' + target: gpu-omp fail-fast: false continue-on-error: true diff --git a/CMakeLists.txt b/CMakeLists.txt index 15b507f02b..e2fe747551 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -448,7 +448,7 @@ function(MFC_SETUP_TARGET) $<$:-Minline> ) add_dependencies(${ARGS_TARGET} ${ARGS_TARGET}_lib) - target_compile_options(${ARGS_TARGET} PRIVATE -Minline=lib:${ARGS_TARGET}_lib,except:f_is_default,except:s_compute_dt,except:my_inquire,except:s_mpi_abort,except:s_mpi_barrier,except:s_prohibit_abort,except:s_int_to_str) + target_compile_options(${ARGS_TARGET} PRIVATE -Minline=lib:${ARGS_TARGET}_lib,except:f_is_default,except:s_compute_dt,except:my_inquire,except:s_mpi_abort,except:s_mpi_barrier,except:s_prohibit_abort,except:s_int_to_str,except:s_associate_cbc_coefficients_pointers,totalsize:10000) list(PREPEND IPO_TARGETS ${ARGS_TARGET}_lib) endif() From f38948b0ee13c4317af26f661e3fdc746f1b4b90 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Sun, 29 Mar 2026 21:22:25 -0400 Subject: [PATCH 25/41] fix: remove totalsize:10000 from IPO inline pass (may hurt performance) --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e2fe747551..ba8beaa5c0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -448,7 +448,7 @@ function(MFC_SETUP_TARGET) $<$:-Minline> ) add_dependencies(${ARGS_TARGET} ${ARGS_TARGET}_lib) - target_compile_options(${ARGS_TARGET} PRIVATE -Minline=lib:${ARGS_TARGET}_lib,except:f_is_default,except:s_compute_dt,except:my_inquire,except:s_mpi_abort,except:s_mpi_barrier,except:s_prohibit_abort,except:s_int_to_str,except:s_associate_cbc_coefficients_pointers,totalsize:10000) + target_compile_options(${ARGS_TARGET} PRIVATE -Minline=lib:${ARGS_TARGET}_lib,except:f_is_default,except:s_compute_dt,except:my_inquire,except:s_mpi_abort,except:s_mpi_barrier,except:s_prohibit_abort,except:s_int_to_str,except:s_associate_cbc_coefficients_pointers) list(PREPEND IPO_TARGETS ${ARGS_TARGET}_lib) endif() From d47b0d7b613e04202d7e13bba6ab649b998c3196 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Sun, 29 Mar 2026 21:36:13 -0400 Subject: [PATCH 26/41] ci: add NVHPC 25.7 to test matrix --- .github/workflows/test.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index cc8089ee10..9f553faee8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -214,6 +214,12 @@ jobs: target: gpu-acc - nvhpc: '25.5' target: gpu-omp + - nvhpc: '25.7' + target: cpu + - nvhpc: '25.7' + target: gpu-acc + - nvhpc: '25.7' + target: gpu-omp fail-fast: false continue-on-error: true From e623a0ef0fda7874a45b89b582c382262a55880b Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Sun, 29 Mar 2026 21:59:32 -0400 Subject: [PATCH 27/41] fix: exclude patch check functions from IPO for NVHPC 25.x pre_process ICE --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ba8beaa5c0..03c6fcaa2d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -448,7 +448,7 @@ function(MFC_SETUP_TARGET) $<$:-Minline> ) add_dependencies(${ARGS_TARGET} ${ARGS_TARGET}_lib) - target_compile_options(${ARGS_TARGET} PRIVATE -Minline=lib:${ARGS_TARGET}_lib,except:f_is_default,except:s_compute_dt,except:my_inquire,except:s_mpi_abort,except:s_mpi_barrier,except:s_prohibit_abort,except:s_int_to_str,except:s_associate_cbc_coefficients_pointers) + target_compile_options(${ARGS_TARGET} PRIVATE -Minline=lib:${ARGS_TARGET}_lib,except:f_is_default,except:s_compute_dt,except:my_inquire,except:s_mpi_abort,except:s_mpi_barrier,except:s_prohibit_abort,except:s_int_to_str,except:s_associate_cbc_coefficients_pointers,except:s_check_inactive_patch_geometry,except:s_check_unsupported_patch_smoothing) list(PREPEND IPO_TARGETS ${ARGS_TARGET}_lib) endif() From 35f8160958f77e6938f0c4c75e576fc0de49dff0 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Mon, 30 Mar 2026 17:26:41 -0400 Subject: [PATCH 28/41] ci: add NVHPC MPI lib path to LD_LIBRARY_PATH for runtime linking --- .github/workflows/test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9f553faee8..39b29a8bc8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -318,6 +318,8 @@ jobs: apt-get update -y apt-get install -y cmake python3 python3-venv python3-pip \ libfftw3-dev libhdf5-dev hdf5-tools git + MPI_LIB=$(dirname "$(mpifort --showme:link | grep -oP '/\S+/libmpi\S+' | head -1)") + echo "LD_LIBRARY_PATH=${MPI_LIB}:${LD_LIBRARY_PATH}" >> $GITHUB_ENV # --- Standard build + test --- - name: Build From ef0706950a46ab3d97eb6ca448b3f4f2d817b291 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Mon, 30 Mar 2026 17:36:33 -0400 Subject: [PATCH 29/41] fix: exclude s_check_patches from IPO to prevent pre_process ICE on NVHPC 25.x --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 03c6fcaa2d..7312b2a338 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -448,7 +448,7 @@ function(MFC_SETUP_TARGET) $<$:-Minline> ) add_dependencies(${ARGS_TARGET} ${ARGS_TARGET}_lib) - target_compile_options(${ARGS_TARGET} PRIVATE -Minline=lib:${ARGS_TARGET}_lib,except:f_is_default,except:s_compute_dt,except:my_inquire,except:s_mpi_abort,except:s_mpi_barrier,except:s_prohibit_abort,except:s_int_to_str,except:s_associate_cbc_coefficients_pointers,except:s_check_inactive_patch_geometry,except:s_check_unsupported_patch_smoothing) + target_compile_options(${ARGS_TARGET} PRIVATE -Minline=lib:${ARGS_TARGET}_lib,except:f_is_default,except:s_compute_dt,except:my_inquire,except:s_mpi_abort,except:s_mpi_barrier,except:s_prohibit_abort,except:s_int_to_str,except:s_associate_cbc_coefficients_pointers,except:s_check_patches) list(PREPEND IPO_TARGETS ${ARGS_TARGET}_lib) endif() From 1d5249ddc8f4dee5846bb6acb8d7f6d5822d6a66 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Mon, 30 Mar 2026 17:42:24 -0400 Subject: [PATCH 30/41] ci: add NVHPC 26.1 to test matrix --- .github/workflows/test.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 39b29a8bc8..c200796888 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -220,6 +220,12 @@ jobs: target: gpu-acc - nvhpc: '25.7' target: gpu-omp + - nvhpc: '26.1' + target: cpu + - nvhpc: '26.1' + target: gpu-acc + - nvhpc: '26.1' + target: gpu-omp fail-fast: false continue-on-error: true From 2e6a5ffe5c81992255c7f9d74d0dc294d2a354b9 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Mon, 30 Mar 2026 17:44:05 -0400 Subject: [PATCH 31/41] ci: add NVHPC 26.3 to test matrix --- .github/workflows/test.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c200796888..763b1d5513 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -226,6 +226,12 @@ jobs: target: gpu-acc - nvhpc: '26.1' target: gpu-omp + - nvhpc: '26.3' + target: cpu + - nvhpc: '26.3' + target: gpu-acc + - nvhpc: '26.3' + target: gpu-omp fail-fast: false continue-on-error: true From cf4e6c6c67a8ed6e968a50d51114ea280a0e1d87 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Mon, 30 Mar 2026 17:44:43 -0400 Subject: [PATCH 32/41] ci: remove 26.3 (not yet released); 26.1 is latest --- .github/workflows/test.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 763b1d5513..c200796888 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -226,12 +226,6 @@ jobs: target: gpu-acc - nvhpc: '26.1' target: gpu-omp - - nvhpc: '26.3' - target: cpu - - nvhpc: '26.3' - target: gpu-acc - - nvhpc: '26.3' - target: gpu-omp fail-fast: false continue-on-error: true From 8132d1e7ac1f88ee67d14639156259d2f02b68ec Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Mon, 30 Mar 2026 17:48:28 -0400 Subject: [PATCH 33/41] ci: add NVHPC 26.3 (latest release) to test matrix --- .github/workflows/test.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c200796888..763b1d5513 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -226,6 +226,12 @@ jobs: target: gpu-acc - nvhpc: '26.1' target: gpu-omp + - nvhpc: '26.3' + target: cpu + - nvhpc: '26.3' + target: gpu-acc + - nvhpc: '26.3' + target: gpu-omp fail-fast: false continue-on-error: true From 36d5020cb07501f274571cfc77146c8cd56992a7 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Mon, 30 Mar 2026 18:06:02 -0400 Subject: [PATCH 34/41] fix: disable cross-file inlining for m_start_up.fpp to fix NVHPC 25.x pre_process ICE m_start_up is initialization/IO code where cross-file inlining provides no performance benefit but triggers fort2 ICE on NVHPC 25.x when too many functions are inlined into it. Use -Mnoinline per-file override to disable inlining for this file only while keeping full IPO for all GPU hot-path files. --- CMakeLists.txt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7312b2a338..9a27466613 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -448,7 +448,16 @@ function(MFC_SETUP_TARGET) $<$:-Minline> ) add_dependencies(${ARGS_TARGET} ${ARGS_TARGET}_lib) - target_compile_options(${ARGS_TARGET} PRIVATE -Minline=lib:${ARGS_TARGET}_lib,except:f_is_default,except:s_compute_dt,except:my_inquire,except:s_mpi_abort,except:s_mpi_barrier,except:s_prohibit_abort,except:s_int_to_str,except:s_associate_cbc_coefficients_pointers,except:s_check_patches) + target_compile_options(${ARGS_TARGET} PRIVATE -Minline=lib:${ARGS_TARGET}_lib,except:f_is_default,except:s_compute_dt,except:my_inquire,except:s_mpi_abort,except:s_mpi_barrier,except:s_prohibit_abort,except:s_int_to_str,except:s_associate_cbc_coefficients_pointers) + + # Exclude m_start_up from cross-file inlining: it is initialization code that + # triggers NVHPC 25.x fort2 ICE when too many functions are cross-inlined into it. + set_source_files_properties( + "${CMAKE_BINARY_DIR}/fypp/${ARGS_TARGET}/m_start_up.fpp.f90" + TARGET_DIRECTORY ${ARGS_TARGET} + PROPERTIES COMPILE_OPTIONS "-Mnoinline" + ) + list(PREPEND IPO_TARGETS ${ARGS_TARGET}_lib) endif() From 809c4c65e77800f0231b2def3cb3dc386f0c020e Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Mon, 30 Mar 2026 18:11:31 -0400 Subject: [PATCH 35/41] fix: also disable cross-file inlining for m_cbc.fpp (boundary code, triggers 25.3 ICE) --- CMakeLists.txt | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9a27466613..baf310fe2b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -450,13 +450,17 @@ function(MFC_SETUP_TARGET) add_dependencies(${ARGS_TARGET} ${ARGS_TARGET}_lib) target_compile_options(${ARGS_TARGET} PRIVATE -Minline=lib:${ARGS_TARGET}_lib,except:f_is_default,except:s_compute_dt,except:my_inquire,except:s_mpi_abort,except:s_mpi_barrier,except:s_prohibit_abort,except:s_int_to_str,except:s_associate_cbc_coefficients_pointers) - # Exclude m_start_up from cross-file inlining: it is initialization code that - # triggers NVHPC 25.x fort2 ICE when too many functions are cross-inlined into it. - set_source_files_properties( - "${CMAKE_BINARY_DIR}/fypp/${ARGS_TARGET}/m_start_up.fpp.f90" - TARGET_DIRECTORY ${ARGS_TARGET} - PROPERTIES COMPILE_OPTIONS "-Mnoinline" - ) + # Exclude m_start_up and m_cbc from cross-file inlining: these are + # initialization/boundary code that trigger NVHPC 25.x fort2 ICE when + # too many functions are cross-inlined into them. GPU hot-path files + # (m_rhs, m_riemann_solvers, m_viscous, m_weno, etc.) keep full IPO. + foreach(_no_inline_file m_start_up m_cbc) + set_source_files_properties( + "${CMAKE_BINARY_DIR}/fypp/${ARGS_TARGET}/${_no_inline_file}.fpp.f90" + TARGET_DIRECTORY ${ARGS_TARGET} + PROPERTIES COMPILE_OPTIONS "-Mnoinline" + ) + endforeach() list(PREPEND IPO_TARGETS ${ARGS_TARGET}_lib) endif() From f99fadc42582a882a0f0e35fa9b9af1ad0164411 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Mon, 30 Mar 2026 20:42:26 -0400 Subject: [PATCH 36/41] fix: correct MPI lib path extraction from mpifort --showme:link --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 763b1d5513..69aafe1efa 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -330,7 +330,7 @@ jobs: apt-get update -y apt-get install -y cmake python3 python3-venv python3-pip \ libfftw3-dev libhdf5-dev hdf5-tools git - MPI_LIB=$(dirname "$(mpifort --showme:link | grep -oP '/\S+/libmpi\S+' | head -1)") + MPI_LIB=$(mpifort --showme:link | grep -oP '(?<=-L)\S+' | head -1) echo "LD_LIBRARY_PATH=${MPI_LIB}:${LD_LIBRARY_PATH}" >> $GITHUB_ENV # --- Standard build + test --- From f9ddc9146b9f95f199abd5816e80f853056bb2fd Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Mon, 30 Mar 2026 21:14:06 -0400 Subject: [PATCH 37/41] fix: add PMIX_MCA_gds=hash and UCX/UCC lib paths for NVHPC container MPI PMIx dstore module fails with NO-PERMISSIONS in container namespaces because it cannot create POSIX shared memory objects. The hash GDS module keeps everything in-process memory. Also add UCX/UCC lib paths for multi-node fabric support. --- .github/workflows/test.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 69aafe1efa..3d61b4ab95 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -330,8 +330,12 @@ jobs: apt-get update -y apt-get install -y cmake python3 python3-venv python3-pip \ libfftw3-dev libhdf5-dev hdf5-tools git + # Set up NVHPC HPC-X MPI runtime paths + HPCX_DIR=$(dirname "$(find /opt/nvidia/hpc_sdk -path "*/hpcx/hpcx-*/ompi/bin/mpirun" | head -1)")/../.. MPI_LIB=$(mpifort --showme:link | grep -oP '(?<=-L)\S+' | head -1) - echo "LD_LIBRARY_PATH=${MPI_LIB}:${LD_LIBRARY_PATH}" >> $GITHUB_ENV + echo "LD_LIBRARY_PATH=${MPI_LIB}:${HPCX_DIR}/ucx/lib:${HPCX_DIR}/ucc/lib:${LD_LIBRARY_PATH}" >> $GITHUB_ENV + # Fix PMIx shared-memory permissions in containers + echo "PMIX_MCA_gds=hash" >> $GITHUB_ENV # --- Standard build + test --- - name: Build From d1fa2357d71b1eb573c94523dda56f4540b94c33 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Mon, 30 Mar 2026 21:49:52 -0400 Subject: [PATCH 38/41] ci: run 10% of tests for NVHPC CPU (faster CI, compiler coverage not test coverage) --- .github/workflows/test.yml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3d61b4ab95..1ef842d0d5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -365,14 +365,7 @@ jobs: - name: Test (NVHPC) if: matrix.nvhpc && matrix.target == 'cpu' run: | - echo "=== NVHPC CPU test env debug ===" - echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" - echo "PATH=$PATH" - echo "which mpirun: $(which mpirun)" - echo "which nvfortran: $(which nvfortran)" - ldd $(find build/install -name simulation -type f | head -1) 2>/dev/null | head -20 - echo "=== end debug ===" - /bin/bash mfc.sh test -v --max-attempts 3 -j $(nproc) --test-all + /bin/bash mfc.sh test -v --max-attempts 3 -j $(nproc) --test-all -% 10 self: name: "${{ matrix.cluster_name }} (${{ matrix.device }}${{ matrix.interface != 'none' && format('-{0}', matrix.interface) || '' }}${{ matrix.shard != '' && format(' [{0}]', matrix.shard) || '' }})" From 1cff5eb20e42f1c1b7e9c07cba001038dffd9cc6 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Mon, 30 Mar 2026 21:51:35 -0400 Subject: [PATCH 39/41] ci: compact NVHPC matrix using YAML flow style --- .github/workflows/test.yml | 81 +++++++++++++------------------------- 1 file changed, 27 insertions(+), 54 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1ef842d0d5..8df918b0e9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -178,60 +178,33 @@ jobs: intel: false # NVHPC compiler matrix (CPU build+test, GPU build-only) - - nvhpc: '23.11' - target: cpu - - nvhpc: '23.11' - target: gpu-acc - - nvhpc: '23.11' - target: gpu-omp - - nvhpc: '24.5' - target: cpu - - nvhpc: '24.5' - target: gpu-acc - - nvhpc: '24.5' - target: gpu-omp - - nvhpc: '24.11' - target: cpu - - nvhpc: '24.11' - target: gpu-acc - - nvhpc: '24.11' - target: gpu-omp - - nvhpc: '25.1' - target: cpu - - nvhpc: '25.1' - target: gpu-acc - - nvhpc: '25.1' - target: gpu-omp - - nvhpc: '25.3' - target: cpu - - nvhpc: '25.3' - target: gpu-acc - - nvhpc: '25.3' - target: gpu-omp - - nvhpc: '25.5' - target: cpu - - nvhpc: '25.5' - target: gpu-acc - - nvhpc: '25.5' - target: gpu-omp - - nvhpc: '25.7' - target: cpu - - nvhpc: '25.7' - target: gpu-acc - - nvhpc: '25.7' - target: gpu-omp - - nvhpc: '26.1' - target: cpu - - nvhpc: '26.1' - target: gpu-acc - - nvhpc: '26.1' - target: gpu-omp - - nvhpc: '26.3' - target: cpu - - nvhpc: '26.3' - target: gpu-acc - - nvhpc: '26.3' - target: gpu-omp + - { nvhpc: '23.11', target: cpu } + - { nvhpc: '23.11', target: gpu-acc } + - { nvhpc: '23.11', target: gpu-omp } + - { nvhpc: '24.5', target: cpu } + - { nvhpc: '24.5', target: gpu-acc } + - { nvhpc: '24.5', target: gpu-omp } + - { nvhpc: '24.11', target: cpu } + - { nvhpc: '24.11', target: gpu-acc } + - { nvhpc: '24.11', target: gpu-omp } + - { nvhpc: '25.1', target: cpu } + - { nvhpc: '25.1', target: gpu-acc } + - { nvhpc: '25.1', target: gpu-omp } + - { nvhpc: '25.3', target: cpu } + - { nvhpc: '25.3', target: gpu-acc } + - { nvhpc: '25.3', target: gpu-omp } + - { nvhpc: '25.5', target: cpu } + - { nvhpc: '25.5', target: gpu-acc } + - { nvhpc: '25.5', target: gpu-omp } + - { nvhpc: '25.7', target: cpu } + - { nvhpc: '25.7', target: gpu-acc } + - { nvhpc: '25.7', target: gpu-omp } + - { nvhpc: '26.1', target: cpu } + - { nvhpc: '26.1', target: gpu-acc } + - { nvhpc: '26.1', target: gpu-omp } + - { nvhpc: '26.3', target: cpu } + - { nvhpc: '26.3', target: gpu-acc } + - { nvhpc: '26.3', target: gpu-omp } fail-fast: false continue-on-error: true From 206bfe792543241776b907f4edac4f3c8ff1d98c Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Mon, 30 Mar 2026 23:08:25 -0400 Subject: [PATCH 40/41] =?UTF-8?q?ci:=20add=20all=20NVHPC=20releases=20from?= =?UTF-8?q?=2023.11=20through=2026.3=20(15=20versions=20=C3=97=203=20targe?= =?UTF-8?q?ts=20=3D=2045=20jobs)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/test.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8df918b0e9..b6a85cecac 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -178,12 +178,25 @@ jobs: intel: false # NVHPC compiler matrix (CPU build+test, GPU build-only) + # Every release from 23.11 through 26.3 (current) - { nvhpc: '23.11', target: cpu } - { nvhpc: '23.11', target: gpu-acc } - { nvhpc: '23.11', target: gpu-omp } + - { nvhpc: '24.1', target: cpu } + - { nvhpc: '24.1', target: gpu-acc } + - { nvhpc: '24.1', target: gpu-omp } + - { nvhpc: '24.3', target: cpu } + - { nvhpc: '24.3', target: gpu-acc } + - { nvhpc: '24.3', target: gpu-omp } - { nvhpc: '24.5', target: cpu } - { nvhpc: '24.5', target: gpu-acc } - { nvhpc: '24.5', target: gpu-omp } + - { nvhpc: '24.7', target: cpu } + - { nvhpc: '24.7', target: gpu-acc } + - { nvhpc: '24.7', target: gpu-omp } + - { nvhpc: '24.9', target: cpu } + - { nvhpc: '24.9', target: gpu-acc } + - { nvhpc: '24.9', target: gpu-omp } - { nvhpc: '24.11', target: cpu } - { nvhpc: '24.11', target: gpu-acc } - { nvhpc: '24.11', target: gpu-omp } @@ -199,6 +212,12 @@ jobs: - { nvhpc: '25.7', target: cpu } - { nvhpc: '25.7', target: gpu-acc } - { nvhpc: '25.7', target: gpu-omp } + - { nvhpc: '25.9', target: cpu } + - { nvhpc: '25.9', target: gpu-acc } + - { nvhpc: '25.9', target: gpu-omp } + - { nvhpc: '25.11', target: cpu } + - { nvhpc: '25.11', target: gpu-acc } + - { nvhpc: '25.11', target: gpu-omp } - { nvhpc: '26.1', target: cpu } - { nvhpc: '26.1', target: gpu-acc } - { nvhpc: '26.1', target: gpu-omp } From cb4c3ea855c86f6bc71a7b45bc33e0481773e1f3 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Mon, 30 Mar 2026 23:11:37 -0400 Subject: [PATCH 41/41] ci: combine gpu-acc and gpu-omp into single GPU job (30 jobs instead of 45) --- .github/workflows/test.yml | 59 ++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 35 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b6a85cecac..ff149f53c9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -177,53 +177,38 @@ jobs: debug: no-debug intel: false - # NVHPC compiler matrix (CPU build+test, GPU build-only) + # NVHPC compiler matrix: cpu (build+test), gpu (build-only, acc then omp) # Every release from 23.11 through 26.3 (current) - { nvhpc: '23.11', target: cpu } - - { nvhpc: '23.11', target: gpu-acc } - - { nvhpc: '23.11', target: gpu-omp } + - { nvhpc: '23.11', target: gpu } - { nvhpc: '24.1', target: cpu } - - { nvhpc: '24.1', target: gpu-acc } - - { nvhpc: '24.1', target: gpu-omp } + - { nvhpc: '24.1', target: gpu } - { nvhpc: '24.3', target: cpu } - - { nvhpc: '24.3', target: gpu-acc } - - { nvhpc: '24.3', target: gpu-omp } + - { nvhpc: '24.3', target: gpu } - { nvhpc: '24.5', target: cpu } - - { nvhpc: '24.5', target: gpu-acc } - - { nvhpc: '24.5', target: gpu-omp } + - { nvhpc: '24.5', target: gpu } - { nvhpc: '24.7', target: cpu } - - { nvhpc: '24.7', target: gpu-acc } - - { nvhpc: '24.7', target: gpu-omp } + - { nvhpc: '24.7', target: gpu } - { nvhpc: '24.9', target: cpu } - - { nvhpc: '24.9', target: gpu-acc } - - { nvhpc: '24.9', target: gpu-omp } + - { nvhpc: '24.9', target: gpu } - { nvhpc: '24.11', target: cpu } - - { nvhpc: '24.11', target: gpu-acc } - - { nvhpc: '24.11', target: gpu-omp } + - { nvhpc: '24.11', target: gpu } - { nvhpc: '25.1', target: cpu } - - { nvhpc: '25.1', target: gpu-acc } - - { nvhpc: '25.1', target: gpu-omp } + - { nvhpc: '25.1', target: gpu } - { nvhpc: '25.3', target: cpu } - - { nvhpc: '25.3', target: gpu-acc } - - { nvhpc: '25.3', target: gpu-omp } + - { nvhpc: '25.3', target: gpu } - { nvhpc: '25.5', target: cpu } - - { nvhpc: '25.5', target: gpu-acc } - - { nvhpc: '25.5', target: gpu-omp } + - { nvhpc: '25.5', target: gpu } - { nvhpc: '25.7', target: cpu } - - { nvhpc: '25.7', target: gpu-acc } - - { nvhpc: '25.7', target: gpu-omp } + - { nvhpc: '25.7', target: gpu } - { nvhpc: '25.9', target: cpu } - - { nvhpc: '25.9', target: gpu-acc } - - { nvhpc: '25.9', target: gpu-omp } + - { nvhpc: '25.9', target: gpu } - { nvhpc: '25.11', target: cpu } - - { nvhpc: '25.11', target: gpu-acc } - - { nvhpc: '25.11', target: gpu-omp } + - { nvhpc: '25.11', target: gpu } - { nvhpc: '26.1', target: cpu } - - { nvhpc: '26.1', target: gpu-acc } - - { nvhpc: '26.1', target: gpu-omp } + - { nvhpc: '26.1', target: gpu } - { nvhpc: '26.3', target: cpu } - - { nvhpc: '26.3', target: gpu-acc } - - { nvhpc: '26.3', target: gpu-omp } + - { nvhpc: '26.3', target: gpu } fail-fast: false continue-on-error: true @@ -349,10 +334,14 @@ jobs: # --- NVHPC build + test --- - name: Build (NVHPC) - if: matrix.nvhpc - run: /bin/bash mfc.sh test -v --dry-run -j ${{ matrix.target == 'cpu' && '$(nproc)' || '2' }} --test-all $GPU - env: - GPU: ${{ matrix.target == 'gpu-acc' && '--gpu acc' || matrix.target == 'gpu-omp' && '--gpu mp' || '' }} + if: matrix.nvhpc && matrix.target == 'cpu' + run: /bin/bash mfc.sh test -v --dry-run -j $(nproc) --test-all + + - name: Build (NVHPC GPU) + if: matrix.nvhpc && matrix.target == 'gpu' + run: | + /bin/bash mfc.sh test -v --dry-run -j 2 --test-all --gpu acc + /bin/bash mfc.sh test -v --dry-run -j 2 --test-all --gpu mp - name: Test (NVHPC) if: matrix.nvhpc && matrix.target == 'cpu'