From e1bfa9fe6f94c85933c96935f5382bbfe1242f2b Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Wed, 6 May 2026 18:56:39 -0400 Subject: [PATCH 1/2] Fix Cray compiler GPU routine macros: INLINENEVER directive and cray_inline flag --- src/common/include/parallel_macros.fpp | 5 ++++- src/common/m_variables_conversion.fpp | 3 +-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/common/include/parallel_macros.fpp b/src/common/include/parallel_macros.fpp index b1382ec49a..05ab575283 100644 --- a/src/common/include/parallel_macros.fpp +++ b/src/common/include/parallel_macros.fpp @@ -67,10 +67,11 @@ #:if not isinstance(function_name, str) #:stop "When using cray_noinline, function name must be given and given as a string" #:endif - #:set cray_noinline_directive = ('!DIR$ NOINLINE ' + function_name).strip('\n') + #:set cray_noinline_directive = ('!DIR$ INLINENEVER ' + function_name).strip('\n') #ifdef _CRAYFTN #if MFC_OpenACC $:acc_directive + $:cray_noinline_directive #elif MFC_OpenMP $:omp_directive #else @@ -91,6 +92,7 @@ #ifdef _CRAYFTN #if MFC_OpenACC $:acc_directive + $:cray_directive #elif MFC_OpenMP $:omp_directive #else @@ -98,6 +100,7 @@ #endif #elif MFC_OpenACC $:acc_directive + $:cray_directive #elif MFC_OpenMP $:omp_directive #endif diff --git a/src/common/m_variables_conversion.fpp b/src/common/m_variables_conversion.fpp index 2417da1adf..3b0126179d 100644 --- a/src/common/m_variables_conversion.fpp +++ b/src/common/m_variables_conversion.fpp @@ -80,7 +80,7 @@ contains !> Compute the pressure from the appropriate equation of state subroutine s_compute_pressure(energy, alf, dyn_p, pi_inf, gamma, rho, qv, rhoYks, pres, T, stress, mom, G, pres_mag) - $:GPU_ROUTINE(function_name='s_compute_pressure',parallelism='[seq]', cray_noinline=True) + $:GPU_ROUTINE(function_name='s_compute_pressure',parallelism='[seq]', cray_inline=True) real(stp), intent(in) :: energy, alf real(wp), intent(in) :: dyn_p @@ -499,7 +499,6 @@ contains real(wp) :: E, D !< Prim/Cons variables within Newton-Raphson iteration real(wp) :: f, dGa_dW, dp_dW, df_dW !< Functions within Newton-Raphson iteration integer :: iter !< Newton-Raphson iteration counter - $:GPU_PARALLEL_LOOP(collapse=3, private='[alpha_K, alpha_rho_K, Re_K, nRtmp, rho_K, gamma_K, pi_inf_K, qv_K, dyn_pres_K, & & rhoYks, B, pres, vftmp, nbub_sc, G_K, T, pres_mag, Ga, B2, m2, S, W, dW, E, D, f, dGa_dW, dp_dW, & & df_dW, iter]') From ee97ba7fbc88d443f9c2345ec617751faf7390e7 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Wed, 6 May 2026 20:43:08 -0400 Subject: [PATCH 2/2] Fix cray_inline: don't emit INLINEALWAYS on non-Cray OpenACC builds --- src/common/include/parallel_macros.fpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/common/include/parallel_macros.fpp b/src/common/include/parallel_macros.fpp index 05ab575283..d8e230dcab 100644 --- a/src/common/include/parallel_macros.fpp +++ b/src/common/include/parallel_macros.fpp @@ -100,7 +100,6 @@ #endif #elif MFC_OpenACC $:acc_directive - $:cray_directive #elif MFC_OpenMP $:omp_directive #endif