RAJA
RAJA provides a collection of platform portability abstractions for C++ HPC applications.
Classes | Namespaces | Typedefs | Functions
forall.hpp File Reference
#include "RAJA/pattern/detail/TypeTraits.hpp"
#include "RAJA/pattern/params/reducer.hpp"
#include "RAJA/util/CombiningAdapter.hpp"
#include "camp/camp.hpp"
#include "camp/concepts.hpp"
#include "camp/tuple.hpp"
#include "RAJA/pattern/params/params_base.hpp"
#include "RAJA/pattern/params/kernel_name.hpp"
#include <utility>

Go to the source code of this file.

Classes

struct  RAJA::expt::ForallParamPack< Params >
 
struct  RAJA::expt::ParamMultiplexer
 
struct  RAJA::expt::detail::lambda_traits< R(C::*)(First, Rest...)>
 
struct  RAJA::expt::detail::lambda_traits< R(C::*)(First, Rest...) const >
 
struct  RAJA::expt::detail::is_invocable< F, Args >
 
struct  RAJA::expt::detail::has_empty_op< F, class >
 
struct  RAJA::expt::detail::has_empty_op< F, void_t< decltype(std::declval< F::operator()>)> >
 
struct  RAJA::expt::detail::get_lambda_index_type< F >
 

Namespaces

 RAJA
 
 RAJA::expt
 
 RAJA::expt::detail
 

Typedefs

template<bool... bs>
using RAJA::expt::detail::all_true = std::is_same< bool_pack< bs..., true >, bool_pack< true, bs... > >
 
template<typename Base , typename... Ts>
using RAJA::expt::detail::check_types_derive_base = all_true< std::is_convertible< Ts, Base >::value... >
 
template<class... >
using RAJA::expt::detail::void_t = void
 

Functions

template<typename... Params>
constexpr RAJA_HOST_DEVICE auto RAJA::expt::detail::filter_reducers (camp::tuple< Params... > &params)
 
template<typename ExecPol , typename ParamTuple , camp::idx_t... Seq, typename... Args>
void RAJA::expt::detail::resolve_params_helper (ParamTuple &params_tuple, const camp::idx_seq< Seq... > &, Args &&... args)
 
template<typename ExecPol , typename... Params, typename... Args>
void RAJA::expt::detail::resolve_params (camp::tuple< Params... > &params_tuple, Args &&... args)
 
template<typename ExecPol , typename ParamTuple , camp::idx_t... Seq, typename... Args>
void RAJA::expt::detail::init_params_helper (ParamTuple &params_tuple, const camp::idx_seq< Seq... > &, Args &&... args)
 
template<typename ExecPol , typename... Params, typename... Args>
void RAJA::expt::detail::init_params (camp::tuple< Params... > &params_tuple, Args &&... args)
 
template<typename ExecPol , typename ParamTuple , camp::idx_t... Seq>
RAJA_HOST_DEVICE void RAJA::expt::detail::combine_params_helper (const camp::idx_seq< Seq... > &, ParamTuple &params_tuple)
 
template<typename EXEC_POL , typename T >
camp::concepts::enable_if< concepts::negate< is_instance_of_Reducer< camp::decay< T > > >, concepts::negate< std::is_same< T, RAJA::detail::Name > > > RAJA::expt::detail::param_combine (EXEC_POL const &, T &, const T &)
 
template<typename ExecPol , typename ParamTuple , camp::idx_t... Seq>
RAJA_HOST_DEVICE void RAJA::expt::detail::combine_params_helper (const camp::idx_seq< Seq... > &, ParamTuple &params_tuple, const ParamTuple &params_tuple_in)
 
template<typename ExecPol , typename... Params>
RAJA_HOST_DEVICE void RAJA::expt::detail::combine_params (camp::tuple< Params... > &params_tuple)
 
template<typename ExecPol , typename... Params>
RAJA_HOST_DEVICE void RAJA::expt::detail::combine_params (camp::tuple< Params... > &params_tuple, const camp::tuple< Params... > &params_tuple_in)
 
template<typename... Ts>
constexpr auto RAJA::expt::make_forall_param_pack_from_tuple (camp::tuple< Ts... > &&tuple)
 
template<camp::idx_t... Seq, typename TupleType >
constexpr auto RAJA::expt::detail::tuple_from_seq (const camp::idx_seq< Seq... > &, TupleType &&tuple)
 
template<typename... Ts>
constexpr auto RAJA::expt::detail::strip_last_elem (camp::tuple< Ts... > &&tuple)
 
template<typename... Args>
constexpr auto RAJA::expt::make_forall_param_pack (Args &&... args)
 
template<typename... Args>
constexpr auto && RAJA::expt::get_lambda (Args &&... args)
 
template<std::size_t name_idx, typename... Args, std::enable_if_t<(name_idx< sizeof...(Args))> * = nullptr>
std::string RAJA::expt::get_kernel_name_string (camp::tuple< Args... > &&tuple_args)
 
template<std::size_t name_idx, typename... Args, std::enable_if_t<(name_idx >=sizeof...(Args))> * = nullptr>
std::string RAJA::expt::get_kernel_name_string (camp::tuple< Args... > &&RAJA_UNUSED_ARG(tuple_args))
 
template<typename... Args, std::size_t... Idx>
std::string RAJA::expt::get_kernel_name_helper (camp::tuple< Args... > &&tuple_args, std::index_sequence< Idx... > RAJA_UNUSED_ARG(i_seq))
 
template<typename... Args>
std::string RAJA::expt::get_kernel_name (Args &&... args)
 
template<class T >
lambda_traits< T >::arg_type * RAJA::expt::detail::lambda_arg_helper (T)
 
template<typename... Ts>
constexpr auto RAJA::expt::detail::list_remove_pointer (const camp::list< Ts... > &)
 
template<typename... Ts>
constexpr auto RAJA::expt::detail::list_add_lvalue_ref (const camp::list< Ts... > &)
 
template<typename... Ts>
constexpr auto RAJA::expt::detail::tuple_to_list (const camp::tuple< Ts... > &)
 
template<typename LAMBDA , typename... EXPECTED_ARGS>
constexpr concepts::enable_if< concepts::negate< has_empty_op< LAMBDA > > > RAJA::expt::detail::check_invocable (LAMBDA &&, const camp::list< EXPECTED_ARGS... > &)
 
template<typename LAMBDA , typename... EXPECTED_ARGS>
constexpr concepts::enable_if< has_empty_op< LAMBDA > > RAJA::expt::detail::check_invocable (LAMBDA &&, const camp::list< EXPECTED_ARGS... > &)
 
template<typename Lambda , typename ForallParams >
constexpr void RAJA::expt::check_forall_optional_args (Lambda &&l, ForallParams &fpp)
 
template<camp::idx_t Idx, typename FP >
constexpr RAJA_HOST_DEVICE auto RAJA::expt::detail::get_lambda_args (FP &fpp) -> decltype(*camp::get< Idx >(fpp.lambda_args()))
 
template<typename Fn , camp::idx_t... Sequence, typename Params , typename... Ts>
CAMP_SUPPRESS_HD_WARN constexpr RAJA_HOST_DEVICE auto RAJA::expt::detail::invoke_with_order (Params &&params, Fn &&f, camp::idx_seq< Sequence... >, Ts &&... extra)
 
template<typename Params , typename Fn , typename... Ts>
constexpr RAJA_HOST_DEVICE auto RAJA::expt::invoke_body (Params &&params, Fn &&f, Ts &&... extra)