From dcde071bbb5d0cee9f10f6a7ba82828077cae897 Mon Sep 17 00:00:00 2001 From: Juan ESCOBAR <juan.escobar@aero.obs-mip.fr> Date: Fri, 25 Mar 2022 18:17:46 +0100 Subject: [PATCH] Juan 25/03/2022:tensor/discretisation.f90, Cray GPU opt, exchange do seq/do concurrent loop & 3 nest do conccurrent -> mush faster !!! --- .../discretisation.f90 | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 b/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 index cc8363bbd..21cfd806e 100644 --- a/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 +++ b/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 @@ -802,11 +802,12 @@ end subroutine construct_vertical_coeff +zb_k(iz) *Tij * zu_st(ii,ij,iz+1) ) end do ! - do iz=2,ize-1 +!!$ !$acc loop seq +!!$ do iz=2,ize-1 #ifdef MNH_COMPILER_NVHPC !$acc loop independent collapse(2) #endif - do concurrent(ii=iib:iie,ij=ijb:ije) + do concurrent(ii=iib:iie,ij=ijb:ije,iz=2:ize-1) 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) & @@ -815,8 +816,8 @@ end subroutine construct_vertical_coeff + zu_st(ii,ij+1,iz) & + zu_st(ii,ij-1,iz) & ) - end do - end do + end do +!!$ end do ! iz=ize #ifdef MNH_COMPILER_NVHPC @@ -2093,8 +2094,9 @@ end subroutine line_Jacobi_mnh #ifdef MNH_COMPILER_NVHPC !$acc loop independent collapse(2) #endif - do iz=2,nz-1 - do concurrent(ii=iib:iie,ij=ijb:ije) + do concurrent(ii=iib:iie,ij=ijb:ije) + !$acc loop seq + do iz=2,nz-1 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) + & @@ -2110,12 +2112,12 @@ end subroutine line_Jacobi_mnh iz = 1 zSu_out_st(iib:iie,ijb:ije,iz) = zSr_st(iib:iie,ijb:ije,iz) / (tmp_k(iz)*Tijs*zd_k(iz)) ! - !$acc loop seq - do iz=2,nz-1 #ifdef MNH_COMPILER_NVHPC - !$acc loop independent collapse(2) + !$acc loop independent collapse(2) #endif - do concurrent(ii=iib:iie,ij=ijb:ije) + do concurrent(ii=iib:iie,ij=ijb:ije) + !$acc loop seq + do iz=2,nz-1 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 @@ -2126,12 +2128,12 @@ end subroutine line_Jacobi_mnh - zSu_out_st(iib:iie,ijb:ije,iz-1)*zc_k(iz)) / tmp_k(iz) ! STEP 2: back substitution - !$acc loop seq - do iz=nz-1,1,-1 #ifdef MNH_COMPILER_NVHPC - !$acc loop independent collapse(2) + !$acc loop independent collapse(2) #endif - do concurrent(ii=iib:iie,ij=ijb:ije) + do concurrent(ii=iib:iie,ij=ijb:ije) + !$acc loop seq + do iz=nz-1,1,-1 zSu_out_st(ii,ij,iz) = zSu_out_st(ii,ij,iz) & - c_k(iz) * zSu_out_st(ii,ij,iz+1) end do -- GitLab