diff --git a/components/homme/src/share/cxx/HybridVCoord.hpp b/components/homme/src/share/cxx/HybridVCoord.hpp index b96237acc04c..7b3712640c4d 100644 --- a/components/homme/src/share/cxx/HybridVCoord.hpp +++ b/components/homme/src/share/cxx/HybridVCoord.hpp @@ -107,11 +107,11 @@ class HybridVCoord auto dp_ij = Homme::subview(dp,igp,jgp); - ColumnOps::column_reduction(kv,dp_ij,ps(igp,jgp)); - kv.team_barrier(); + Real ps_val = 0; + ColumnOps::column_reduction(kv,dp_ij,ps_val); Kokkos::single(Kokkos::PerThread(kv.team),[&](){ - ps(igp,jgp) += hybrid_ai0*ps0; + ps(igp,jgp) = ps_val + hybrid_ai0*ps0; }); }); kv.team_barrier(); diff --git a/components/homme/src/theta-l_kokkos/cxx/CaarFunctorImpl.hpp b/components/homme/src/theta-l_kokkos/cxx/CaarFunctorImpl.hpp index 38f9dc8573d8..fbb97a25b94e 100644 --- a/components/homme/src/theta-l_kokkos/cxx/CaarFunctorImpl.hpp +++ b/components/homme/src/theta-l_kokkos/cxx/CaarFunctorImpl.hpp @@ -343,8 +343,6 @@ struct CaarFunctorImpl { set_rk_stage_data(data); - profiling_resume(); - GPTLstart("caar compute"); int nerr; Kokkos::parallel_reduce("caar loop pre-boundary exchange", m_policy_pre, *this, nerr); @@ -367,7 +365,6 @@ struct CaarFunctorImpl { limiter.run(data.np1); - profiling_pause(); } KOKKOS_INLINE_FUNCTION @@ -550,20 +547,14 @@ struct CaarFunctorImpl { Kokkos::single(Kokkos::PerThread(kv.team),[&]() { pi_i(0)[0] = m_hvcoord.ps0*m_hvcoord.hybrid_ai0; }); - kv.team_barrier(); ColumnOps::column_scan_mid_to_int(kv,dp,pi_i); ColumnOps::compute_midpoint_values(kv,pi_i,pi); - // Barrier so that the buffer shared by pi_i and omega_i is free for - // omega_i to use. - kv.team_barrier(); - Kokkos::single(Kokkos::PerThread(kv.team),[&]() { omega_i(0)[0] = 0.0; }); - kv.team_barrier(); ColumnOps::column_scan_mid_to_int(kv,div_vdp,omega_i); // Average omega_i to midpoints, and change sign, since later @@ -1225,7 +1216,6 @@ struct CaarFunctorImpl { ColumnOps::compute_midpoint_values(kv,prod_x,mgrad_x); ColumnOps::compute_midpoint_values(kv,prod_y,mgrad_y); } - kv.team_barrier(); // Apply pgrad_correction: mgrad += cp*T0*(grad(log(exner))-grad(exner)/exner) (if applicable) if (m_pgrad_correction) { @@ -1244,7 +1234,6 @@ struct CaarFunctorImpl { mgrad_y(ilev) += cp*T0*(grad_tmp_i_y(ilev) - grad_exner_i_y(ilev)/exner_i(ilev)); }); } - kv.team_barrier(); // Compute KE. Also, add fcor to vort auto u = Homme::subview(m_state.m_v,kv.ie,m_data.n0,0,igp,jgp); diff --git a/components/homme/src/theta-l_kokkos/cxx/LimiterFunctor.hpp b/components/homme/src/theta-l_kokkos/cxx/LimiterFunctor.hpp index 7914c0a60e3a..f36966a4bca5 100644 --- a/components/homme/src/theta-l_kokkos/cxx/LimiterFunctor.hpp +++ b/components/homme/src/theta-l_kokkos/cxx/LimiterFunctor.hpp @@ -99,15 +99,11 @@ struct LimiterFunctor { void run (const int& tl) { - profiling_resume(); - GPTLstart("caar limiter"); m_np1 = tl; Kokkos::parallel_for("caar loop dp3d limiter", m_policy_dp3d_lim, *this); Kokkos::fence(); GPTLstop("caar limiter"); - - profiling_pause(); } KOKKOS_INLINE_FUNCTION @@ -130,8 +126,6 @@ struct LimiterFunctor { diff(ilev) = (dp(ilev) - m_dp3d_thresh*dp0(ilev))*spheremp; }); - kv.team_barrier(); - Real min_diff = Kokkos::reduction_identity::min(); auto diff_as_real = Homme::viewAsReal(diff); auto dp_as_real = Homme::viewAsReal(dp); @@ -168,8 +162,6 @@ struct LimiterFunctor { }); } - kv.team_barrier(); - // This loop must be done over physical levels, unless we implement // masks, like it has been done in the E3SM/scream project Real mass_new = 0.0; @@ -193,7 +185,7 @@ struct LimiterFunctor { dp(ilev) = diff(ilev)/spheremp + m_dp3d_thresh*dp0(ilev); vtheta_dp(ilev) *= dp(ilev); }); - } //end of min_diff < 0 + } // end of min_diff < 0 Kokkos::parallel_for(Kokkos::ThreadVectorRange(kv.team,NUM_LEV), [&](const int ilev) {