1 #ifndef _UnitTestKokkosUtils_h_ 2 #define _UnitTestKokkosUtils_h_ 5 #include <stk_mesh/base/Types.hpp> 6 #include <stk_mesh/base/Bucket.hpp> 7 #include <Kokkos_Core.hpp> 12 template<
class OUTER_LOOP_BODY,
class INNER_LOOP_BODY>
15 for(
const stk::mesh::Bucket* bptr : buckets)
17 const stk::mesh::Bucket& bkt = *bptr;
18 stk::topology topo = bkt.topology();
21 outer_loop_body(topo,*meSCS);
23 for(
size_t j=0; j<bkt.size(); ++j)
25 inner_loop_body(bkt[j], topo, *meSCS);
30 template<
class LOOP_BODY>
33 Kokkos::parallel_for(buckets.size(), [&](
const size_t& i)
35 const stk::mesh::Bucket& bkt = *buckets[i];
36 for(
size_t j=0; j<bkt.size(); ++j)
38 inner_loop_body(bkt[j]);
43 template<
class LOOP_BODY>
48 const stk::mesh::Bucket& bkt = *buckets[team.league_rank()];
49 Kokkos::parallel_for(Kokkos::TeamThreadRange(team, bkt.size()), [&](
const size_t& j)
51 inner_loop_body(bkt[j]);
56 template<
class LOOP_BODY>
58 const LOOP_BODY& inner_loop_body)
62 const stk::mesh::Bucket& bkt = *buckets[team.league_rank()];
63 stk::topology topo = bkt.topology();
65 Kokkos::parallel_for(Kokkos::TeamThreadRange(team, bkt.size()), [&](
const size_t& j)
67 inner_loop_body(bkt[j], topo, *meSCS);
Definition: MasterElement.h:53
void kokkos_thread_team_bucket_loop(const stk::mesh::BucketVector &buckets, LOOP_BODY inner_loop_body)
Definition: UnitTestKokkosUtils.h:44
static MasterElement * get_surface_master_element(const stk::topology &theTopo, int dimension=0, std::string quadType="GaussLegendre")
Definition: MasterElementFactory.C:208
void kokkos_thread_team_bucket_loop_with_topo(const stk::mesh::BucketVector &buckets, const LOOP_BODY &inner_loop_body)
Definition: UnitTestKokkosUtils.h:57
void bucket_loop_serial_only(const stk::mesh::BucketVector &buckets, const OUTER_LOOP_BODY &outer_loop_body, const INNER_LOOP_BODY &inner_loop_body)
Definition: UnitTestKokkosUtils.h:13
Kokkos::TeamPolicy< DeviceSpace > DeviceTeamPolicy
Definition: KokkosInterface.h:27
void kokkos_bucket_loop(const stk::mesh::BucketVector &buckets, LOOP_BODY inner_loop_body)
Definition: UnitTestKokkosUtils.h:31
std::vector< Bucket * > BucketVector
Definition: PromotedPartHelper.h:21
Kokkos::TeamPolicy< DeviceSpace, DynamicScheduleType >::member_type TeamHandleType
Definition: KokkosInterface.h:22