12#ifndef ARCANE_ACCELERATOR_NUMARRAYVIEWS_H
13#define ARCANE_ACCELERATOR_NUMARRAYVIEWS_H
17#include "arcane/utils/NumArray.h"
29template <
typename DataType,
typename Extents,
typename LayoutPolicy>
31template <
typename Accessor,
typename Extents,
typename LayoutPolicy>
55template <
typename Accessor,
typename Extents,
typename LayoutType>
61 using DataType =
typename Accessor::ValueType;
63 using AccessorReturnType =
typename Accessor::AccessorReturnType;
73 template <
typename X = Extents,
typename = std::enable_if_t<X::rank() == 1,
void>>
74 constexpr ARCCORE_HOST_DEVICE AccessorReturnType
operator()(Int32 i)
const
76 return Accessor::build(m_values.
ptrAt(i));
79 template <
typename X = Extents,
typename = std::enable_if_t<X::rank() == 1,
void>>
80 constexpr ARCCORE_HOST_DEVICE AccessorReturnType
operator()(ArrayIndex<1> idx)
const
82 return Accessor::build(m_values.
ptrAt(idx));
85 template <
typename X = Extents,
typename = std::enable_if_t<X::rank() == 1,
void>>
86 constexpr ARCCORE_HOST_DEVICE AccessorReturnType
operator[](Int32 i)
const
88 return Accessor::build(m_values.
ptrAt(i));
91 template <
typename X = Extents,
typename = std::enable_if_t<X::rank() == 1,
void>>
92 constexpr ARCCORE_HOST_DEVICE AccessorReturnType
operator[](ArrayIndex<1> idx)
const
94 return Accessor::build(m_values.
ptrAt(idx));
98 template <
typename X = Extents,
typename = std::enable_if_t<X::rank() == 2,
void>>
99 constexpr ARCCORE_HOST_DEVICE AccessorReturnType
operator()(Int32 i, Int32 j)
const
101 return Accessor::build(m_values.
ptrAt(i, j));
104 template <
typename X = Extents,
typename = std::enable_if_t<X::rank() == 2,
void>>
105 constexpr ARCCORE_HOST_DEVICE AccessorReturnType
operator()(ArrayIndex<2> idx)
const
107 return Accessor::build(m_values.
ptrAt(idx));
111 template <
typename X = Extents,
typename = std::enable_if_t<X::rank() == 3,
void>>
112 constexpr ARCCORE_HOST_DEVICE AccessorReturnType
operator()(Int32 i, Int32 j, Int32 k)
const
114 return Accessor::build(m_values.
ptrAt(i, j, k));
117 template <
typename X = Extents,
typename = std::enable_if_t<X::rank() == 3,
void>>
118 constexpr ARCCORE_HOST_DEVICE AccessorReturnType
operator()(ArrayIndex<3> idx)
const
120 return Accessor::build(m_values.
ptrAt(idx));
124 template <
typename X = Extents,
typename = std::enable_if_t<X::rank() == 4,
void>>
125 constexpr ARCCORE_HOST_DEVICE AccessorReturnType
operator()(Int32 i, Int32 j, Int32 k, Int32 l)
const
127 return Accessor::build(m_values.
ptrAt(i, j, k, l));
130 template <
typename X = Extents,
typename = std::enable_if_t<X::rank() == 4,
void>>
131 constexpr ARCCORE_HOST_DEVICE AccessorReturnType
operator()(ArrayIndex<4> idx)
const
133 return Accessor::build(m_values.
ptrAt(idx));
139 return m_values.to1DSpan();
152template <
typename DataType,
typename Extents,
typename LayoutPolicy>
auto
155 using Accessor = DataViewSetter<DataType>;
165template <
typename DataType,
typename Extents,
typename LayoutPolicy>
auto
177template <
typename DataType,
typename Extents,
typename LayoutType>
auto
180 using Accessor = DataViewGetter<DataType>;
188template <
typename DataType,
typename Extents,
typename LayoutType = DefaultLayout>
192template <
typename DataType,
typename Extents,
typename LayoutType = DefaultLayout>
196template <
typename DataType,
typename Extents,
typename LayoutType = DefaultLayout>
Classe de base des vues sur les 'NumArray'.
Vue en lecture, écriture ou lecture/écriture sur un 'NumArray'.
constexpr __host__ __device__ AccessorReturnType operator()(Int32 i) const
Accesseur pour un tableau de rang 1.
constexpr __host__ __device__ AccessorReturnType operator[](Int32 i) const
Accesseur pour un tableau de rang 1.
constexpr __host__ __device__ AccessorReturnType operator()(Int32 i, Int32 j, Int32 k, Int32 l) const
Accesseur pour un tableau de rang 4.
constexpr __host__ __device__ AccessorReturnType operator()(ArrayIndex< 2 > idx) const
Accesseur pour un tableau de rang 2.
constexpr __host__ __device__ AccessorReturnType operator[](ArrayIndex< 1 > idx) const
Accesseur pour un tableau de rang 1.
constexpr __host__ __device__ AccessorReturnType operator()(ArrayIndex< 4 > idx) const
Accesseur pour un tableau de rang 4.
constexpr __host__ __device__ AccessorReturnType operator()(ArrayIndex< 3 > idx) const
Accesseur pour un tableau de rang 3.
constexpr __host__ __device__ AccessorReturnType operator()(Int32 i, Int32 j, Int32 k) const
Accesseur pour un tableau de rang 3.
constexpr __host__ __device__ AccessorReturnType operator()(Int32 i, Int32 j) const
Accesseur pour un tableau de rang 2.
constexpr __host__ __device__ AccessorReturnType operator()(ArrayIndex< 1 > idx) const
Accesseur pour un tableau de rang 1.
constexpr __host__ __device__ Span< DataType > to1DSpan() const
Converti en une vue 1D.
Informations pour construire une vue pour les données sur accélérateur.
Classe pour accéder à un élément d'une vue en lecture/écriture.
constexpr __host__ __device__ DataType * ptrAt(Int32 i, Int32 j, Int32 k, Int32 l) const
Pointeur sur la valeur pour l'élément i,j,k.
Tableaux multi-dimensionnels pour les types numériques accessibles sur accélérateurs.
MDSpanType mdspan()
Vue multi-dimension sur l'instance.
ConstMDSpanType constMDSpan() const
Vue constante multi-dimension sur l'instance.
Vue d'un tableau d'éléments de type T.
Espace de nom pour l'utilisation des accélérateurs.
auto viewInOut(RunCommand &cmd, CellMaterialVariableScalarRef< DataType > &var)
Vue en lecture/écriture pour les variables materiaux scalaire.
NumArrayView< DataViewSetter< DataType >, Extents, LayoutType > NumArrayOutView
Vue en sortie sur un NumArray.
auto viewIn(RunCommand &cmd, const CellMaterialVariableScalarRef< DataType > &var)
Vue en lecture pour les variables materiaux scalaire.
NumArrayView< DataViewGetter< DataType >, Extents, LayoutType > NumArrayInView
Vue en entrée sur un NumArray.
NumArrayView< DataViewGetterSetter< DataType >, Extents, LayoutType > NumArrayInOutView
Vue en entrée/sortie sur un NumArray.
auto viewOut(RunCommand &cmd, CellMaterialVariableScalarRef< DataType > &var)
Vue en écriture pour les variables materiaux scalaire.
detail::SpanTypeFromSize< conststd::byte, SizeType >::SpanType asBytes(const SpanImpl< DataType, SizeType, Extent > &s)
Converti la vue en un tableau d'octets non modifiables.