From 5f047804e8489cc59ea0be7ad9e1a4aca60a1fb1 Mon Sep 17 00:00:00 2001 From: Juan ESCOBAR <juan.escobar@aero.obs-mip.fr> Date: Mon, 21 Mar 2022 18:16:06 +0100 Subject: [PATCH] Juan 21/03/2022: Cray GPU opt in tensor source , add "!dirs$ concurrent" & rewrite none optimum array syntax -> do concurrent --- .../discretisation.f90 | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 b/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 index a81de382a..3998269cf 100644 --- a/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 +++ b/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 @@ -797,7 +797,9 @@ end subroutine construct_vertical_coeff #ifdef MNH_COMPILER_NVHPC !$acc loop independent collapse(2) #endif + !dir$ concurrent do ij=ijb,ije + !dir$ concurrent do ii=iib,iie zv_st(ii,ij,iz) = zd_k(iz)* ( (-zb_k(iz)-zc_k(iz))*Tij * zu_st(ii,ij,iz ) & +zb_k(iz) *Tij * zu_st(ii,ij,iz+1) ) @@ -808,7 +810,9 @@ end subroutine construct_vertical_coeff #ifdef MNH_COMPILER_NVHPC !$acc loop independent collapse(2) #endif + !dir$ concurrent do ij=ijb,ije + !dir$ concurrent do ii=iib,iie zv_st(ii,ij,iz) = zd_k(iz)* ( ((-zb_k(iz)-zc_k(iz))*Tij - 4.0_rl ) * zu_st(ii,ij,iz) & +zb_k(iz) *Tij * zu_st(ii,ij,iz+1) & @@ -826,7 +830,9 @@ end subroutine construct_vertical_coeff #ifdef MNH_COMPILER_NVHPC !$acc loop independent collapse(2) #endif + !dir$ concurrent do ij=ijb,ije + !dir$ concurrent do ii=iib,iie zv_st(ii,ij,iz) = zd_k(iz)* ( (-zb_k(iz)-zc_k(iz))*Tij * zu_st(ii,ij,iz) & +zc_k(iz) *Tij * zu_st(ii,ij,iz-1) ) @@ -2097,11 +2103,13 @@ end subroutine line_Jacobi_mnh iz=1 zSr_st(iib:iie,ijb:ije,iz) = zb_st(iib:iie,ijb:ije,iz) do iz=2,nz-1 - zSr_st(iib:iie,ijb:ije,iz) = zb_st(iib:iie,ijb:ije,iz) - zd_k(iz) * ( & - zSu_in_st(iib+1:iie+1,ijb:ije,iz) + & - zSu_in_st(iib-1:iie-1,ijb:ije,iz) + & - zSu_in_st(iib:iie,ijb+1:ije+1,iz) + & - zSu_in_st(iib:iie,ijb-1:ije-1,iz) ) + do concurrent(ii=iib:iie,ij=ijb:ije) + zSr_st(ii,ij,iz) = zb_st(ii,ij,iz) - zd_k(iz) * ( & + zSu_in_st(ii+1,ij,iz) + & + zSu_in_st(ii-1,ij,iz) + & + zSu_in_st(ii,ij+1,iz) + & + zSu_in_st(ii,ij-1,iz) ) + end do end do iz=nz zSr_st(iib:iie,ijb:ije,iz) = zb_st(iib:iie,ijb:ije,iz) @@ -2116,7 +2124,9 @@ end subroutine line_Jacobi_mnh #ifdef MNH_COMPILER_NVHPC !$acc loop independent collapse(2) #endif + !dir$ concurrent do ij=ijb,ije + !dir$ concurrent do ii=iib,iie zSu_out_st(ii,ij,iz) = (zSr_st(ii,ij,iz) / (Tijs*zd_k(iz)) & - zSu_out_st(ii,ij,iz-1)*zc_k(iz)) / tmp_k(iz) -- GitLab