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>>
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>>
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>>
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>>
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>>
133 return Accessor::build(m_values.
ptrAt(idx));
139 return m_values.to1DSpan();
152template <
typename DataType,
typename Extents,
typename LayoutPolicy>
auto
165template <
typename DataType,
typename Extents,
typename LayoutPolicy>
auto
177template <
typename DataType,
typename Extents,
typename LayoutType>
auto
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 ARCCORE_HOST_DEVICE AccessorReturnType operator()(Int32 i, Int32 j, Int32 k, Int32 l) const
Accesseur pour un tableau de rang 4.
constexpr ARCCORE_HOST_DEVICE Span< DataType > to1DSpan() const
Converti en une vue 1D.
constexpr ARCCORE_HOST_DEVICE AccessorReturnType operator()(ArrayIndex< 4 > idx) const
Accesseur pour un tableau de rang 4.
constexpr ARCCORE_HOST_DEVICE AccessorReturnType operator()(ArrayIndex< 1 > idx) const
Accesseur pour un tableau de rang 1.
constexpr ARCCORE_HOST_DEVICE AccessorReturnType operator()(Int32 i) const
Accesseur pour un tableau de rang 1.
constexpr ARCCORE_HOST_DEVICE AccessorReturnType operator[](Int32 i) const
Accesseur pour un tableau de rang 1.
constexpr ARCCORE_HOST_DEVICE AccessorReturnType operator()(Int32 i, Int32 j, Int32 k) const
Accesseur pour un tableau de rang 3.
constexpr ARCCORE_HOST_DEVICE AccessorReturnType operator()(ArrayIndex< 2 > idx) const
Accesseur pour un tableau de rang 2.
constexpr ARCCORE_HOST_DEVICE AccessorReturnType operator[](ArrayIndex< 1 > idx) const
Accesseur pour un tableau de rang 1.
constexpr ARCCORE_HOST_DEVICE AccessorReturnType operator()(ArrayIndex< 3 > idx) const
Accesseur pour un tableau de rang 3.
constexpr ARCCORE_HOST_DEVICE AccessorReturnType operator()(Int32 i, Int32 j) const
Accesseur pour un tableau de rang 2.
Informations pour construire une vue pour les données sur accélérateur.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
constexpr ARCCORE_HOST_DEVICE DataType * ptrAt(Int32 i, Int32 j, Int32 k, Int32 l) const
Pointeur sur la valeur pour l'élément i,j,k.
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.
auto viewIn(RunCommand &cmd, const CellMaterialVariableScalarRef< DataType > &var)
Vue en lecture pour les variables materiaux scalaire.
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.