Skip to content
Snippets Groups Projects
Commit 8321b0b3 authored by ESCOBAR MUNOZ Juan's avatar ESCOBAR MUNOZ Juan
Browse files

Juan 16/03/2023:ZSOLVER/contrav.f90, Cray OPENACC Opt, pass ztab* by args +...

Juan 16/03/2023:ZSOLVER/contrav.f90, Cray OPENACC Opt, pass ztab* by args + dim in contrav_device/_dim
parent eee733b8
No related branches found
No related tags found
No related merge requests found
...@@ -615,7 +615,64 @@ CALL GET_INDICE_ll( IIB,IJB,IIE,IJE) ...@@ -615,7 +615,64 @@ CALL GET_INDICE_ll( IIB,IJB,IIE,IJE)
IKB=1+JPVEXT IKB=1+JPVEXT
IKE=IKU - JPVEXT IKE=IKU - JPVEXT
!$acc data present( PRUT, PRVT, PRWT, PDXX, PDYY, PDZZ, PDZX, PDZY, PRUCT, PRVCT, PRWCT, Z1, Z2 ) IF (KADV_ORDER == 4 ) THEN
IF( .NOT. LFLAT) THEN
IF ( GFIRST_CALL_CONTRAV_DEVICE ) THEN
GFIRST_CALL_CONTRAV_DEVICE = .FALSE.
NULLIFY(TZHALO2_U)
NULLIFY(TZHALO2_V)
NULLIFY(TZHALO2_DZX)
NULLIFY(TZHALO2_DZY)
CALL INIT_HALO2_ll(TZHALO2_U,1,IIU,IJU,IKU)
CALL INIT_HALO2_ll(TZHALO2_V,1,IIU,IJU,IKU)
CALL INIT_HALO2_ll(TZHALO2_DZX,1,IIU,IJU,IKU)
CALL INIT_HALO2_ll(TZHALO2_DZY,1,IIU,IJU,IKU)
END IF
ZU_EAST => TZHALO2_U%HALO2%EAST
ZDZX_EAST => TZHALO2_DZX%HALO2%EAST
ZV_NORTH => TZHALO2_V%HALO2%NORTH
ZDZY_NORTH => TZHALO2_DZY%HALO2%NORTH
END IF
END IF
CALL CONTRAV_DEVICE_DIM(&
PRUT,PRVT,PRWT,&
PDXX,PDYY,PDZZ,PDZX,PDZY,&
PRUCT,PRVCT,PRWCT,Z1,Z2,&
ZU_EAST,ZV_NORTH,ZDZX_EAST,ZDZY_NORTH)
!Release all memory allocated with MNH_MEM_GET calls since last call to MNH_MEM_POSITION_PIN
CALL MNH_MEM_RELEASE()
IF (MPPDB_INITIALIZED) THEN
!Check all OUT arrays
CALL MPPDB_CHECK(PRUCT,"CONTRAV end:PRUCT")
CALL MPPDB_CHECK(PRVCT,"CONTRAV end:PRVCT")
CALL MPPDB_CHECK(PRWCT,"CONTRAV end:PRWCT")
END IF
CONTAINS
SUBROUTINE CONTRAV_DEVICE_DIM(&
PRUT,PRVT,PRWT,&
PDXX,PDYY,PDZZ,PDZX,PDZY,&
PRUCT,PRVCT,PRWCT,Z1,Z2,&
ZU_EAST,ZV_NORTH,ZDZX_EAST,ZDZY_NORTH)
IMPLICIT NONE
REAL, DIMENSION(IIU, IJU, IKU) :: &
PRUT,PRVT,PRWT,&
PDXX,PDYY,PDZZ,PDZX,PDZY,&
PRUCT,PRVCT,PRWCT,Z1,Z2
REAL :: ZU_EAST(IJU,IKU),ZV_NORTH(IIU,IKU),ZDZX_EAST(IJU,IKU),ZDZY_NORTH(IIU,IKU)
!
! Begin Compute
!
!$acc data present( PRUT, PRVT, PRWT, PDXX, PDYY, PDZZ, PDZX, PDZY, PRUCT, PRVCT, PRWCT, Z1, Z2 ) &
!$acc& present(ZU_EAST,ZV_NORTH,ZDZX_EAST,ZDZY_NORTH)
IF (GDATA_ON_DEVICE) THEN IF (GDATA_ON_DEVICE) THEN
!PW TODO:remplacer (ailleurs aussi...) 1/PDXX... par PINV_PDXX (fait pour la turbulence...) cfr MNH/turb_hor_splt.f90 !PW TODO:remplacer (ailleurs aussi...) 1/PDXX... par PINV_PDXX (fait pour la turbulence...) cfr MNH/turb_hor_splt.f90
...@@ -642,17 +699,17 @@ IF (KADV_ORDER == 4 ) THEN ...@@ -642,17 +699,17 @@ IF (KADV_ORDER == 4 ) THEN
!!$ NULLIFY(TZFIELD_DZY) !!$ NULLIFY(TZFIELD_DZY)
!!$ CALL ADD3DFIELD_ll( TZFIELD_DZX, PDZX, 'CONTRAV::PDZX' ) !!$ CALL ADD3DFIELD_ll( TZFIELD_DZX, PDZX, 'CONTRAV::PDZX' )
!!$ CALL ADD3DFIELD_ll( TZFIELD_DZY, PDZY, 'CONTRAV::PDZY' ) !!$ CALL ADD3DFIELD_ll( TZFIELD_DZY, PDZY, 'CONTRAV::PDZY' )
IF ( GFIRST_CALL_CONTRAV_DEVICE ) THEN !!$ IF ( GFIRST_CALL_CONTRAV_DEVICE ) THEN
GFIRST_CALL_CONTRAV_DEVICE = .FALSE. !!$ GFIRST_CALL_CONTRAV_DEVICE = .FALSE.
NULLIFY(TZHALO2_U) !!$ NULLIFY(TZHALO2_U)
NULLIFY(TZHALO2_V) !!$ NULLIFY(TZHALO2_V)
NULLIFY(TZHALO2_DZX) !!$ NULLIFY(TZHALO2_DZX)
NULLIFY(TZHALO2_DZY) !!$ NULLIFY(TZHALO2_DZY)
CALL INIT_HALO2_ll(TZHALO2_U,1,IIU,IJU,IKU) !!$ CALL INIT_HALO2_ll(TZHALO2_U,1,IIU,IJU,IKU)
CALL INIT_HALO2_ll(TZHALO2_V,1,IIU,IJU,IKU) !!$ CALL INIT_HALO2_ll(TZHALO2_V,1,IIU,IJU,IKU)
CALL INIT_HALO2_ll(TZHALO2_DZX,1,IIU,IJU,IKU) !!$ CALL INIT_HALO2_ll(TZHALO2_DZX,1,IIU,IJU,IKU)
CALL INIT_HALO2_ll(TZHALO2_DZY,1,IIU,IJU,IKU) !!$ CALL INIT_HALO2_ll(TZHALO2_DZY,1,IIU,IJU,IKU)
END IF !!$ END IF
!!$ CALL UPDATE_HALO2_ll(TZFIELD_U, TZHALO2_U, IINFO_ll) !!$ CALL UPDATE_HALO2_ll(TZFIELD_U, TZHALO2_U, IINFO_ll)
!!$ CALL UPDATE_HALO2_ll(TZFIELD_V, TZHALO2_V, IINFO_ll) !!$ CALL UPDATE_HALO2_ll(TZFIELD_V, TZHALO2_V, IINFO_ll)
!!$ CALL UPDATE_HALO2_ll(TZFIELD_DZX, TZHALO2_DZX, IINFO_ll) !!$ CALL UPDATE_HALO2_ll(TZFIELD_DZX, TZHALO2_DZX, IINFO_ll)
...@@ -670,14 +727,14 @@ IF (KADV_ORDER == 4 ) THEN ...@@ -670,14 +727,14 @@ IF (KADV_ORDER == 4 ) THEN
!!$ ALLOCATE(ZU_EAST(IJU,IKU),ZV_NORTH(IIU,IKU),ZDZX_EAST(IJU,IKU),ZDZY_NORTH(IIU,IKU)) !!$ ALLOCATE(ZU_EAST(IJU,IKU),ZV_NORTH(IIU,IKU),ZDZX_EAST(IJU,IKU),ZDZY_NORTH(IIU,IKU))
!!$ !$acc enter data create( zu_east, zv_north, zdzx_east, zdzy_north ) !!$ !$acc enter data create( zu_east, zv_north, zdzx_east, zdzy_north )
!!$ !$acc kernels !!$ !$acc kernels
ZU_EAST => TZHALO2_U%HALO2%EAST !!$ ZU_EAST => TZHALO2_U%HALO2%EAST
ZDZX_EAST => TZHALO2_DZX%HALO2%EAST !!$ ZDZX_EAST => TZHALO2_DZX%HALO2%EAST
ZV_NORTH => TZHALO2_V%HALO2%NORTH !!$ ZV_NORTH => TZHALO2_V%HALO2%NORTH
ZDZY_NORTH => TZHALO2_DZY%HALO2%NORTH !!$ ZDZY_NORTH => TZHALO2_DZY%HALO2%NORTH
!!$ !$acc end kernels !!$ !$acc end kernels
!!$!$acc update device(ZU_EAST,ZV_NORTH,ZDZX_EAST,ZDZY_NORTH) !!$!$acc update device(ZU_EAST,ZV_NORTH,ZDZX_EAST,ZDZY_NORTH)
END IF END IF ! NOT FLAT
END IF END IF ! KADV_ORDER == 4
! !
! !
!* 2. Compute the vertical contravariant components (flat case) !* 2. Compute the vertical contravariant components (flat case)
...@@ -897,15 +954,11 @@ END IF FLAT ...@@ -897,15 +954,11 @@ END IF FLAT
!$acc end data !$acc end data
!Release all memory allocated with MNH_MEM_GET calls since last call to MNH_MEM_POSITION_PIN !
CALL MNH_MEM_RELEASE() ! End Compute
!
IF (MPPDB_INITIALIZED) THEN
!Check all OUT arrays END SUBROUTINE CONTRAV_DEVICE_DIM
CALL MPPDB_CHECK(PRUCT,"CONTRAV end:PRUCT")
CALL MPPDB_CHECK(PRVCT,"CONTRAV end:PRVCT")
CALL MPPDB_CHECK(PRWCT,"CONTRAV end:PRWCT")
END IF
!----------------------------------------------------------------------- !-----------------------------------------------------------------------
END SUBROUTINE CONTRAV_DEVICE END SUBROUTINE CONTRAV_DEVICE
......
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