From d4942bacb49a8659ef8612c1503e140f1d54589a Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Mon, 16 Jan 2023 15:37:04 +0100
Subject: [PATCH] Philippe 16/01/2023: FFT: opti + compute again correctly on
 Nvidia GPU

---
 src/MNH/fft.f90 | 38 ++++++++++++++------------------------
 1 file changed, 14 insertions(+), 24 deletions(-)

diff --git a/src/MNH/fft.f90 b/src/MNH/fft.f90
index 60ee2eaab..1f412aaff 100644
--- a/src/MNH/fft.f90
+++ b/src/MNH/fft.f90
@@ -223,18 +223,13 @@ SUBROUTINE FFT991( A, WORK, TRIGS, IFAX, JUMP, N, ILOT, ISIGN, KSZA, KSZW, KSZT
 !     ------------------------------------
       IF ( MOD(NFAX,2) == 1 ) THEN
 !$acc kernels
-        IBASE=1
-        JBASE=IA
-        DO JJ=1,NVEX
-          I=IBASE
-          J=JBASE
-          DO II=1,N
-            A(J)=WORK(I)
-            I=I+1
-            J=J+1
-          END DO
-          IBASE=IBASE+NX
-          JBASE=JBASE+JUMP
+!CDIR NODEP
+!*vocl loop,novrec
+!$acc loop independent private( IBASE, JBASE )
+        DO JJ = 1, NVEX
+          IBASE = 1  + (JJ-1) * NX
+          JBASE = IA + (JJ-1) * JUMP
+          A(JBASE:JBASE+N-1) = WORK(IBASE:IBASE+N-1)
         END DO
 !$acc end kernels
       END IF
@@ -286,18 +281,13 @@ SUBROUTINE FFT991( A, WORK, TRIGS, IFAX, JUMP, N, ILOT, ISIGN, KSZA, KSZW, KSZT
 !     ------------------------------------
       IF ( MOD(NFAX,2) == 1 ) THEN
 !$acc kernels
-        IBASE=1
-        JBASE=IA
-        DO JJ=1,NVEX
-          I=IBASE
-          J=JBASE
-          DO II=1,N
-            A(J)=WORK(I)
-            I=I+1
-            J=J+1
-          END DO
-          IBASE=IBASE+NX
-          JBASE=JBASE+JUMP
+        !CDIR NODEP
+!*vocl loop,novrec
+!$acc loop independent private( IBASE, JBASE )
+        DO JJ = 1, NVEX
+          IBASE = 1  + (JJ-1) * NX
+          JBASE = IA + (JJ-1) * JUMP
+          A(JBASE:JBASE+N-1) = WORK(IBASE:IBASE+N-1)
         END DO
 !$acc end kernels
       END IF
-- 
GitLab