44#ifndef PANZER_HIERARCHIC_PARALLELISM_HPP
45#define PANZER_HIERARCHIC_PARALLELISM_HPP
47#include "Phalanx_KokkosDeviceTypes.hpp"
79 const int& vector_size,
80 const int& fad_vector_size,
81 const bool force_override_safety=
false);
98 template<
typename Scalar>
122 const bool& fad_use_shared_memory);
124 template<
typename Scalar>
131 template<
typename ScalarT,
typename ... TeamPolicyProperties>
132 Kokkos::TeamPolicy<TeamPolicyProperties...>
teamPolicy(
const int& league_size)
134 const int tmp_vector_size = this->
template vectorSize<ScalarT>();
137 return Kokkos::TeamPolicy<TeamPolicyProperties...>(league_size,Kokkos::AUTO(),
140 return Kokkos::TeamPolicy<TeamPolicyProperties...>(league_size,
team_size_,tmp_vector_size);
144 template<
typename ScalarT,
typename ... TeamPolicyProperties,
typename ExecSpace>
145 Kokkos::TeamPolicy<ExecSpace, TeamPolicyProperties...>
teamPolicy(ExecSpace exec_space,
const int& league_size)
147 const int tmp_vector_size = this->
template vectorSize<ScalarT>();
150 return Kokkos::TeamPolicy<TeamPolicyProperties...>(exec_space,league_size,Kokkos::AUTO(),
153 return Kokkos::TeamPolicy<TeamPolicyProperties...>(exec_space,league_size,
team_size_,tmp_vector_size);
Singleton class for accessing kokkos hierarchical parallelism parameters.
int vectorSize() const
Returns the vector size. Specialized for AD scalar types.
int team_size_
If true, the team size is set with Kokkos::AUTO()
Kokkos::TeamPolicy< ExecSpace, TeamPolicyProperties... > teamPolicy(ExecSpace exec_space, const int &league_size)
Returns a TeamPolicy for hierarchic parallelism using an exec_space instance (for cuda streams).
static HP & inst()
Private ctor.
int vector_size_
User specified team size.
void setUseSharedMemory(const bool &use_shared_memory, const bool &fad_use_shared_memory)
Tell kokkos kernels if they should use shared memory. This is very problem dependent.
bool useSharedMemory() const
void resetSizes()
Reset the sizes to default.
Kokkos::TeamPolicy< TeamPolicyProperties... > teamPolicy(const int &league_size)
Returns a TeamPolicy for hierarchic parallelism.
bool fad_use_shared_memory_
Use shared memory kokkos kernels for non-fad types.
bool use_shared_memory_
FAD vector size.
HP()
Use shared memory kokkos kernels for fad types.
int fad_vector_size_
Default vector size for non-AD types.
void overrideSizes(const int &team_size, const int &vector_size, const int &fad_vector_size, const bool force_override_safety=false)