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

Juan 25/03/2022:tensor/discretisation.f90, Cray GPU opt, exchange do seq/do...

Juan 25/03/2022:tensor/discretisation.f90, Cray GPU opt, exchange do seq/do concurrent loop & 3 nest do conccurrent -> mush faster !!!
parent 7742ab3f
Branches
Tags
1 merge request!4Jean Wurtz 30/04/2025 : Bugfixes mainly for TEB and for simple precision
...@@ -802,11 +802,12 @@ end subroutine construct_vertical_coeff ...@@ -802,11 +802,12 @@ end subroutine construct_vertical_coeff
+zb_k(iz) *Tij * zu_st(ii,ij,iz+1) ) +zb_k(iz) *Tij * zu_st(ii,ij,iz+1) )
end do end do
! !
do iz=2,ize-1 !!$ !$acc loop seq
!!$ 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
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) & 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) &
...@@ -815,8 +816,8 @@ end subroutine construct_vertical_coeff ...@@ -815,8 +816,8 @@ end subroutine construct_vertical_coeff
+ zu_st(ii,ij+1,iz) & + zu_st(ii,ij+1,iz) &
+ zu_st(ii,ij-1,iz) & + zu_st(ii,ij-1,iz) &
) )
end do end do
end do !!$ end do
! !
iz=ize iz=ize
#ifdef MNH_COMPILER_NVHPC #ifdef MNH_COMPILER_NVHPC
...@@ -2093,8 +2094,9 @@ end subroutine line_Jacobi_mnh ...@@ -2093,8 +2094,9 @@ 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
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) * ( & 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-1,ij,iz) + & zSu_in_st(ii-1,ij,iz) + &
...@@ -2110,12 +2112,12 @@ end subroutine line_Jacobi_mnh ...@@ -2110,12 +2112,12 @@ end subroutine line_Jacobi_mnh
iz = 1 iz = 1
zSu_out_st(iib:iie,ijb:ije,iz) = zSr_st(iib:iie,ijb:ije,iz) / (tmp_k(iz)*Tijs*zd_k(iz)) 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 #ifdef MNH_COMPILER_NVHPC
!$acc loop independent collapse(2) !$acc loop independent collapse(2)
#endif #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) = (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
...@@ -2126,12 +2128,12 @@ end subroutine line_Jacobi_mnh ...@@ -2126,12 +2128,12 @@ end subroutine line_Jacobi_mnh
- zSu_out_st(iib:iie,ijb:ije,iz-1)*zc_k(iz)) / tmp_k(iz) - zSu_out_st(iib:iie,ijb:ije,iz-1)*zc_k(iz)) / tmp_k(iz)
! STEP 2: back substitution ! STEP 2: back substitution
!$acc loop seq
do iz=nz-1,1,-1
#ifdef MNH_COMPILER_NVHPC #ifdef MNH_COMPILER_NVHPC
!$acc loop independent collapse(2) !$acc loop independent collapse(2)
#endif #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) & zSu_out_st(ii,ij,iz) = zSu_out_st(ii,ij,iz) &
- c_k(iz) * zSu_out_st(ii,ij,iz+1) - c_k(iz) * zSu_out_st(ii,ij,iz+1)
end do end do
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment