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

Juan 23/03/2022:discretisation.f90, Cray GPU Opt/Bug: replace array-syntax ->...

Juan 23/03/2022:discretisation.f90, Cray GPU Opt/Bug: replace array-syntax -> do concurrent & add present in kernels
parent 5f047804
No related branches found
No related tags found
1 merge request!4Jean Wurtz 30/04/2025 : Bugfixes mainly for TEB and for simple precision
...@@ -797,23 +797,16 @@ end subroutine construct_vertical_coeff ...@@ -797,23 +797,16 @@ end subroutine construct_vertical_coeff
#ifdef MNH_COMPILER_NVHPC #ifdef MNH_COMPILER_NVHPC
!$acc loop independent collapse(2) !$acc loop independent collapse(2)
#endif #endif
!dir$ concurrent do concurrent(ii=iib:iie,ij=ijb:ije)
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 ) & 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) ) +zb_k(iz) *Tij * zu_st(ii,ij,iz+1) )
end do
end do end do
! !
do iz=2,ize-1 do iz=2,ize-1
#ifdef MNH_COMPILER_NVHPC #ifdef MNH_COMPILER_NVHPC
!$acc loop independent collapse(2) !$acc loop independent collapse(2)
#endif #endif
!dir$ concurrent do concurrent(ii=iib:iie,ij=ijb:ije)
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) & 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) & +zb_k(iz) *Tij * zu_st(ii,ij,iz+1) &
+zc_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 ...@@ -824,19 +817,14 @@ end subroutine construct_vertical_coeff
) )
end do end do
end do end do
end do
! !
iz=ize iz=ize
#ifdef MNH_COMPILER_NVHPC #ifdef MNH_COMPILER_NVHPC
!$acc loop independent collapse(2) !$acc loop independent collapse(2)
#endif #endif
!dir$ concurrent do concurrent(ii=iib:iie,ij=ijb:ije)
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) & 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) ) +zc_k(iz) *Tij * zu_st(ii,ij,iz-1) )
end do
end do end do
!$acc end kernels !$acc end kernels
endif endif
...@@ -2099,9 +2087,12 @@ end subroutine line_Jacobi_mnh ...@@ -2099,9 +2087,12 @@ end subroutine line_Jacobi_mnh
tmp_k => Ttridiag_mnh(level)%tmp_k tmp_k => Ttridiag_mnh(level)%tmp_k
c_k => Ttridiag_mnh(level)%c_k c_k => Ttridiag_mnh(level)%c_k
!$acc kernels !$acc kernels present(zSr_st,zSu_out_st)
iz=1 iz=1
zSr_st(iib:iie,ijb:ije,iz) = zb_st(iib:iie,ijb:ije,iz) 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 iz=2,nz-1
do concurrent(ii=iib:iie,ij=ijb:ije) do concurrent(ii=iib:iie,ij=ijb:ije)
zSr_st(ii,ij,iz) = zb_st(ii,ij,iz) - zd_k(iz) * ( & zSr_st(ii,ij,iz) = zb_st(ii,ij,iz) - zd_k(iz) * ( &
...@@ -2124,14 +2115,10 @@ end subroutine line_Jacobi_mnh ...@@ -2124,14 +2115,10 @@ end subroutine line_Jacobi_mnh
#ifdef MNH_COMPILER_NVHPC #ifdef MNH_COMPILER_NVHPC
!$acc loop independent collapse(2) !$acc loop independent collapse(2)
#endif #endif
!dir$ concurrent do concurrent(ii=iib:iie,ij=ijb:ije)
do ij=ijb,ije zSu_out_st(ii,ij,iz) = (zSr_st(ii,ij,iz) / (Tijs*zd_k(iz)) &
!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) - zSu_out_st(ii,ij,iz-1)*zc_k(iz)) / tmp_k(iz)
end do end do
end do
end do end do
! !
iz=nz iz=nz
...@@ -2141,8 +2128,13 @@ end subroutine line_Jacobi_mnh ...@@ -2141,8 +2128,13 @@ end subroutine line_Jacobi_mnh
! STEP 2: back substitution ! STEP 2: back substitution
!$acc loop seq !$acc loop seq
do iz=nz-1,1,-1 do iz=nz-1,1,-1
zSu_out_st(iib:iie,ijb:ije,iz) = zSu_out_st(iib:iie,ijb:ije,iz) & #ifdef MNH_COMPILER_NVHPC
- c_k(iz) * zSu_out_st(iib:iie,ijb:ije,iz+1) !$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 end do
!$acc end kernels !$acc end kernels
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment