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/core/ViewBuildInfo.h"
26#include "arcane/accelerator/AcceleratorGlobal.h"
39template <
typename DataType>
class View1DGetterSetter;
58template <
typename DataType>
66 using ValueType = DataType;
71 ARCCORE_HOST_DEVICE DataViewSetter<DataType> operator[](Int32 index)
const
73 return DataViewSetter<DataType>(m_data.
ptrAt(index));
75 ARCCORE_HOST_DEVICE DataViewSetter<DataType> operator()(Int32 index)
const
77 return DataViewSetter<DataType>(m_data.
ptrAt(index));
98template <
typename DataType>
106 using ValueType = DataType;
128 ARCCORE_HOST_DEVICE
operator Span<DataType>() {
return { m_data.
data(), m_data.size() }; }
137template <
typename _ItemType,
typename _Accessor,
typename _IndexerType,
bool _HasSimd>
141 using Accessor = _Accessor;
145 using ItemType = _ItemType;
146 using IndexerType = _IndexerType;
147 using DataType =
typename _Accessor::ValueType;
148 using DataTypeReturnReference = DataType&;
171 ARCCORE_HOST_DEVICE Accessor
operator[](IndexerType item)
const
173 ARCANE_CHECK_AT(item.asInt32(), m_size);
174 return Accessor(this->m_values + item.asInt32());
178 ARCCORE_HOST_DEVICE Accessor
operator()(IndexerType item)
const
180 ARCANE_CHECK_AT(item.asInt32(), m_size);
181 return Accessor(this->m_values + item.asInt32());
185 ARCCORE_HOST_DEVICE Accessor
value(IndexerType item)
const
187 ARCANE_CHECK_AT(item.asInt32(), m_size);
188 return Accessor(this->m_values + item.asInt32());
192 ARCCORE_HOST_DEVICE
void setValue(IndexerType item,
const DataType& v)
const
194 ARCANE_CHECK_AT(item.asInt32(), m_size);
195 this->m_values[item.asInt32()] = v;
209template <
typename _ItemType,
typename _Accessor>
215 using DataType =
typename _Accessor::ValueType;
216 using Accessor = _Accessor;
217 using ItemType = _ItemType;
219 using DataTypeReturnReference = DataType&;
242 ARCCORE_HOST_DEVICE Accessor
operator[](IndexerType item)
const
244 ARCANE_CHECK_AT(item.asInt32(), m_size);
245 return Accessor(this->m_values + item.asInt32());
249 ARCCORE_HOST_DEVICE Accessor
operator()(IndexerType item)
const
251 ARCANE_CHECK_AT(item.asInt32(), m_size);
252 return Accessor(this->m_values + item.asInt32());
256 ARCCORE_HOST_DEVICE Accessor
value(IndexerType item)
const
258 ARCANE_CHECK_AT(item.asInt32(), m_size);
259 return Accessor(this->m_values + item.asInt32());
263 ARCCORE_HOST_DEVICE
void setValue(IndexerType item,
const DataType& v)
const
265 ARCANE_CHECK_AT(item.asInt32(), m_size);
266 this->m_values[item.asInt32()] = v;
280template <
typename _ItemType,
typename _Accessor>
286 using DataType =
typename _Accessor::ValueType;
287 using Accessor = _Accessor;
288 using ItemType = _ItemType;
290 using DataTypeReturnReference = DataType&;
300 , m_table_view(table_view)
304 ARCCORE_HOST_DEVICE Accessor
operator[](IndexerType item)
const
306 ARCANE_CHECK_AT(item.asInt32(), m_size);
307 return Accessor(this->m_values + item.asInt32());
311 ARCCORE_HOST_DEVICE Accessor
operator()(IndexerType item)
const
313 ARCANE_CHECK_AT(item.asInt32(), m_size);
314 return Accessor(this->m_values + item.asInt32());
318 ARCCORE_HOST_DEVICE Accessor
value(IndexerType item)
const
320 ARCANE_CHECK_AT(item.asInt32(), m_size);
321 return Accessor(this->m_values + item.asInt32());
325 ARCCORE_HOST_DEVICE
void setValue(IndexerType item,
const DataType& v)
const
327 ARCANE_CHECK_AT(item.asInt32(), m_size);
328 this->m_values[item.asInt32()] = v;
334 ARCCORE_HOST_DEVICE Accessor
operator[](ItemLocalIdType lid)
const
336 Int32 index = _toIndex(lid);
337 ARCANE_CHECK_AT(index, m_size);
338 return Accessor(m_values + index);
342 ARCCORE_HOST_DEVICE Accessor
operator()(ItemLocalIdType lid)
const
344 Int32 index = _toIndex(lid);
345 ARCANE_CHECK_AT(index, m_size);
346 return Accessor(m_values + index);
350 ARCCORE_HOST_DEVICE Accessor
value(ItemLocalIdType lid)
const
352 Int32 index = _toIndex(lid);
353 ARCANE_CHECK_AT(index, m_size);
354 return Accessor(m_values + index);
358 ARCCORE_HOST_DEVICE
void setValue(ItemLocalIdType lid,
const DataType& v)
const
360 Int32 index = _toIndex(lid);
361 ARCANE_CHECK_AT(index, m_size);
362 this->m_values[index] = v;
367 ARCCORE_HOST_DEVICE Int32 _toIndex(ItemLocalIdType lid)
const
369 return m_table_view[lid];
387template <
typename _ItemType,
typename _DataType>
393 using ItemType = _ItemType;
394 using DataType = _DataType;
408 typename SimdTypeTraits<DataType>::SimdType
411 typedef typename SimdTypeTraits<DataType>::SimdType SimdType;
416 typename SimdTypeTraits<DataType>::SimdType
419 typedef typename SimdTypeTraits<DataType>::SimdType SimdType;
420 return SimdType(m_values.
data() + simd_item.baseLocalId());
424 ARCCORE_HOST_DEVICE
const DataType&
operator[](IndexerType item)
const
426 return this->m_values[item.asInt32()];
430 ARCCORE_HOST_DEVICE
const DataType&
operator()(IndexerType item)
const
432 return this->m_values[item.asInt32()];
436 ARCCORE_HOST_DEVICE
const DataType&
value(IndexerType item)
const
438 return this->m_values[item.asInt32()];
451template <
typename _ItemType,
typename _DataType>
457 using ItemType = _ItemType;
458 using DataType = _DataType;
468 , m_table_view(table_view)
474 ARCCORE_HOST_DEVICE
const DataType&
operator[](IndexerType item)
const
476 return m_values[item.asInt32()];
480 ARCCORE_HOST_DEVICE
const DataType&
operator()(IndexerType item)
const
482 return m_values[item.asInt32()];
486 ARCCORE_HOST_DEVICE
const DataType&
value(IndexerType item)
const
488 return m_values[item.asInt32()];
492 ARCCORE_HOST_DEVICE
const DataType&
operator[](ItemLocalIdType lid)
const
494 return m_values[_toIndex(lid)];
498 ARCCORE_HOST_DEVICE
const DataType&
operator()(ItemLocalIdType lid)
const
500 return m_values[_toIndex(lid)];
504 ARCCORE_HOST_DEVICE
const DataType&
value(ItemLocalIdType lid)
const
506 return m_values[_toIndex(lid)];
511 ARCCORE_HOST_DEVICE Int32 _toIndex(ItemLocalIdType lid)
const
513 return m_table_view[lid];
530template <
typename _ItemType,
typename _DataType>
536 using ItemType = _ItemType;
537 using DataType = _DataType;
547 , m_table_view(table_view)
553 return this->m_values[i.asInt32()];
559 return m_values[_toIndex(lid)];
563 ARCCORE_HOST_DEVICE
const DataType&
operator()(IndexerType item, Int32 i)
const
565 return m_values[item.asInt32()][i];
569 ARCCORE_HOST_DEVICE
const DataType&
operator()(ItemLocalIdType lid, Int32 i)
const
571 return m_values[_toIndex(lid)][i];
577 return m_values[i.asInt32()];
583 return m_values[_toIndex(lid)];
588 ARCCORE_HOST_DEVICE Int32 _toIndex(ItemLocalIdType lid)
const
590 return m_table_view[lid];
604template <
typename _ItemType,
typename _DataType>
614 using DataType = _DataType;
628 return this->m_values[i.asInt32()];
632 ARCCORE_HOST_DEVICE
const DataType&
operator()(IndexerType item, Int32 i)
const
634 return this->m_values[item.asInt32()][i];
640 return this->m_values[i.asInt32()];
656template <
typename _ItemType,
typename _Accessor,
typename _Indexer>
662 using ItemType = _ItemType;
663 using Accessor = _Accessor;
664 using IndexerType = _Indexer;
665 using DataType =
typename Accessor::ValueType;
666 using DataTypeReturnType =
typename Accessor::DataTypeReturnReference;
676 ARCCORE_HOST_DEVICE DataTypeReturnType
operator[](IndexerType item)
const
678 return DataTypeReturnType(this->m_values[item.asInt32()]);
682 ARCCORE_HOST_DEVICE DataType&
operator()(IndexerType item, Int32 i)
const
684 return this->m_values[item.asInt32()][i];
690 return DataTypeReturnType(this->m_values[item.asInt32()]);
703template <
typename _ItemType,
typename _Accessor>
709 using ItemType = _ItemType;
710 using Accessor = _Accessor;
712 using DataType =
typename Accessor::ValueType;
713 using DataTypeReturnType =
typename Accessor::DataTypeReturnReference;
723 ARCCORE_HOST_DEVICE DataTypeReturnType
operator[](IndexerType item)
const
725 return DataTypeReturnType(this->m_values[item.asInt32()]);
729 ARCCORE_HOST_DEVICE DataType&
operator()(IndexerType item, Int32 i)
const
731 return this->m_values[item.asInt32()][i];
737 return DataTypeReturnType(this->m_values[item.asInt32()]);
750template <
typename _ItemType,
typename _Accessor>
756 using ItemType = _ItemType;
757 using Accessor = _Accessor;
759 using DataType =
typename Accessor::ValueType;
760 using DataTypeReturnType =
typename Accessor::DataTypeReturnReference;
769 , m_table_view(table_view)
775 ARCCORE_HOST_DEVICE DataTypeReturnType
operator[](IndexerType item)
const
777 return DataTypeReturnType(m_values[item.asInt32()]);
781 ARCCORE_HOST_DEVICE DataType&
operator()(IndexerType item, Int32 i)
const
783 return m_values[item.asInt32()][i];
789 return DataTypeReturnType(m_values[item.asInt32()]);
795 ARCCORE_HOST_DEVICE DataTypeReturnType
operator[](ItemLocalIdType lid)
const
797 return DataTypeReturnType(m_values[_toIndex(lid)]);
801 ARCCORE_HOST_DEVICE DataType&
operator()(ItemLocalIdType lid, Int32 i)
const
803 return m_values[_toIndex(lid)][i];
809 return DataTypeReturnType(m_values[_toIndex(lid)]);
814 ARCCORE_HOST_DEVICE Int32 _toIndex(ItemLocalIdType lid)
const
816 return m_table_view[lid];
846template <
typename _ItemType,
typename _Accessor>
852 using ItemType = _ItemType;
853 using Accessor = _Accessor;
855 using DataType =
typename _Accessor::ValueType;
856 using DataTypeReturnReference = DataType&;
892 ARCCORE_HOST_DEVICE Accessor
operator[](IndexerType item)
const
894 ARCANE_CHECK_AT(item.asInt32(), m_size);
895 return Accessor(m_values + item.asInt32());
899 ARCCORE_HOST_DEVICE Accessor
operator()(IndexerType item)
const
901 ARCANE_CHECK_AT(item.asInt32(), m_size);
902 return Accessor(m_values + item.asInt32());
906 ARCCORE_HOST_DEVICE Accessor
value(IndexerType item)
const
908 ARCANE_CHECK_AT(item.asInt32(), m_size);
909 return Accessor(m_values + item.asInt32());
913 ARCCORE_HOST_DEVICE
void setValue(IndexerType item,
const DataType& v)
const
915 ARCANE_CHECK_AT(item.asInt32(), m_size);
916 this->m_values[item.asInt32()] = v;
928template <
typename _ItemType,
typename _Accessor>
934 using ItemType = _ItemType;
935 using Accessor = _Accessor;
937 using DataType =
typename _Accessor::ValueType;
938 using DataTypeReturnReference = DataType&;
949 , m_table_view(table_view)
955 ARCCORE_HOST_DEVICE Accessor
operator[](IndexerType item)
const
957 ARCANE_CHECK_AT(item.asInt32(), m_size);
958 return Accessor(this->m_values + item.asInt32());
962 ARCCORE_HOST_DEVICE Accessor
operator()(IndexerType item)
const
964 ARCANE_CHECK_AT(item.asInt32(), m_size);
965 return Accessor(this->m_values + item.asInt32());
969 ARCCORE_HOST_DEVICE Accessor
value(IndexerType item)
const
971 ARCANE_CHECK_AT(item.asInt32(), m_size);
972 return Accessor(this->m_values + item.asInt32());
976 ARCCORE_HOST_DEVICE
void setValue(IndexerType item,
const DataType& v)
const
978 ARCANE_CHECK_AT(item.asInt32(), m_size);
979 this->m_values[item.asInt32()] = v;
985 ARCCORE_HOST_DEVICE Accessor
operator[](ItemLocalIdType lid)
const
987 Int32 index = _toIndex(lid);
988 ARCANE_CHECK_AT(index, m_size);
989 return Accessor(m_values + index);
993 ARCCORE_HOST_DEVICE Accessor
operator()(ItemLocalIdType lid)
const
995 Int32 index = _toIndex(lid);
996 ARCANE_CHECK_AT(index, m_size);
997 return Accessor(m_values + index);
1001 ARCCORE_HOST_DEVICE Accessor
value(ItemLocalIdType lid)
const
1003 Int32 index = _toIndex(lid);
1004 ARCANE_CHECK_AT(index, m_size);
1005 return Accessor(m_values + index);
1009 ARCCORE_HOST_DEVICE
void setValue(ItemLocalIdType lid,
const DataType& v)
const
1011 Int32 index = _toIndex(lid);
1012 ARCANE_CHECK_AT(index, m_size);
1013 m_values[index] = v;
1018 ARCCORE_HOST_DEVICE Int32 _toIndex(ItemLocalIdType lid)
const
1020 return m_table_view[lid];
1025 DataType* m_values =
nullptr;
1038template <
typename ItemType,
typename DataType>
auto
1041 using Accessor = DataViewSetter<DataType>;
1048template <
typename ItemType,
typename DataType>
auto
1051 using Accessor = DataViewSetter<DataType>;
1059template <
typename ItemType>
auto
1062 using Accessor = DataViewSetter<Real3>;
1069template <
typename ItemType>
auto
1072 using Accessor = DataViewSetter<Real3>;
1080template <
typename ItemType>
auto
1083 using Accessor = DataViewSetter<Real2>;
1090template <
typename ItemType>
auto
1093 using Accessor = DataViewSetter<Real2>;
1101template <
typename ItemType,
typename DataType>
auto
1111template <
typename ItemType,
typename DataType>
auto
1124template <
typename ItemType,
typename DataType>
auto
1134template <
typename ItemType,
typename DataType>
auto
1144template <
typename ItemType>
auto
1154template <
typename ItemType>
auto
1165template <
typename ItemType>
auto
1175template <
typename ItemType>
auto
1186template <
typename ItemType,
typename DataType>
auto
1196template <
typename ItemType,
typename DataType>
auto
1209template <
typename ItemType,
typename DataType>
auto
1218template <
typename ItemType,
typename DataType>
auto
1227template <
typename ItemType,
typename DataType>
auto
1236template <
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(const ViewBuildInfo &vbi, CellMaterialVariableScalarRef< DataType > &var)
Vue en lecture/écriture pour les variables materiaux scalaire.
auto viewOut(const ViewBuildInfo &vbi, CellMaterialVariableScalarRef< DataType > &var)
Vue en écriture pour les variables materiaux scalaire.
auto viewIn(const ViewBuildInfo &vbi, const CellMaterialVariableScalarRef< DataType > &var)
Vue en lecture pour les variables materiaux scalaire.