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"
46class ARCANE_ACCELERATOR_EXPORT VariableViewBase
58template <
typename DataType>
66 using ValueType = DataType;
67 using DataTypeReturnReference = View1DSetter<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));
79 DataTypeReturnReference& operator=(
const View1DSetter<DataType>& rhs) =
delete;
98template <
typename DataType>
99class View1DGetterSetter
100:
public View1DSetter<DataType>
102 using View1DSetter<DataType>::m_data;
106 using ValueType = DataType;
107 using DataTypeReturnReference = View1DGetterSetter<DataType>;
112 : View1DSetter<DataType>(data)
114 DataTypeReturnReference& operator=(
const View1DGetterSetter<DataType>& rhs) =
delete;
118 ARCCORE_HOST_DEVICE DataViewGetterSetter<DataType> operator[](
Int32 index)
const
120 return DataViewGetterSetter<DataType>(m_data.ptrAt(index));
128 ARCCORE_HOST_DEVICE
operator Span<DataType>() {
return { m_data.data(), m_data.size() }; }
129 ARCCORE_HOST_DEVICE
operator Span<const DataType>()
const {
return { m_data.data(), m_data.size() }; }
137template <
typename _ItemType,
typename _Accessor,
typename _IndexerType,
bool _HasSimd>
138class ItemVariableScalarOutViewBaseT
139:
public VariableViewBase
141 using Accessor = _Accessor;
145 using ItemType = _ItemType;
146 using IndexerType = _IndexerType;
147 using DataType =
typename _Accessor::ValueType;
148 using DataTypeReturnReference = DataType&;
153 : VariableViewBase(command, var)
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>
210class ItemVariableScalarOutViewT
211:
public VariableViewBase
215 using DataType =
typename _Accessor::ValueType;
216 using Accessor = _Accessor;
217 using ItemType = _ItemType;
219 using DataTypeReturnReference = DataType&;
224 : VariableViewBase(command, var)
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>
281class ItemPartialVariableScalarOutViewT
282:
public VariableViewBase
286 using DataType =
typename _Accessor::ValueType;
287 using Accessor = _Accessor;
288 using ItemType = _ItemType;
290 using DataTypeReturnReference = DataType&;
297 : VariableViewBase(command, var)
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>
388class ItemVariableScalarInViewT
389:
public VariableViewBase
393 using ItemType = _ItemType;
394 using DataType = _DataType;
400 : VariableViewBase(command, var)
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>
452class ItemPartialVariableScalarInViewT
453:
public VariableViewBase
457 using ItemType = _ItemType;
458 using DataType = _DataType;
466 : VariableViewBase(command, var)
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>
531class ItemPartialVariableArrayInViewT
532:
public VariableViewBase
536 using ItemType = _ItemType;
537 using DataType = _DataType;
545 : VariableViewBase(command, var)
547 , m_table_view(table_view)
553 return this->m_values[i.asInt32()];
559 return m_values[_toIndex(lid)];
565 return m_values[item.asInt32()][i];
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>
605class ItemVariableArrayInViewT
606:
public VariableViewBase
614 using DataType = _DataType;
619 : VariableViewBase(command, var)
628 return this->m_values[i.asInt32()];
634 return this->m_values[item.asInt32()][i];
640 return this->m_values[i.asInt32()];
656template <
typename _ItemType,
typename _Accessor,
typename _Indexer>
657class ItemVariableArrayOutViewBaseT
658:
public VariableViewBase
662 using ItemType = _ItemType;
663 using Accessor = _Accessor;
664 using IndexerType = _Indexer;
665 using DataType =
typename Accessor::ValueType;
666 using DataTypeReturnType =
typename Accessor::DataTypeReturnReference;
671 : VariableViewBase(command, var)
676 ARCCORE_HOST_DEVICE DataTypeReturnType
operator[](IndexerType item)
const
678 return DataTypeReturnType(this->m_values[item.asInt32()]);
684 return this->m_values[item.asInt32()][i];
690 return DataTypeReturnType(this->m_values[item.asInt32()]);
703template <
typename _ItemType,
typename _Accessor>
704class ItemVariableArrayOutViewT
705:
public VariableViewBase
709 using ItemType = _ItemType;
710 using Accessor = _Accessor;
712 using DataType =
typename Accessor::ValueType;
713 using DataTypeReturnType =
typename Accessor::DataTypeReturnReference;
718 : VariableViewBase(command, var)
723 ARCCORE_HOST_DEVICE DataTypeReturnType
operator[](IndexerType item)
const
725 return DataTypeReturnType(this->m_values[item.asInt32()]);
731 return this->m_values[item.asInt32()][i];
737 return DataTypeReturnType(this->m_values[item.asInt32()]);
750template <
typename _ItemType,
typename _Accessor>
751class ItemPartialVariableArrayOutViewT
752:
public VariableViewBase
756 using ItemType = _ItemType;
757 using Accessor = _Accessor;
759 using DataType =
typename Accessor::ValueType;
760 using DataTypeReturnType =
typename Accessor::DataTypeReturnReference;
767 : VariableViewBase(command, var)
769 , m_table_view(table_view)
775 ARCCORE_HOST_DEVICE DataTypeReturnType
operator[](IndexerType item)
const
777 return DataTypeReturnType(m_values[item.asInt32()]);
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)]);
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>
848:
public VariableViewBase
852 using ItemType = _ItemType;
853 using Accessor = _Accessor;
855 using DataType =
typename _Accessor::ValueType;
856 using DataTypeReturnReference = DataType&;
862 : VariableViewBase(command, var)
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>
930:
public VariableViewBase
934 using ItemType = _ItemType;
935 using Accessor = _Accessor;
937 using DataType =
typename _Accessor::ValueType;
938 using DataTypeReturnReference = DataType&;
946 : VariableViewBase(command, var)
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
1127 using Accessor = DataViewGetterSetter<DataType>;
1134template <
typename ItemType,
typename DataType>
auto
1137 using Accessor = DataViewGetterSetter<DataType>;
1144template <
typename ItemType>
auto
1147 using Accessor = DataViewGetterSetter<Real3>;
1154template <
typename ItemType>
auto
1157 using Accessor = DataViewGetterSetter<Real3>;
1165template <
typename ItemType>
auto
1168 using Accessor = DataViewGetterSetter<Real2>;
1175template <
typename ItemType>
auto
1178 using Accessor = DataViewGetterSetter<Real2>;
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.
__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.
__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 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.
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.
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.
Vue d'un tableau d'éléments de type T.
IVariable * variable() const
Variable associée.
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.
std::int32_t Int32
Type entier signé sur 32 bits.