RAJA
RAJA provides a collection of platform portability abstractions for C++ HPC applications.
Classes | Namespaces | Typedefs | Functions
View.hpp File Reference

RAJA header file defining a multi-dimensional view class. More...

#include <array>
#include <type_traits>
#include "RAJA/config.hpp"
#include "RAJA/pattern/atomic.hpp"
#include "RAJA/util/IndexLayout.hpp"
#include "RAJA/util/Layout.hpp"
#include "RAJA/util/OffsetLayout.hpp"
#include "RAJA/util/TypedViewBase.hpp"

Go to the source code of this file.

Classes

struct  RAJA::add_offset< layout >
 
struct  RAJA::add_offset< RAJA::TypedLayout< IdxLin, camp::tuple< DimTypes... > > >
 
struct  RAJA::cat_seq< camp::idx_seq< Idxs1... >, camp::idx_seq< Idxs2... > >
 
struct  RAJA::offset_seq< Offset, camp::idx_seq< Idxs... > >
 
struct  RAJA::MultiView< ValueType, LayoutType, P2Pidx, PointerType, NonConstPointerType >
 
struct  RAJA::AtomicViewWrapper< ViewType, AtomicPolicy >
 
struct  RAJA::AtomicViewWrapper< ViewType, RAJA::seq_atomic >
 
struct  RAJA::layout_left
 
struct  RAJA::layout_right
 
struct  RAJA::detail::PermutedViewHelper< std::index_sequence< stride_order_idx... > >
 
struct  RAJA::detail::PermutedViewHelper< layout_right >
 
struct  RAJA::detail::PermutedViewHelper< layout_left >
 

Namespaces

 RAJA
 
 RAJA::detail
 

Typedefs

template<typename ValueType , typename LayoutType , typename PointerType = ValueType*>
using RAJA::View = internal::ViewBase< ValueType, PointerType, LayoutType >
 
template<typename ValueType , typename LayoutType , typename... IndexTypes>
using RAJA::TypedView = internal::TypedViewBase< ValueType, ValueType *, LayoutType, camp::list< IndexTypes... > >
 
template<typename Seq1 , typename Seq2 >
using RAJA::cat_seq_t = typename cat_seq< Seq1, Seq2 >::type
 
template<camp::idx_t Offset, typename Seq >
using RAJA::offset_seq_t = typename offset_seq< Offset, Seq >::type
 

Functions

template<typename IndexType , typename ValueType >
RAJA_HOST_DEVICE constexpr RAJA_INLINE View< ValueType, Layout< 1, IndexType, 0 > > RAJA::make_view (ValueType *ptr)
 
template<size_t n_dims, typename IndexType , typename ValueType , typename... IndexTypes>
RAJA_HOST_DEVICE constexpr RAJA_INLINE View< ValueType, IndexLayout< n_dims, IndexType, IndexTypes... > > RAJA::make_index_view (ValueType *ptr, IndexLayout< n_dims, IndexType, IndexTypes... > index_layout)
 
template<typename Lay , typename Tup , camp::idx_t... Idxs>
RAJA_HOST_DEVICE constexpr RAJA_INLINE auto RAJA::selecttuple (Lay lyout, Tup &&tup, camp::idx_seq< Idxs... >) -> decltype(lyout(camp::get< Idxs >(std::forward< Tup >(tup))...))
 
template<typename Lay , RAJA::Index_type Nth = 0, typename Tup >
RAJA_HOST_DEVICE constexpr RAJA_INLINE auto RAJA::removenth (Lay lyout, Tup &&tup) -> decltype(selecttuple< Lay >(lyout, std::forward< Tup >(tup), cat_seq_t< camp::make_idx_seq_t< Nth >, offset_seq_t< Nth+1, camp::make_idx_seq_t< camp::tuple_size< Tup >::value - Nth - 1 >> > {}))
 
template<typename AtomicPolicy , typename ViewType >
RAJA_HOST_DEVICE constexpr RAJA_INLINE AtomicViewWrapper< ViewType, AtomicPolicy > RAJA::make_atomic_view (ViewType const &view)
 
template<typename T >
RAJA_HOST_DEVICE constexpr RAJA_INLINE auto RAJA::detail::get_last_index (T last)
 
template<typename T0 , typename T1 , typename... Args>
RAJA_HOST_DEVICE constexpr RAJA_INLINE auto RAJA::detail::get_last_index (T0, T1 t1, Args... args)
 
template<std::size_t... idx>
RAJA_HOST_DEVICE constexpr RAJA_INLINE auto RAJA::detail::make_reverse_array (std::index_sequence< idx... >)
 
template<typename meta_layout , typename IndexType = RAJA::Index_type, typename T , typename... Extents>
RAJA_HOST_DEVICE constexpr RAJA_INLINE auto RAJA::make_permuted_view (T *ptr, Extents &&... extents)
 

Detailed Description

RAJA header file defining a multi-dimensional view class.