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