1#ifndef __COMMON_KOKKOS_GET_POLICY_HPP__
2#define __COMMON_KOKKOS_GET_POLICY_HPP__
4#include <Kokkos_Core.hpp>
5#include <common/common.hpp>
6#include <common/env_var.hpp>
10 template <
typename T>
struct TagDetector
12 KOKKOS_FUNCTION
void operator()(
14 const Kokkos::TeamPolicy<ComputeSpace>::member_type& team_handle)
const
28 TagDetector() =
default;
35 template <
typename FunctorType,
typename Tag =
int>
36 [[deprecated]] Kokkos::TeamPolicy<ComputeSpace, Tag>
37 get_policy(
const FunctorType& f, std::size_t range,
bool reduce =
false)
40 Kokkos::TeamPolicy<Tag> _policy;
42 const auto recommended_team_size =
43 _policy.team_size_recommended(f, Kokkos::ParallelForTag{});
45 const auto team_size =
48 const auto league_size =
49 (
static_cast<int>(range) + team_size - 1) / team_size;
51 return Kokkos::TeamPolicy<ComputeSpace, Tag>(league_size, team_size);
54 template <
typename Tag =
int>
55 [[deprecated]] Kokkos::TeamPolicy<ComputeSpace, Tag>
58 auto f = TagDetector<Tag>();
62 template <
typename Tag =
void>
63 Kokkos::TeamPolicy<ComputeSpace, Tag>
66 const auto _league_size =
read_env_or(
"BIOMC_LEAGUE_SIZE", league_size);
67 return Kokkos::TeamPolicy<ComputeSpace, Tag>(_league_size, Kokkos::AUTO);
Definition config_loader.hpp:8
T read_env_or(std::string_view varname, T vdefault)
Wrapper arround get_env to get envariable with fallback to default.
Definition env_var.hpp:12
Kokkos::TeamPolicy< ComputeSpace, Tag > get_policy(const FunctorType &f, std::size_t range, bool reduce=false)
Definition kokkos_getpolicy.hpp:37
Kokkos::TeamPolicy< ComputeSpace, Tag > get_policy_team(std::size_t league_size=1)
Definition kokkos_getpolicy.hpp:64