From 2cdb6a961aafd52070e82fe151084f6c5e9440e5 Mon Sep 17 00:00:00 2001 From: Tuomas Lunttila <tuomas.lunttila@csc.fi> Date: Tue, 21 Jan 2025 14:28:21 +0000 Subject: [PATCH] Add OpenACC collapse clause to a nested loop (icon-libraries/libfortran-support!105) ## What is the new feature Improve `minval_2d` performance. ## How is it implemented Add COLLAPSE(2) to a nested loop in minval_2d to improve performance. Approved-by: Yen-Chen Chen <yen-chen.chen@kit.edu> Merged-by: Yen-Chen Chen <yen-chen.chen@kit.edu> Changelog: feature --- src/mo_fortran_tools.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mo_fortran_tools.F90 b/src/mo_fortran_tools.F90 index 8df4ada..9646cd8 100644 --- a/src/mo_fortran_tools.F90 +++ b/src/mo_fortran_tools.F90 @@ -1813,7 +1813,7 @@ CONTAINS minval_2d = HUGE(minval_2d) - !$ACC PARALLEL LOOP GANG VECTOR DEFAULT(PRESENT) ASYNC(1) REDUCTION(MIN: minval_2d) IF(lzacc) COPY(minval_2d) + !$ACC PARALLEL LOOP GANG VECTOR DEFAULT(PRESENT) ASYNC(1) COLLAPSE(2) REDUCTION(MIN: minval_2d) IF(lzacc) COPY(minval_2d) DO j = 1, s2 DO i = 1, s1 minval_2d = MIN(minval_2d, var(i, j)) ! The loop is equivalent to MINVAL(var(:,:)) -- GitLab