12#ifndef ARCANE_ACCELERATOR_VARIABLEVIEWS_H
13#define ARCANE_ACCELERATOR_VARIABLEVIEWS_H
17#include "arcane/utils/ArcaneCxx20.h"
21#include "arcane/core/ItemLocalId.h"
23#include "arcane/core/GroupIndexTable.h"
25#include "arcane/accelerator/AcceleratorGlobal.h"
38template <
typename DataType>
class View1DGetterSetter;
57template <
typename DataType>
65 using ValueType = DataType;
70 ARCCORE_HOST_DEVICE DataViewSetter<DataType> operator[](Int32 index)
const
72 return DataViewSetter<DataType>(m_data.
ptrAt(index));
74 ARCCORE_HOST_DEVICE DataViewSetter<DataType> operator()(Int32 index)
const
76 return DataViewSetter<DataType>(m_data.
ptrAt(index));
97template <
typename DataType>
105 using ValueType = DataType;
127 ARCCORE_HOST_DEVICE
operator Span<DataType>() {
return { m_data.
data(), m_data.size() }; }
136template <
typename _ItemType,
typename _Accessor,
typename _IndexerType,
bool _HasSimd>
140 using Accessor = _Accessor;
144 using ItemType = _ItemType;
145 using IndexerType = _IndexerType;
146 using DataType =
typename _Accessor::ValueType;
147 using DataTypeReturnReference = DataType&;
170 ARCCORE_HOST_DEVICE Accessor
operator[](IndexerType item)
const
172 ARCANE_CHECK_AT(item.asInt32(), m_size);
173 return Accessor(this->m_values + item.asInt32());
177 ARCCORE_HOST_DEVICE Accessor
operator()(IndexerType item)
const
179 ARCANE_CHECK_AT(item.asInt32(), m_size);
180 return Accessor(this->m_values + item.asInt32());
184 ARCCORE_HOST_DEVICE Accessor
value(IndexerType item)
const
186 ARCANE_CHECK_AT(item.asInt32(), m_size);
187 return Accessor(this->m_values + item.asInt32());
191 ARCCORE_HOST_DEVICE
void setValue(IndexerType item,
const DataType& v)
const
193 ARCANE_CHECK_AT(item.asInt32(), m_size);
194 this->m_values[item.asInt32()] = v;
208template <
typename _ItemType,
typename _Accessor>
214 using DataType =
typename _Accessor::ValueType;
215 using Accessor = _Accessor;
216 using ItemType = _ItemType;
218 using DataTypeReturnReference = DataType&;
241 ARCCORE_HOST_DEVICE Accessor
operator[](IndexerType item)
const
243 ARCANE_CHECK_AT(item.asInt32(), m_size);
244 return Accessor(this->m_values + item.asInt32());
248 ARCCORE_HOST_DEVICE Accessor
operator()(IndexerType item)
const
250 ARCANE_CHECK_AT(item.asInt32(), m_size);
251 return Accessor(this->m_values + item.asInt32());
255 ARCCORE_HOST_DEVICE Accessor
value(IndexerType item)
const
257 ARCANE_CHECK_AT(item.asInt32(), m_size);
258 return Accessor(this->m_values + item.asInt32());
262 ARCCORE_HOST_DEVICE
void setValue(IndexerType item,
const DataType& v)
const
264 ARCANE_CHECK_AT(item.asInt32(), m_size);
265 this->m_values[item.asInt32()] = v;
279template <
typename _ItemType,
typename _Accessor>
285 using DataType =
typename _Accessor::ValueType;
286 using Accessor = _Accessor;
287 using ItemType = _ItemType;
289 using DataTypeReturnReference = DataType&;
299 , m_table_view(table_view)
303 ARCCORE_HOST_DEVICE Accessor
operator[](IndexerType item)
const
305 ARCANE_CHECK_AT(item.asInt32(), m_size);
306 return Accessor(this->m_values + item.asInt32());
310 ARCCORE_HOST_DEVICE Accessor
operator()(IndexerType item)
const
312 ARCANE_CHECK_AT(item.asInt32(), m_size);
313 return Accessor(this->m_values + item.asInt32());
317 ARCCORE_HOST_DEVICE Accessor
value(IndexerType item)
const
319 ARCANE_CHECK_AT(item.asInt32(), m_size);
320 return Accessor(this->m_values + item.asInt32());
324 ARCCORE_HOST_DEVICE
void setValue(IndexerType item,
const DataType& v)
const
326 ARCANE_CHECK_AT(item.asInt32(), m_size);
327 this->m_values[item.asInt32()] = v;
333 ARCCORE_HOST_DEVICE Accessor
operator[](ItemLocalIdType lid)
const
335 Int32 index = _toIndex(lid);
336 ARCANE_CHECK_AT(index, m_size);
337 return Accessor(m_values + index);
341 ARCCORE_HOST_DEVICE Accessor
operator()(ItemLocalIdType lid)
const
343 Int32 index = _toIndex(lid);
344 ARCANE_CHECK_AT(index, m_size);
345 return Accessor(m_values + index);
349 ARCCORE_HOST_DEVICE Accessor
value(ItemLocalIdType lid)
const
351 Int32 index = _toIndex(lid);
352 ARCANE_CHECK_AT(index, m_size);
353 return Accessor(m_values + index);
357 ARCCORE_HOST_DEVICE
void setValue(ItemLocalIdType lid,
const DataType& v)
const
359 Int32 index = _toIndex(lid);
360 ARCANE_CHECK_AT(index, m_size);
361 this->m_values[index] = v;
366 ARCCORE_HOST_DEVICE Int32 _toIndex(ItemLocalIdType lid)
const
368 return m_table_view[lid];
386template <
typename _ItemType,
typename _DataType>
392 using ItemType = _ItemType;
393 using DataType = _DataType;
407 typename SimdTypeTraits<DataType>::SimdType
410 typedef typename SimdTypeTraits<DataType>::SimdType SimdType;
415 typename SimdTypeTraits<DataType>::SimdType
418 typedef typename SimdTypeTraits<DataType>::SimdType SimdType;
419 return SimdType(m_values.
data() + simd_item.baseLocalId());
423 ARCCORE_HOST_DEVICE
const DataType&
operator[](IndexerType item)
const
425 return this->m_values[item.asInt32()];
429 ARCCORE_HOST_DEVICE
const DataType&
operator()(IndexerType item)
const
431 return this->m_values[item.asInt32()];
435 ARCCORE_HOST_DEVICE
const DataType&
value(IndexerType item)
const
437 return this->m_values[item.asInt32()];
450template <
typename _ItemType,
typename _DataType>
456 using ItemType = _ItemType;
457 using DataType = _DataType;
467 , m_table_view(table_view)
473 ARCCORE_HOST_DEVICE
const DataType&
operator[](IndexerType item)
const
475 return m_values[item.asInt32()];
479 ARCCORE_HOST_DEVICE
const DataType&
operator()(IndexerType item)
const
481 return m_values[item.asInt32()];
485 ARCCORE_HOST_DEVICE
const DataType&
value(IndexerType item)
const
487 return m_values[item.asInt32()];
491 ARCCORE_HOST_DEVICE
const DataType&
operator[](ItemLocalIdType lid)
const
493 return m_values[_toIndex(lid)];
497 ARCCORE_HOST_DEVICE
const DataType&
operator()(ItemLocalIdType lid)
const
499 return m_values[_toIndex(lid)];
503 ARCCORE_HOST_DEVICE
const DataType&
value(ItemLocalIdType lid)
const
505 return m_values[_toIndex(lid)];
510 ARCCORE_HOST_DEVICE Int32 _toIndex(ItemLocalIdType lid)
const
512 return m_table_view[lid];
529template <
typename _ItemType,
typename _DataType>
535 using ItemType = _ItemType;
536 using DataType = _DataType;
546 , m_table_view(table_view)
552 return this->m_values[i.asInt32()];
558 return m_values[_toIndex(lid)];
562 ARCCORE_HOST_DEVICE
const DataType&
operator()(IndexerType item, Int32 i)
const
564 return m_values[item.asInt32()][i];
568 ARCCORE_HOST_DEVICE
const DataType&
operator()(ItemLocalIdType lid, Int32 i)
const
570 return m_values[_toIndex(lid)][i];
576 return m_values[i.asInt32()];
582 return m_values[_toIndex(lid)];
587 ARCCORE_HOST_DEVICE Int32 _toIndex(ItemLocalIdType lid)
const
589 return m_table_view[lid];
603template <
typename _ItemType,
typename _DataType>
613 using DataType = _DataType;
627 return this->m_values[i.asInt32()];
631 ARCCORE_HOST_DEVICE
const DataType&
operator()(IndexerType item, Int32 i)
const
633 return this->m_values[item.asInt32()][i];
639 return this->m_values[i.asInt32()];
655template <
typename _ItemType,
typename _Accessor,
typename _Indexer>
661 using ItemType = _ItemType;
662 using Accessor = _Accessor;
663 using IndexerType = _Indexer;
664 using DataType =
typename Accessor::ValueType;
665 using DataTypeReturnType =
typename Accessor::DataTypeReturnReference;
675 ARCCORE_HOST_DEVICE DataTypeReturnType
operator[](IndexerType item)
const
677 return DataTypeReturnType(this->m_values[item.asInt32()]);
681 ARCCORE_HOST_DEVICE DataType&
operator()(IndexerType item, Int32 i)
const
683 return this->m_values[item.asInt32()][i];
689 return DataTypeReturnType(this->m_values[item.asInt32()]);
702template <
typename _ItemType,
typename _Accessor>
708 using ItemType = _ItemType;
709 using Accessor = _Accessor;
711 using DataType =
typename Accessor::ValueType;
712 using DataTypeReturnType =
typename Accessor::DataTypeReturnReference;
722 ARCCORE_HOST_DEVICE DataTypeReturnType
operator[](IndexerType item)
const
724 return DataTypeReturnType(this->m_values[item.asInt32()]);
728 ARCCORE_HOST_DEVICE DataType&
operator()(IndexerType item, Int32 i)
const
730 return this->m_values[item.asInt32()][i];
736 return DataTypeReturnType(this->m_values[item.asInt32()]);
749template <
typename _ItemType,
typename _Accessor>
755 using ItemType = _ItemType;
756 using Accessor = _Accessor;
758 using DataType =
typename Accessor::ValueType;
759 using DataTypeReturnType =
typename Accessor::DataTypeReturnReference;
768 , m_table_view(table_view)
774 ARCCORE_HOST_DEVICE DataTypeReturnType
operator[](IndexerType item)
const
776 return DataTypeReturnType(m_values[item.asInt32()]);
780 ARCCORE_HOST_DEVICE DataType&
operator()(IndexerType item, Int32 i)
const
782 return m_values[item.asInt32()][i];
788 return DataTypeReturnType(m_values[item.asInt32()]);
794 ARCCORE_HOST_DEVICE DataTypeReturnType
operator[](ItemLocalIdType lid)
const
796 return DataTypeReturnType(m_values[_toIndex(lid)]);
800 ARCCORE_HOST_DEVICE DataType&
operator()(ItemLocalIdType lid, Int32 i)
const
802 return m_values[_toIndex(lid)][i];
808 return DataTypeReturnType(m_values[_toIndex(lid)]);
813 ARCCORE_HOST_DEVICE Int32 _toIndex(ItemLocalIdType lid)
const
815 return m_table_view[lid];
845template <
typename _ItemType,
typename _Accessor>
851 using ItemType = _ItemType;
852 using Accessor = _Accessor;
854 using DataType =
typename _Accessor::ValueType;
855 using DataTypeReturnReference = DataType&;
891 ARCCORE_HOST_DEVICE Accessor
operator[](IndexerType item)
const
893 ARCANE_CHECK_AT(item.asInt32(), m_size);
894 return Accessor(m_values + item.asInt32());
898 ARCCORE_HOST_DEVICE Accessor
operator()(IndexerType item)
const
900 ARCANE_CHECK_AT(item.asInt32(), m_size);
901 return Accessor(m_values + item.asInt32());
905 ARCCORE_HOST_DEVICE Accessor
value(IndexerType item)
const
907 ARCANE_CHECK_AT(item.asInt32(), m_size);
908 return Accessor(m_values + item.asInt32());
912 ARCCORE_HOST_DEVICE
void setValue(IndexerType item,
const DataType& v)
const
914 ARCANE_CHECK_AT(item.asInt32(), m_size);
915 this->m_values[item.asInt32()] = v;
927template <
typename _ItemType,
typename _Accessor>
933 using ItemType = _ItemType;
934 using Accessor = _Accessor;
936 using DataType =
typename _Accessor::ValueType;
937 using DataTypeReturnReference = DataType&;
948 , m_table_view(table_view)
954 ARCCORE_HOST_DEVICE Accessor
operator[](IndexerType item)
const
956 ARCANE_CHECK_AT(item.asInt32(), m_size);
957 return Accessor(this->m_values + item.asInt32());
961 ARCCORE_HOST_DEVICE Accessor
operator()(IndexerType item)
const
963 ARCANE_CHECK_AT(item.asInt32(), m_size);
964 return Accessor(this->m_values + item.asInt32());
968 ARCCORE_HOST_DEVICE Accessor
value(IndexerType item)
const
970 ARCANE_CHECK_AT(item.asInt32(), m_size);
971 return Accessor(this->m_values + item.asInt32());
975 ARCCORE_HOST_DEVICE
void setValue(IndexerType item,
const DataType& v)
const
977 ARCANE_CHECK_AT(item.asInt32(), m_size);
978 this->m_values[item.asInt32()] = v;
984 ARCCORE_HOST_DEVICE Accessor
operator[](ItemLocalIdType lid)
const
986 Int32 index = _toIndex(lid);
987 ARCANE_CHECK_AT(index, m_size);
988 return Accessor(m_values + index);
992 ARCCORE_HOST_DEVICE Accessor
operator()(ItemLocalIdType lid)
const
994 Int32 index = _toIndex(lid);
995 ARCANE_CHECK_AT(index, m_size);
996 return Accessor(m_values + index);
1000 ARCCORE_HOST_DEVICE Accessor
value(ItemLocalIdType lid)
const
1002 Int32 index = _toIndex(lid);
1003 ARCANE_CHECK_AT(index, m_size);
1004 return Accessor(m_values + index);
1008 ARCCORE_HOST_DEVICE
void setValue(ItemLocalIdType lid,
const DataType& v)
const
1010 Int32 index = _toIndex(lid);
1011 ARCANE_CHECK_AT(index, m_size);
1012 m_values[index] = v;
1017 ARCCORE_HOST_DEVICE Int32 _toIndex(ItemLocalIdType lid)
const
1019 return m_table_view[lid];
1024 DataType* m_values =
nullptr;
1037template <
typename ItemType,
typename DataType>
auto
1040 using Accessor = DataViewSetter<DataType>;
1047template <
typename ItemType,
typename DataType>
auto
1050 using Accessor = DataViewSetter<DataType>;
1058template <
typename ItemType>
auto
1061 using Accessor = DataViewSetter<Real3>;
1068template <
typename ItemType>
auto
1071 using Accessor = DataViewSetter<Real3>;
1079template <
typename ItemType>
auto
1082 using Accessor = DataViewSetter<Real2>;
1089template <
typename ItemType>
auto
1092 using Accessor = DataViewSetter<Real2>;
1100template <
typename ItemType,
typename DataType>
auto
1110template <
typename ItemType,
typename DataType>
auto
1123template <
typename ItemType,
typename DataType>
auto
1133template <
typename ItemType,
typename DataType>
auto
1143template <
typename ItemType>
auto
1153template <
typename ItemType>
auto
1164template <
typename ItemType>
auto
1174template <
typename ItemType>
auto
1185template <
typename ItemType,
typename DataType>
auto
1195template <
typename ItemType,
typename DataType>
auto
1208template <
typename ItemType,
typename DataType>
auto
1217template <
typename ItemType,
typename DataType>
auto
1226template <
typename ItemType,
typename DataType>
auto
1235template <
typename ItemType,
typename DataType>
auto
Déclarations de types sur les entités.
Vue en lecture sur une variable partielle tableau du maillage.
__host__ __device__ const DataType & operator()(IndexerType item, Int32 i) const
Opérateur d'accès pour la i-ème valeur de l'entité item.
__host__ __device__ const SmallSpan< const DataType > operator[](IndexerType i) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const SmallSpan< const DataType > operator[](ItemLocalIdType lid) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const SmallSpan< const DataType > value(ItemLocalIdType lid) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const DataType & operator()(ItemLocalIdType lid, Int32 i) const
Opérateur d'accès pour la i-ème valeur de l'entité item.
__host__ __device__ const SmallSpan< const DataType > value(IndexerType i) const
Opérateur d'accès pour l'entité item.
Vue en écriture sur une variable partielle tableau du maillage.
__host__ __device__ DataTypeReturnType operator[](ItemLocalIdType lid) const
Opérateur d'accès pour l'entité de numéro local lid.
__host__ __device__ DataTypeReturnType operator[](IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ SmallSpan< DataType > value(IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ SmallSpan< DataType > value(ItemLocalIdType lid) const
Opérateur d'accès pour la i-ème valeur de l'entité item.
__host__ __device__ DataType & operator()(ItemLocalIdType lid, Int32 i) const
Opérateur d'accès pour l'entité de numéro local lid.
__host__ __device__ DataType & operator()(IndexerType item, Int32 i) const
Opérateur d'accès pour la i-ème valeur de l'entité item.
__host__ __device__ void setValue(IndexerType item, const DataType &v) const
Positionne la valeur pour l'entité item à v.
__host__ __device__ Accessor operator[](IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ void setValue(ItemLocalIdType lid, const DataType &v) const
Positionne la valeur pour l'entité item à v.
__host__ __device__ Accessor value(ItemLocalIdType lid) const
Opérateur d'accès pour l'entité item.
__host__ __device__ Accessor operator()(ItemLocalIdType lid) const
Opérateur d'accès pour l'entité item.
__host__ __device__ Accessor operator[](ItemLocalIdType lid) const
Opérateur d'accès pour l'entité item.
ItemPartialVariableRealNScalarOutViewT(const ViewBuildInfo &command, IVariable *var, SmallSpan< DataType > v, GroupIndexTableView table_view)
Construit la vue.
__host__ __device__ Accessor operator()(IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ Accessor value(IndexerType item) const
Opérateur d'accès pour l'entité item.
Vue en lecture sur une variable partielle scalaire du maillage.
__host__ __device__ const DataType & operator()(ItemLocalIdType lid) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const DataType & operator[](IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const DataType & value(IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const DataType & value(ItemLocalIdType lid) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const DataType & operator[](ItemLocalIdType lid) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const DataType & operator()(IndexerType item) const
Opérateur d'accès pour l'entité item.
Vue en écriture sur une variable partielle scalaire du maillage.
__host__ __device__ Accessor operator[](IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ void setValue(ItemLocalIdType lid, const DataType &v) const
Positionne la valeur pour l'entité de numéro local lid à v.
__host__ __device__ Accessor operator()(IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ Accessor value(ItemLocalIdType lid) const
Opérateur d'accès pour l'entité de numéro local lid.
__host__ __device__ Accessor value(IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ void setValue(IndexerType item, const DataType &v) const
Positionne la valeur pour l'entité item à v.
__host__ __device__ Accessor operator()(ItemLocalIdType lid) const
Opérateur d'accès pour l'entité de numéro local lid.
__host__ __device__ Accessor operator[](ItemLocalIdType lid) const
Opérateur d'accès pour l'entité de numéro local lid.
Vue en lecture sur une variable tableau du maillage.
__host__ __device__ const SmallSpan< const DataType > operator[](IndexerType i) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const SmallSpan< const DataType > value(IndexerType i) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const DataType & operator()(IndexerType item, Int32 i) const
Opérateur d'accès pour la i-ème valeur de l'entité item.
Vue en écriture sur une variable tableau du maillage.
__host__ __device__ DataTypeReturnType operator[](IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ SmallSpan< DataType > value(IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ DataType & operator()(IndexerType item, Int32 i) const
Opérateur d'accès pour la i-ème valeur de l'entité item.
Vue en écriture sur une variable tableau du maillage.
__host__ __device__ DataTypeReturnType operator[](IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ SmallSpan< DataType > value(IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ DataType & operator()(IndexerType item, Int32 i) const
Opérateur d'accès pour la i-ème valeur de l'entité item.
Vue en écriture sur une variable scalaire de type 'RealN' du maillage.
ItemVariableRealNScalarOutViewT(const ViewBuildInfo &command, IVariable *var, SmallSpan< DataType > v)
Construit la vue.
SimdDirectSetter< DataType > operator()(SimdItemDirectIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel sans indirection.
SimdDirectSetter< DataType > operator[](SimdItemDirectIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel sans indirection.
__host__ __device__ Accessor operator()(IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ Accessor value(IndexerType item) const
Opérateur d'accès pour l'entité item.
SimdSetter< DataType > operator()(SimdItemIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel avec indirection.
__host__ __device__ Accessor operator[](IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ void setValue(IndexerType item, const DataType &v) const
Positionne la valeur pour l'entité item à v.
SimdSetter< DataType > operator[](SimdItemIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel avec indirection.
Vue en lecture sur une variable scalaire du maillage.
SimdTypeTraits< DataType >::SimdType operator[](SimdItemIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel avec indirection.
__host__ __device__ const DataType & operator[](IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const DataType & operator()(IndexerType item) const
Opérateur d'accès pour l'entité item.
SimdTypeTraits< DataType >::SimdType operator[](SimdItemDirectIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel avec indirection.
__host__ __device__ const DataType & value(IndexerType item) const
Opérateur d'accès pour l'entité item.
Vue en écriture sur une variable scalaire du maillage.
__host__ __device__ void setValue(IndexerType item, const DataType &v) const
Positionne la valeur pour l'entité item à v.
__host__ __device__ Accessor value(IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ Accessor operator()(IndexerType item) const
Opérateur d'accès pour l'entité item.
SimdSetter< DataType > operator[](SimdItemIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel avec indirection.
SimdDirectSetter< DataType > operator[](SimdItemDirectIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel sans indirection.
__host__ __device__ Accessor operator[](IndexerType item) const
Opérateur d'accès pour l'entité item.
Vue en écriture sur une variable scalaire du maillage.
__host__ __device__ Accessor value(IndexerType item) const
Opérateur d'accès pour l'entité item.
SimdSetter< DataType > operator[](SimdItemIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel avec indirection.
__host__ __device__ void setValue(IndexerType item, const DataType &v) const
Positionne la valeur pour l'entité item à v.
__host__ __device__ Accessor operator()(IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ Accessor operator[](IndexerType item) const
Opérateur d'accès pour l'entité item.
SimdDirectSetter< DataType > operator[](SimdItemDirectIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel sans indirection.
Classe de base des vues sur les variables.
Classe pour accéder à un tableau 1D d'une vue en lecture/écriture.
Classe pour accéder à un tableau 1D d'une vue en lecture/écriture.
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.
GroupIndexTableView tableView() const
Vue sur table d'indirection du groupe.
GroupIndexTableView tableView() const
Vue sur table d'indirection du groupe.
Vue en écriture sur une variable scalaire de type 'RealN' du maillage.
Vue en lecture sur une variable scalaire du maillage.
Vue en écriture sur une variable scalaire du maillage.
Variable scalaire sur un type d'entité du maillage.
Variable scalaire sur un type d'entité du maillage.
Variable tableau sur un type d'entité du maillage.
Variable scalaire sur un type d'entité du maillage.
Objet permettant de positionner les valeurs d'un vecteur SIMD.
Index vectoriel sans indirection pour un type d'entité
Index vectoriel avec indirection pour un type d'entité. TODO: stocker les index dans un registre vect...
const SimdIndexType &ARCANE_RESTRICT simdLocalIds() const
Liste des numéros locaux des entités de l'instance.
IVariable * variable() const
Variable associée.
Vue pour un tableau 2D dont la taille est un 'Int32'.
Vue d'un tableau d'éléments de type T.
constexpr __host__ __device__ SizeType size() const noexcept
Retourne la taille du tableau.
constexpr __host__ __device__ pointer data() const noexcept
Pointeur sur le début de la vue.
constexpr __host__ __device__ pointer ptrAt(SizeType index) const
Addresse du index-ème élément.
__host__ __device__ void copy(const U ©_array)
Recopie le tableau copy_array dans 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.
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.