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