Skip to content

Commit

Permalink
Apply "IFS-2867 post receives before sends" to GPU code path
Browse files Browse the repository at this point in the history
  • Loading branch information
wdeconinck committed Sep 1, 2023
1 parent 9a90778 commit e22d0d0
Showing 1 changed file with 33 additions and 34 deletions.
67 changes: 33 additions & 34 deletions src/trans/gpu/internal/sutrle_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,9 @@ SUBROUTINE SUTRLE(PNM,KGL,KLOOP)
! ------------------------------------------------------------------


USE PARKIND1 ,ONLY : JPRD, JPIM
USE MPL_MODULE ,ONLY : MPL_ALLREDUCE, MPL_RECV, MPL_SEND, MPL_BARRIER, MPL_WAIT, &
& JP_NON_BLOCKING_STANDARD
USE PARKIND1 ,ONLY : JPRD, JPIM
USE MPL_MODULE ,ONLY : MPL_ALLREDUCE, MPL_RECV, MPL_SEND, MPL_BARRIER, MPL_WAIT, &
& JP_NON_BLOCKING_STANDARD

USE TPM_GEN ,ONLY : NOUT
USE TPM_DIM ,ONLY : R
Expand Down Expand Up @@ -128,21 +128,6 @@ SUBROUTINE SUTRLE(PNM,KGL,KLOOP)
CALL GSTATS(1141,1)
ENDIF

ISREQ = 0
DO JROC=1,NPRTRV-1
ISEND = MYSETV-JROC
IF (ISEND <= 0) ISEND = ISEND+NPRTRV
ISENDSET = ISEND
CALL SET2PE(ISEND,0,0,MYSETW,ISENDSET)
ISREQ = ISREQ+1
CALL GSTATS(801,0)
CALL MPL_SEND(ZSNDBUFV(1:ISENDSIZE),KDEST=NPRCIDS(ISEND), &
&KMP_TYPE=JP_NON_BLOCKING_STANDARD,KREQUEST=ISENDREQ(ISREQ),&
& KTAG=ITAG,CDSTRING='SUTRLE:')
CALL GSTATS(801,1)
ENDDO


IRREQ=0
DO JROC=1,NPRTRV-1
IRECV = MYSETV+JROC
Expand All @@ -157,6 +142,20 @@ SUBROUTINE SUTRLE(PNM,KGL,KLOOP)
CALL GSTATS(801,1)
ENDDO

ISREQ = 0
DO JROC=1,NPRTRV-1
ISEND = MYSETV-JROC
IF (ISEND <= 0) ISEND = ISEND+NPRTRV
ISENDSET = ISEND
CALL SET2PE(ISEND,0,0,MYSETW,ISENDSET)
ISREQ = ISREQ+1
CALL GSTATS(801,0)
CALL MPL_SEND(ZSNDBUFV(1:ISENDSIZE),KDEST=NPRCIDS(ISEND), &
&KMP_TYPE=JP_NON_BLOCKING_STANDARD,KREQUEST=ISENDREQ(ISREQ),&
& KTAG=ITAG,CDSTRING='SUTRLE:')
CALL GSTATS(801,1)
ENDDO

IF(ISREQ > 0) THEN
CALL GSTATS(801,0)
CALL MPL_WAIT(KREQUEST=ISENDREQ(1:ISREQ), &
Expand Down Expand Up @@ -276,22 +275,6 @@ SUBROUTINE SUTRLE(PNM,KGL,KLOOP)
!$OMP END PARALLEL DO
CALL GSTATS(1141,1)

ISREQ = 0
DO JROC=1,NPRTRW-1
ISEND = MYSETW-JROC
IF (ISEND <= 0) ISEND = ISEND+NPRTRW
ISENDSET = ISEND
CALL SET2PE(ISEND,0,0,ISENDSET,MYSETV)
ISENDSIZE = IPOSW(ISENDSET)
ISREQ = ISREQ+1
CALL GSTATS(801,0)
CALL MPL_SEND(ZSNDBUFW(1:ISENDSIZE,ISENDSET),KDEST=NPRCIDS(ISEND), &
& KMP_TYPE=JP_NON_BLOCKING_STANDARD,KREQUEST=ISENDREQ(ISREQ),&
& KTAG=ITAG,CDSTRING='SUTRLE:')
CALL GSTATS(801,1)
ENDDO


IRREQ = 0
DO JROC=1,NPRTRW-1

Expand All @@ -309,6 +292,22 @@ SUBROUTINE SUTRLE(PNM,KGL,KLOOP)
CALL GSTATS(801,1)
ENDDO

ISREQ = 0
DO JROC=1,NPRTRW-1
ISEND = MYSETW-JROC
IF (ISEND <= 0) ISEND = ISEND+NPRTRW
ISENDSET = ISEND
CALL SET2PE(ISEND,0,0,ISENDSET,MYSETV)
ISENDSIZE = IPOSW(ISENDSET)
ISREQ = ISREQ+1
CALL GSTATS(801,0)
CALL MPL_SEND(ZSNDBUFW(1:ISENDSIZE,ISENDSET),KDEST=NPRCIDS(ISEND), &
& KMP_TYPE=JP_NON_BLOCKING_STANDARD,KREQUEST=ISENDREQ(ISREQ),&
& KTAG=ITAG,CDSTRING='SUTRLE:')
CALL GSTATS(801,1)
ENDDO


IF(ISREQ > 0) THEN
CALL GSTATS(801,0)
CALL MPL_WAIT(KREQUEST=ISENDREQ(1:ISREQ), &
Expand Down

0 comments on commit e22d0d0

Please sign in to comment.