From c0201d6aa08d72191929b23aa034598a2e31a16f Mon Sep 17 00:00:00 2001 From: ESCOBAR Juan <escj@nuwa> Date: Mon, 14 Mar 2022 19:08:13 +0100 Subject: [PATCH] Juan 14/03/2022:tensor/discretisation.f90,Bypass Cray compiler Bug, replace pointer scalar & add acc present --- .../discretisation.f90 | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 b/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 index 295e13e96..6ea00fada 100644 --- a/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 +++ b/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 @@ -693,7 +693,7 @@ end subroutine construct_vertical_coeff zr_st => r%st zb_st => b%st - !$acc kernels + !$acc kernels present(zr_st,zb_st) zr_st(iib:iie,ijb:ije,ikb:ike) = zb_st(iib:iie,ijb:ije,ikb:ike) - zr_st(iib:iie,ijb:ije,ikb:ike) !$acc end kernels endif @@ -2024,6 +2024,9 @@ end subroutine line_Jacobi_mnh type(Temp_tridiag_mnh) , save , dimension(max_lev) :: Ttridiag_mnh + real(kind=rl) :: Tijs + + if (LUseT ) then ! Calculate r_i = b_i - A_{ij} u_i @@ -2080,7 +2083,7 @@ end subroutine line_Jacobi_mnh endif Tij=>Ttridiag_mnh(level)%Tij - alpha_div_Tij=>Ttridiag_mnh(level)%alpha_div_Tij + Tijs = Tij ! Bypass Cray Bug with allocatable/scalair pointer tmp_k => Ttridiag_mnh(level)%tmp_k c_k => Ttridiag_mnh(level)%c_k @@ -2101,21 +2104,21 @@ end subroutine line_Jacobi_mnh ! Thomas algorithm ! iz = 1 - zSu_out_st(iib:iie,ijb:ije,iz) = zSr_st(iib:iie,ijb:ije,iz) / (tmp_k(iz)*Tij*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 !$acc loop independent collapse(2) do ij=ijb,ije do ii=iib,iie - zSu_out_st(ii,ij,iz) = (zSr_st(ii,ij,iz) / (Tij*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) end do end do end do ! iz=nz - zSu_out_st(iib:iie,ijb:ije,iz) = (zSr_st(iib:iie,ijb:ije,iz) / (Tij*zd_k(iz)) & + zSu_out_st(iib:iie,ijb:ije,iz) = (zSr_st(iib:iie,ijb:ije,iz) / (Tijs*zd_k(iz)) & - zSu_out_st(iib:iie,ijb:ije,iz-1)*zc_k(iz)) / tmp_k(iz) ! STEP 2: back substitution -- GitLab