Skip to content
Snippets Groups Projects
Commit 2275bef8 authored by RODIER Quentin's avatar RODIER Quentin
Browse files

Quentin 02/10/2024: OpenACC opti, reverse loops on JIJ/JK to avoid a compiler...

Quentin 02/10/2024: OpenACC opti, reverse loops on JIJ/JK to avoid a compiler problem on reduction of ZMAX_TSTEP; parallelized only on NIJT
parent 8cae80af
No related branches found
No related tags found
No related merge requests found
...@@ -497,13 +497,13 @@ DO WHILE (ANY(ZREMAINT>0.)) ...@@ -497,13 +497,13 @@ DO WHILE (ANY(ZREMAINT>0.))
ENDIF ENDIF
!$acc kernels !$acc kernels
ZMAX_TSTEP(:) = ZREMAINT(:) ZMAX_TSTEP(:) = ZREMAINT(:)
!QR: gives wrong result with acc loop independent. !QR: need of reversed order of loop (JIJ>JK) to avoid bug on Nvidia reduction of ZMAX_TSTEP
! Tested with smaller kernels: execution crashes ! Tested with smaller kernels: execution crashes with
! call to cuEventSynchronize returned error 700: Illegal address ! call to cuEventSynchronize returned error 700: Illegal address
! acc loop independent collapse(2) !$acc loop independent
! TODO: NEXT DO BLOCS ARE SEQUENTIAL FOR NOW DO JIJ = IIJB,IIJE
DO JK = IKTB,IKTE !$acc loop seq
DO JIJ = IIJB,IIJE DO JK = IKTB,IKTE
IF(PRXT(JIJ,JK)>ICED%XRTMIN(KSPE) .AND. ZWSED(JIJ, JK)>1.E-20 .AND. ZREMAINT(JIJ)>0.) THEN IF(PRXT(JIJ,JK)>ICED%XRTMIN(KSPE) .AND. ZWSED(JIJ, JK)>1.E-20 .AND. ZREMAINT(JIJ)>0.) THEN
ZMAX_TSTEP(JIJ) = MIN(ZMAX_TSTEP(JIJ), PARAMI%XSPLIT_MAXCFL * PRHODREF(JIJ, JK) * & ZMAX_TSTEP(JIJ) = MIN(ZMAX_TSTEP(JIJ), PARAMI%XSPLIT_MAXCFL * PRHODREF(JIJ, JK) * &
& PRXT(JIJ, JK) * PDZZ(JIJ, JK) / ZWSED(JIJ, JK)) & PRXT(JIJ, JK) * PDZZ(JIJ, JK) / ZWSED(JIJ, JK))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment