Skip to content
Snippets Groups Projects
Commit 52c3ff64 authored by Wautelet Philippe's avatar Wautelet Philippe
Browse files

Philippe 26/10/2021: OpenACC: add support for 2D arrays in real flat pool

parent f70bb0ca
No related branches found
No related tags found
No related merge requests found
......@@ -91,16 +91,20 @@ MODULE MODE_MNH_ZWORK
INTEGER(KIND=MNHINT64), PRIVATE, SAVE :: NCALL_MNH_GET_ZT1DFLAT = 0
INTEGER(KIND=MNHINT64), PRIVATE, SAVE :: NCALL_MNH_REL_ZT1DFLAT = 0
INTEGER(KIND=MNHINT64), PRIVATE, SAVE :: NCALL_MNH_ALLOCATE_ZT1DFLAT = 0
INTEGER(KIND=MNHINT64), PRIVATE, SAVE :: NCALL_MNH_ALLOCATE_ZT2DFLAT = 0
INTEGER(KIND=MNHINT64), PRIVATE, SAVE :: NCALL_MNH_ALLOCATE_ZT3DFLAT = 0
INTEGER(KIND=MNHINT64), PRIVATE, SAVE :: NTOT_GETSIZE_ZT1DFLAT = 0 !Sum of all requested sizes in MNH_REL_ZT1DFLAT
INTEGER(KIND=MNHINT64), PRIVATE, SAVE :: NTOT_GETSIZE_ZT2DFLAT = 0 !Sum of all requested sizes in MNH_REL_ZT2DFLAT
INTEGER(KIND=MNHINT64), PRIVATE, SAVE :: NTOT_RELSIZE_ZT3DFLAT = 0 !Sum of all released sizes in MNH_REL_ZT1DFLAT
INTEGER(KIND=MNHINT64), PRIVATE, SAVE :: NTOT_ALLOCSIZE_ZT1DFLAT = 0 !Sum of all requested sizes in MNH_ALLOCATE_ZT1DFLAT
INTEGER(KIND=MNHINT64), PRIVATE, SAVE :: NTOT_ALLOCSIZE_ZT2DFLAT = 0 !Sum of all requested sizes in MNH_ALLOCATE_ZT1DFLAT
INTEGER(KIND=MNHINT64), PRIVATE, SAVE :: NTOT_ALLOCSIZE_ZT3DFLAT = 0 !Sum of all requested sizes in MNH_ALLOCATE_ZT3DFLAT
INTERFACE MNH_ALLOCATE_FLAT
MODULE PROCEDURE :: MNH_ALLOCATE_ZT1DFLAT_INT32
MODULE PROCEDURE :: MNH_ALLOCATE_ZT1DFLAT_INT64
MODULE PROCEDURE :: MNH_ALLOCATE_ZT2DFLAT
MODULE PROCEDURE :: MNH_ALLOCATE_ZT3DFLAT
END INTERFACE MNH_ALLOCATE_FLAT
......@@ -1108,6 +1112,36 @@ CONTAINS
END FUNCTION MNH_ALLOCATE_ZT1DFLAT_INT64
FUNCTION MNH_ALLOCATE_ZT2DFLAT( PTAB, KIB, KIE, KJB, KJE ) RESULT ( KINDEX )
REAL, POINTER, CONTIGUOUS , DIMENSION(:,:), INTENT(INOUT) :: PTAB
INTEGER, INTENT(IN) :: KIB
INTEGER, INTENT(IN) :: KIE
INTEGER, INTENT(IN) :: KJB
INTEGER, INTENT(IN) :: KJE
INTEGER :: KINDEX
INTEGER(KIND=MNHINT64) :: ISIZE
INTEGER(KIND=MNHINT64) :: IIB, IIE, IJB, IJE
NCALL_MNH_ALLOCATE_ZT2DFLAT = NCALL_MNH_ALLOCATE_ZT2DFLAT + 1
IIB = KIB
IIE = KIE
IJB = KJB
IJE = KJE
ISIZE = ( IIE - IIB + 1_MNHINT64 ) * ( IJE - IJB + 1_MNHINT64 )
NTOT_ALLOCSIZE_ZT2DFLAT = NTOT_ALLOCSIZE_ZT2DFLAT + ISIZE
kindex = MNH_Get_zt1dflat( isize )
ptab(KIB:KIE, KJB:KJE) => zt1dflat( NT1DFLAT_POOL_R(kindex) : NT1DFLAT_POOL_R(kindex)+isize-1 )
END FUNCTION MNH_ALLOCATE_ZT2DFLAT
FUNCTION MNH_ALLOCATE_ZT3DFLAT( PTAB, KIB, KIE, KJB, KJE, KKB, KKE ) RESULT ( KINDEX )
REAL, POINTER, CONTIGUOUS , DIMENSION(:,:,:), INTENT(INOUT) :: PTAB
......@@ -1148,10 +1182,11 @@ CONTAINS
SUBROUTINE PRINT_FLATPOOL_STATS()
cmnhmsg(1) = 'Number of calls for real flat pool:'
Write( cmnhmsg(2), "( ' MNH_GET_ZT1DFLAT = ', I20 )" ) NCALL_MNH_GET_ZT1DFLAT
Write( cmnhmsg(3), "( ' MNH_REL_ZT1DFLAT = ', I20 )" ) NCALL_MNH_REL_ZT1DFLAT
Write( cmnhmsg(4), "( ' MNH_ALLOCATE_ZT1DFLAT = ', I20 )" ) NCALL_MNH_ALLOCATE_ZT1DFLAT
Write( cmnhmsg(5), "( ' MNH_ALLOCATE_ZT3DFLAT = ', I20 )" ) NCALL_MNH_ALLOCATE_ZT3DFLAT
Write( cmnhmsg(2), "( ' MNH_GET_ZT1DFLAT = ', I20 )" ) NCALL_MNH_GET_ZT1DFLAT
Write( cmnhmsg(3), "( ' MNH_ALLOCATE_ZT1DFLAT = ', I20 )" ) NCALL_MNH_ALLOCATE_ZT1DFLAT
Write( cmnhmsg(4), "( ' MNH_ALLOCATE_ZT2DFLAT = ', I20 )" ) NCALL_MNH_ALLOCATE_ZT2DFLAT
Write( cmnhmsg(5), "( ' MNH_ALLOCATE_ZT3DFLAT = ', I20 )" ) NCALL_MNH_ALLOCATE_ZT3DFLAT
Write( cmnhmsg(6), "( ' MNH_REL_ZT1DFLAT = ', I20 )" ) NCALL_MNH_REL_ZT1DFLAT
call Print_msg( NVERB_INFO, 'GEN', 'FLAT_STATS' )
cmnhmsg(1) = 'Maximum sizes for real flat pool:'
......@@ -1164,8 +1199,9 @@ CONTAINS
cmnhmsg(1) = 'Total provided and released sizes for real flat pool (in bytes):'
Write( cmnhmsg(2), "( ' Provided = ', I20 )" ) NTOT_GETSIZE_ZT1DFLAT
Write( cmnhmsg(3), "( ' 1D = ', I20 )" ) NTOT_ALLOCSIZE_ZT1DFLAT
Write( cmnhmsg(4), "( ' 3D = ', I20 )" ) NTOT_ALLOCSIZE_ZT3DFLAT
Write( cmnhmsg(5), "( ' Released = ', I20 )" ) NTOT_RELSIZE_ZT3DFLAT
Write( cmnhmsg(4), "( ' 2D = ', I20 )" ) NTOT_ALLOCSIZE_ZT2DFLAT
Write( cmnhmsg(5), "( ' 3D = ', I20 )" ) NTOT_ALLOCSIZE_ZT3DFLAT
Write( cmnhmsg(6), "( ' Released = ', I20 )" ) NTOT_RELSIZE_ZT3DFLAT
call Print_msg( NVERB_INFO, 'GEN', 'FLAT_STATS' )
END SUBROUTINE PRINT_FLATPOOL_STATS
......
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