From 946d4a8faf36b0c3372df61341005bb2d6b1c1d6 Mon Sep 17 00:00:00 2001 From: Juan ESCOBAR <juan.escobar@aero.obs-mip.fr> Date: Wed, 23 Mar 2022 09:35:00 +0100 Subject: [PATCH] Juan 23/03/2022:discretisation.f90, Cray GPU Opt/Bug: replace array-syntax -> do concurrent & add present in kernels --- .../discretisation.f90 | 44 ++++++++----------- 1 file changed, 18 insertions(+), 26 deletions(-) diff --git a/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 b/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 index 3998269cf..cc8363bbd 100644 --- a/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 +++ b/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 @@ -797,23 +797,16 @@ 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 + do concurrent(ii=iib:iie,ij=ijb:ije) 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) ) - end do end do ! do iz=2,ize-1 #ifdef MNH_COMPILER_NVHPC !$acc loop independent collapse(2) #endif - !dir$ concurrent - do ij=ijb,ije - !dir$ concurrent - do ii=iib,iie + do concurrent(ii=iib:iie,ij=ijb:ije) 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) & +zc_k(iz) *Tij * zu_st(ii,ij,iz-1) & @@ -824,19 +817,14 @@ end subroutine construct_vertical_coeff ) end do end do - end do ! iz=ize #ifdef MNH_COMPILER_NVHPC !$acc loop independent collapse(2) -#endif - !dir$ concurrent - do ij=ijb,ije - !dir$ concurrent - do ii=iib,iie +#endif + do concurrent(ii=iib:iie,ij=ijb:ije) 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) ) - end do end do !$acc end kernels endif @@ -2099,9 +2087,12 @@ end subroutine line_Jacobi_mnh tmp_k => Ttridiag_mnh(level)%tmp_k c_k => Ttridiag_mnh(level)%c_k - !$acc kernels + !$acc kernels present(zSr_st,zSu_out_st) iz=1 zSr_st(iib:iie,ijb:ije,iz) = zb_st(iib:iie,ijb:ije,iz) +#ifdef MNH_COMPILER_NVHPC + !$acc loop independent collapse(2) +#endif do iz=2,nz-1 do concurrent(ii=iib:iie,ij=ijb:ije) zSr_st(ii,ij,iz) = zb_st(ii,ij,iz) - zd_k(iz) * ( & @@ -2124,14 +2115,10 @@ 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)) & + do concurrent(ii=iib:iie,ij=ijb:ije) + 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) - end do - end do + end do end do ! iz=nz @@ -2141,8 +2128,13 @@ end subroutine line_Jacobi_mnh ! STEP 2: back substitution !$acc loop seq do iz=nz-1,1,-1 - zSu_out_st(iib:iie,ijb:ije,iz) = zSu_out_st(iib:iie,ijb:ije,iz) & - - c_k(iz) * zSu_out_st(iib:iie,ijb:ije,iz+1) +#ifdef MNH_COMPILER_NVHPC + !$acc loop independent collapse(2) +#endif + do concurrent(ii=iib:iie,ij=ijb:ije) + zSu_out_st(ii,ij,iz) = zSu_out_st(ii,ij,iz) & + - c_k(iz) * zSu_out_st(ii,ij,iz+1) + end do end do !$acc end kernels -- GitLab