From 80c770d4eadccb9b820bfb00db5b728281090d9d Mon Sep 17 00:00:00 2001 From: Christian Trott Date: Thu, 26 Jan 2023 12:22:22 -0700 Subject: [PATCH] Intel ICE Sacado: use new HostIterateTile API in Serial --- .../Serial/Kokkos_Serial_Parallel_MDRange.hpp | 31 ++++++++----------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/core/src/Serial/Kokkos_Serial_Parallel_MDRange.hpp b/core/src/Serial/Kokkos_Serial_Parallel_MDRange.hpp index b500993d97..afdecd2f05 100644 --- a/core/src/Serial/Kokkos_Serial_Parallel_MDRange.hpp +++ b/core/src/Serial/Kokkos_Serial_Parallel_MDRange.hpp @@ -33,13 +33,12 @@ class ParallelFor, using iterate_type = typename Kokkos::Impl::HostIterateTile< MDRangePolicy, FunctorType, typename MDRangePolicy::work_tag, void>; - const FunctorType m_functor; - const MDRangePolicy m_mdr_policy; + const iterate_type m_iter; void exec() const { - const typename Policy::member_type e = m_mdr_policy.m_num_tiles; + const typename Policy::member_type e = m_iter.m_rp.m_num_tiles; for (typename Policy::member_type i = 0; i < e; ++i) { - iterate_type(m_mdr_policy, m_functor)(i); + m_iter(i); } } @@ -56,7 +55,7 @@ class ParallelFor, } inline ParallelFor(const FunctorType& arg_functor, const MDRangePolicy& arg_policy) - : m_functor(arg_functor), m_mdr_policy(arg_policy) {} + : m_iter(arg_policy, arg_functor) {} }; template @@ -86,16 +85,14 @@ class ParallelReduce, ReducerType, using iterate_type = typename Kokkos::Impl::HostIterateTile; - - const FunctorType m_functor; - const MDRangePolicy m_mdr_policy; + const iterate_type m_iter; const ReducerType m_reducer; const pointer_type m_result_ptr; inline void exec(reference_type update) const { - const typename Policy::member_type e = m_mdr_policy.m_num_tiles; + const typename Policy::member_type e = m_iter.m_rp.m_num_tiles; for (typename Policy::member_type i = 0; i < e; ++i) { - iterate_type(m_mdr_policy, m_functor, update)(i); + m_iter(i, update); } } @@ -110,14 +107,14 @@ class ParallelReduce, ReducerType, return 1024; } inline void execute() const { - const size_t pool_reduce_size = - Analysis::value_size(ReducerConditional::select(m_functor, m_reducer)); + const size_t pool_reduce_size = Analysis::value_size( + ReducerConditional::select(m_iter.m_func, m_reducer)); const size_t team_reduce_size = 0; // Never shrinks const size_t team_shared_size = 0; // Never shrinks const size_t thread_local_size = 0; // Never shrinks auto* internal_instance = - m_mdr_policy.space().impl_internal_space_instance(); + m_iter.m_rp.space().impl_internal_space_instance(); // Need to lock resize_thread_team_data std::lock_guard lock( internal_instance->m_thread_team_data_mutex); @@ -132,7 +129,7 @@ class ParallelReduce, ReducerType, internal_instance->m_thread_team_data.pool_reduce_local()); typename Analysis::Reducer final_reducer( - &ReducerConditional::select(m_functor, m_reducer)); + &ReducerConditional::select(m_iter.m_func, m_reducer)); reference_type update = final_reducer.init(ptr); @@ -148,8 +145,7 @@ class ParallelReduce, ReducerType, std::enable_if_t::value && !Kokkos::is_reducer::value, void*> = nullptr) - : m_functor(arg_functor), - m_mdr_policy(arg_policy), + : m_iter(arg_policy, arg_functor), m_reducer(InvalidType()), m_result_ptr(arg_result_view.data()) { static_assert(Kokkos::is_view::value, @@ -163,8 +159,7 @@ class ParallelReduce, ReducerType, inline ParallelReduce(const FunctorType& arg_functor, MDRangePolicy arg_policy, const ReducerType& reducer) - : m_functor(arg_functor), - m_mdr_policy(arg_policy), + : m_iter(arg_policy, arg_functor), m_reducer(reducer), m_result_ptr(reducer.view().data()) { /*static_assert( std::is_same< typename ViewType::memory_space