From f917d3e5e56386a5ef1cf4db73a0c619f8266b64 Mon Sep 17 00:00:00 2001 From: Lukas Mosimann Date: Tue, 6 Aug 2024 05:01:04 -0700 Subject: [PATCH] fix omp --- src/trans/gpu/internal/trgtol_mod.F90 | 25 ++++++++++++++++++++----- src/trans/gpu/internal/trltog_mod.F90 | 25 ++++++++++++++++++++----- 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/src/trans/gpu/internal/trgtol_mod.F90 b/src/trans/gpu/internal/trgtol_mod.F90 index 8aeec5c6c..18d4a15a2 100755 --- a/src/trans/gpu/internal/trgtol_mod.F90 +++ b/src/trans/gpu/internal/trgtol_mod.F90 @@ -342,62 +342,77 @@ SUBROUTINE TRGTOL(ALLOCATOR,HTRGTOL,PREEL_REAL,KF_FS,KF_GP,KF_UV_G,KF_SCALARS_G, ENDIF CALL GSTATS(412,0) ACC_POINTERS_CNT = 0 + LUPDATE_PGP = .FALSE. IF (PRESENT(PGP)) THEN ACC_POINTERS_CNT = ACC_POINTERS_CNT + 1 ACC_POINTERS(ACC_POINTERS_CNT) = EXT_ACC_PASS(PGP) +#ifdef ACCGPU LUPDATE_PGP = .NOT. ACC_IS_PRESENT(PGP) +#endif ENDIF + LUPDATE_PGPUV = .FALSE. IF (PRESENT(PGPUV)) THEN ACC_POINTERS_CNT = ACC_POINTERS_CNT + 1 ACC_POINTERS(ACC_POINTERS_CNT) = EXT_ACC_PASS(PGPUV) +#ifdef ACCGPU LUPDATE_PGPUV = .NOT. ACC_IS_PRESENT(PGPUV) +#endif ENDIF + LUPDATE_PGP2 = .FALSE. IF (PRESENT(PGP2)) THEN ACC_POINTERS_CNT = ACC_POINTERS_CNT + 1 ACC_POINTERS(ACC_POINTERS_CNT) = EXT_ACC_PASS(PGP2) +#ifdef ACCGPU LUPDATE_PGP2 = .NOT. ACC_IS_PRESENT(PGP2) +#endif ENDIF + LUPDATE_PGP3A = .FALSE. IF (PRESENT(PGP3A)) THEN ACC_POINTERS_CNT = ACC_POINTERS_CNT + 1 ACC_POINTERS(ACC_POINTERS_CNT) = EXT_ACC_PASS(PGP3A) +#ifdef ACCGPU LUPDATE_PGP3A = .NOT. ACC_IS_PRESENT(PGP3A) +#endif ENDIF + LUPDATE_PGP3B = .FALSE. IF (PRESENT(PGP3B)) THEN ACC_POINTERS_CNT = ACC_POINTERS_CNT + 1 ACC_POINTERS(ACC_POINTERS_CNT) = EXT_ACC_PASS(PGP3B) +#ifdef ACCGPU LUPDATE_PGP3B = .NOT. ACC_IS_PRESENT(PGP3B) +#endif ENDIF IF (ACC_POINTERS_CNT > 0) CALL EXT_ACC_CREATE(ACC_POINTERS(1:ACC_POINTERS_CNT),STREAM=1_ACC_HANDLE_KIND) !$ACC WAIT(1) - IF (PRESENT(PGP) .AND. LUPDATE_PGP) THEN + IF (LUPDATE_PGP) THEN #ifdef OMPGPU #endif #ifdef ACCGPU !$ACC UPDATE DEVICE(PGP) #endif ENDIF - IF (PRESENT(PGPUV) .AND. LUPDATE_PGPUV) THEN + IF (LUPDATE_PGPUV) THEN #ifdef OMPGPU #endif #ifdef ACCGPU !$ACC UPDATE DEVICE(PGPUV) #endif ENDIF - IF (PRESENT(PGP2) .AND. LUPDATE_PGP2) THEN + IF (LUPDATE_PGP2) THEN #ifdef OMPGPU #endif #ifdef ACCGPU !$ACC UPDATE DEVICE(PGP2) #endif ENDIF - IF (PRESENT(PGP3A) .AND. LUPDATE_PGP3A) THEN + IF (LUPDATE_PGP3A) THEN #ifdef OMPGPU #endif #ifdef ACCGPU !$ACC UPDATE DEVICE(PGP3A) #endif ENDIF - IF (PRESENT(PGP3B) .AND. LUPDATE_PGP3B) THEN + IF (LUPDATE_PGP3B) THEN #ifdef OMPGPU #endif #ifdef ACCGPU diff --git a/src/trans/gpu/internal/trltog_mod.F90 b/src/trans/gpu/internal/trltog_mod.F90 index 7f863eacf..555e99d43 100755 --- a/src/trans/gpu/internal/trltog_mod.F90 +++ b/src/trans/gpu/internal/trltog_mod.F90 @@ -488,30 +488,45 @@ SUBROUTINE TRLTOG(ALLOCATOR,HTRLTOG,PREEL_REAL,KF_FS,KF_GP,KF_UV_G,KF_SCALARS_G, #endif ACC_POINTERS_CNT = 0 + LUPDATE_PGP = .FALSE. IF (PRESENT(PGP)) THEN ACC_POINTERS_CNT = ACC_POINTERS_CNT + 1 ACC_POINTERS(ACC_POINTERS_CNT) = EXT_ACC_PASS(PGP) +#ifdef ACCGPU LUPDATE_PGP = .NOT. ACC_IS_PRESENT(PGP) +#endif ENDIF + LUPDATE_PGPUV = .FALSE. IF (PRESENT(PGPUV)) THEN ACC_POINTERS_CNT = ACC_POINTERS_CNT + 1 ACC_POINTERS(ACC_POINTERS_CNT) = EXT_ACC_PASS(PGPUV) +#ifdef ACCGPU LUPDATE_PGPUV = .NOT. ACC_IS_PRESENT(PGPUV) +#endif ENDIF + LUPDATE_PGP2 = .FALSE. IF (PRESENT(PGP2)) THEN ACC_POINTERS_CNT = ACC_POINTERS_CNT + 1 ACC_POINTERS(ACC_POINTERS_CNT) = EXT_ACC_PASS(PGP2) +#ifdef ACCGPU LUPDATE_PGP2 = .NOT. ACC_IS_PRESENT(PGP2) +#endif ENDIF + LUPDATE_PGP3A = .FALSE. IF (PRESENT(PGP3A)) THEN ACC_POINTERS_CNT = ACC_POINTERS_CNT + 1 ACC_POINTERS(ACC_POINTERS_CNT) = EXT_ACC_PASS(PGP3A) +#ifdef ACCGPU LUPDATE_PGP3A = .NOT. ACC_IS_PRESENT(PGP3A) +#endif ENDIF + LUPDATE_PGP3B = .FALSE. IF (PRESENT(PGP3B)) THEN ACC_POINTERS_CNT = ACC_POINTERS_CNT + 1 ACC_POINTERS(ACC_POINTERS_CNT) = EXT_ACC_PASS(PGP3B) +#ifdef ACCGPU LUPDATE_PGP3B = .NOT. ACC_IS_PRESENT(PGP3B) +#endif ENDIF IF (ACC_POINTERS_CNT > 0) CALL EXT_ACC_CREATE(ACC_POINTERS(1:ACC_POINTERS_CNT),STREAM=1_ACC_HANDLE_KIND) #ifdef OMPGPU @@ -863,35 +878,35 @@ SUBROUTINE TRLTOG(ALLOCATOR,HTRLTOG,PREEL_REAL,KF_FS,KF_GP,KF_UV_G,KF_SCALARS_G, !$ACC END DATA ! PGPUV !$ACC END DATA ! PGP #endif - IF (PRESENT(PGP) .AND. LUPDATE_PGP) THEN + IF (LUPDATE_PGP) THEN #ifdef OMPGPU #endif #ifdef ACCGPU !$ACC UPDATE HOST(PGP) #endif ENDIF - IF (PRESENT(PGPUV) .AND. LUPDATE_PGPUV) THEN + IF (LUPDATE_PGPUV) THEN #ifdef OMPGPU #endif #ifdef ACCGPU !$ACC UPDATE HOST(PGPUV) #endif ENDIF - IF (PRESENT(PGP2) .AND. LUPDATE_PGP2) THEN + IF (LUPDATE_PGP2) THEN #ifdef OMPGPU #endif #ifdef ACCGPU !$ACC UPDATE HOST(PGP2) #endif ENDIF - IF (PRESENT(PGP3A) .AND. LUPDATE_PGP3A) THEN + IF (LUPDATE_PGP3A) THEN #ifdef OMPGPU #endif #ifdef ACCGPU !$ACC UPDATE HOST(PGP3A) #endif ENDIF - IF (PRESENT(PGP3B) .AND. LUPDATE_PGP3B) THEN + IF (LUPDATE_PGP3B) THEN #ifdef OMPGPU #endif #ifdef ACCGPU