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
15 const Kokkos::TeamPolicy<ComputeSpace>::member_type& team_handle)
const
29 TagDetector() =
default;
36 template <
typename FunctorType,
typename Tag =
int>
37 [[deprecated]] Kokkos::TeamPolicy<ComputeSpace, Tag>
38 get_policy(
const FunctorType& f, std::size_t range,
bool reduce =
false)
41 Kokkos::TeamPolicy<Tag> _policy;
43 const auto recommended_team_size
44 = _policy.team_size_recommended(f, Kokkos::ParallelForTag{});
49 const auto league_size
50 = (
static_cast<int>(range) + team_size - 1) / team_size;
52 return Kokkos::TeamPolicy<ComputeSpace, Tag>(league_size, team_size);
55 template <
typename Tag =
int>
56 [[deprecated]] Kokkos::TeamPolicy<ComputeSpace, Tag>
59 auto f = TagDetector<Tag>();
63 template <
typename Tag =
void>
64 Kokkos::TeamPolicy<ComputeSpace, Tag>
67 const auto _league_size =
read_env_or(
"BIOMC_LEAGUE_SIZE", league_size);
68 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:49
Kokkos::TeamPolicy< ComputeSpace, Tag > get_policy(const FunctorType &f, std::size_t range, bool reduce=false)
Definition kokkos_getpolicy.hpp:38
Kokkos::TeamPolicy< ComputeSpace, Tag > get_policy_team(std::size_t league_size=1)
Definition kokkos_getpolicy.hpp:65