From ee1cba5bb4db23f8243f83bbab8d908c88a3a8c2 Mon Sep 17 00:00:00 2001 From: ESCOBAR Juan <escj@nuwa> Date: Thu, 19 May 2022 12:12:33 +0200 Subject: [PATCH] Juan 19/05/2022:*/turb.f90, Bug Nvhpc22.2 seg-fault, array syntax -> do conc & some acc -> acc_nv for Cray Opt --- src/MNH/turb.f90 | 14 +++++++++----- src/ZSOLVER/turb.f90 | 16 ++++++++++------ 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/MNH/turb.f90 b/src/MNH/turb.f90 index 8ac7c1bb9..b2f17b808 100644 --- a/src/MNH/turb.f90 +++ b/src/MNH/turb.f90 @@ -1894,7 +1894,8 @@ CALL MNH_MEM_GET( zdrvsatdt, size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) ) - ZDRVSATDT(:,:,:) & ) #else -DO CONCURRENT( JI=1:JIU,JJ=1:JJU,JK=1:JKU) +!$acc_nv loop independent collapse(3) +DO CONCURRENT(JI=1:JIU,JJ=1:JJU,JK=1:JKU) PATHETA(JI,JJ,JK)= PAMOIST(JI,JJ,JK) * PEXN(JI,JJ,JK) * & ( ( ZRVSAT(JI,JJ,JK) - PRT(JI,JJ,JK,1) ) * PLOCPEXN(JI,JJ,JK) / & ( 1. + ZDRVSATDT(JI,JJ,JK) * PLOCPEXN(JI,JJ,JK) ) * & @@ -1908,13 +1909,16 @@ DO CONCURRENT( JI=1:JIU,JJ=1:JJU,JK=1:JKU) ) ENDDO #endif +!$acc end kernels !* 1.7 Lv/Cph/Exner at t-1 ! - PLOCPEXN(:,:,:) = PLOCPEXN(:,:,:) / PEXN(:,:,:) +!$acc kernels present(PLOCPEXN) +!$acc_nv loop independent collapse(3) +DO CONCURRENT(JI=1:JIU,JJ=1:JJU,JK=1:JKU) + PLOCPEXN(JI,JJ,JK) = PLOCPEXN(JI,JJ,JK) / PEXN(JI,JJ,JK) +END DO !$acc end kernels - - if ( mppdb_initialized ) then !Check all out arrays call Mppdb_check( plocpexn, "Compute_function_thermo end:plocpexn" ) @@ -2038,7 +2042,7 @@ ELSE !* 3.1 BL89 mixing length ! ------------------ CASE ('BL89','RM17') -!$acc kernels +!$acc kernels present(ZSHEAR) ZSHEAR(:, :, : ) = 0. !$acc end kernels CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM_CLOUD) diff --git a/src/ZSOLVER/turb.f90 b/src/ZSOLVER/turb.f90 index 30c95d75e..b4a4fff2c 100644 --- a/src/ZSOLVER/turb.f90 +++ b/src/ZSOLVER/turb.f90 @@ -1875,7 +1875,7 @@ CALL MNH_MEM_GET( zdrvsatdt, size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) ) END DO #endif !$acc end kernels -!$acc kernels present(ZRVSAT,ZDRVSATDT) +!$acc kernels present_cr(ZRVSAT,ZDRVSATDT) ! !* 1.3 saturation mixing ratio at t ! @@ -1906,7 +1906,8 @@ CALL MNH_MEM_GET( zdrvsatdt, size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) ) - ZDRVSATDT(:,:,:) & ) #else -DO CONCURRENT( JI=1:JIU,JJ=1:JJU,JK=1:JKU) +!$acc_nv loop independent collapse(3) +DO CONCURRENT(JI=1:JIU,JJ=1:JJU,JK=1:JKU) PATHETA(JI,JJ,JK)= PAMOIST(JI,JJ,JK) * PEXN(JI,JJ,JK) * & ( ( ZRVSAT(JI,JJ,JK) - PRT(JI,JJ,JK,1) ) * PLOCPEXN(JI,JJ,JK) / & ( 1. + ZDRVSATDT(JI,JJ,JK) * PLOCPEXN(JI,JJ,JK) ) * & @@ -1920,13 +1921,16 @@ DO CONCURRENT( JI=1:JIU,JJ=1:JJU,JK=1:JKU) ) ENDDO #endif +!$acc end kernels !* 1.7 Lv/Cph/Exner at t-1 ! - PLOCPEXN(:,:,:) = PLOCPEXN(:,:,:) / PEXN(:,:,:) +!$acc kernels present(PLOCPEXN) +!$acc_nv loop independent collapse(3) +DO CONCURRENT(JI=1:JIU,JJ=1:JJU,JK=1:JKU) + PLOCPEXN(JI,JJ,JK) = PLOCPEXN(JI,JJ,JK) / PEXN(JI,JJ,JK) +END DO !$acc end kernels - - if ( mppdb_initialized ) then !Check all out arrays call Mppdb_check( plocpexn, "Compute_function_thermo end:plocpexn" ) @@ -2050,7 +2054,7 @@ ELSE !* 3.1 BL89 mixing length ! ------------------ CASE ('BL89','RM17') -!$acc kernels +!$acc kernels present(ZSHEAR) ZSHEAR(:, :, : ) = 0. !$acc end kernels CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM_CLOUD) -- GitLab