21
21
#include " arcane/core/materials/MeshEnvironmentVariableRef.h"
22
22
#include " arcane/core/materials/MatItem.h"
23
23
24
+ #include " arcane/accelerator/AcceleratorGlobal.h"
25
+
24
26
/* ---------------------------------------------------------------------------*/
25
27
/* ---------------------------------------------------------------------------*/
26
28
@@ -38,34 +40,35 @@ namespace Arcane::Accelerator
38
40
/* !
39
41
* \brief Classe de base des vues sur les variables matériaux.
40
42
*/
41
- class MatVariableViewBase
43
+ class ARCANE_ACCELERATOR_EXPORT MatVariableViewBase
42
44
{
43
45
public:
46
+
44
47
// Pour l'instant n'utilise pas encore les paramètres
45
- MatVariableViewBase (RunCommand&, IMeshMaterialVariable*)
46
- {
47
- }
48
- private:
48
+ MatVariableViewBase (const ViewBuildInfo&, IMeshMaterialVariable*);
49
49
};
50
50
51
51
/* ---------------------------------------------------------------------------*/
52
52
/* ---------------------------------------------------------------------------*/
53
53
/* !
54
54
* \brief Vue en lecture sur une variable scalaire du maillage.
55
- * TODO: Faut-il rajouter la gestion des SIMD comme dans ItemVariableScalarInViewT ?
56
55
*/
57
- template <typename ItemType,typename DataType>
56
+ template <typename ItemType, typename DataType>
58
57
class MatItemVariableScalarInViewT
59
58
: public MatVariableViewBase
60
59
{
60
+ // TODO: Faut-il rajouter la gestion des SIMD comme dans ItemVariableScalarInViewT ?
61
+
61
62
private:
62
63
63
64
using ItemIndexType = typename ItemTraitsT<ItemType>::LocalIdType;
64
65
65
66
public:
66
67
67
- MatItemVariableScalarInViewT (RunCommand& cmd, IMeshMaterialVariable* var, ArrayView<DataType>* v)
68
- : MatVariableViewBase(cmd, var), m_value(v){}
68
+ MatItemVariableScalarInViewT (const ViewBuildInfo& vbi, IMeshMaterialVariable* var, ArrayView<DataType>* v)
69
+ : MatVariableViewBase(vbi, var)
70
+ , m_value(v)
71
+ {}
69
72
70
73
// ! Opérateur d'accès pour l'entité \a item
71
74
ARCCORE_HOST_DEVICE const DataType& operator [](ComponentItemLocalId lid) const
@@ -101,26 +104,12 @@ class MatItemVariableScalarInViewT
101
104
ArrayView<DataType>* m_value;
102
105
};
103
106
104
- /* ---------------------------------------------------------------------------*/
105
- /* ---------------------------------------------------------------------------*/
106
-
107
- /*
108
- * TODO: A faire ?
109
- *
110
- template<typename ItemType,typename DataType>
111
- class MatItemVariableArrayInViewT
112
- : public MatVariableViewBase
113
- {
114
- };
115
- */
116
-
117
107
/* ---------------------------------------------------------------------------*/
118
108
/* ---------------------------------------------------------------------------*/
119
109
/* !
120
110
* \brief Vue en écriture sur une variable scalaire du maillage.
121
- * TODO: Faut il rajouter la gestion des types SIMD comme dans ItemVariableScalarOutViewT ?
122
111
*/
123
- template <typename ItemType,typename Accessor>
112
+ template <typename ItemType, typename Accessor>
124
113
class MatItemVariableScalarOutViewT
125
114
: public MatVariableViewBase
126
115
{
@@ -130,17 +119,21 @@ class MatItemVariableScalarOutViewT
130
119
using DataTypeReturnType = DataType&;
131
120
using ItemIndexType = typename ItemTraitsT<ItemType>::LocalIdType;
132
121
133
- // TODO: faut il rajouter des ARCANE_CHECK_AT(mvi.arrayIndex(), m_value.size()); ? il manquera tjrs le check sur l'autre dimension
122
+ // TODO: faut il rajouter des ARCANE_CHECK_AT(mvi.arrayIndex(), m_value.size());
123
+ // il manquera tjrs le check sur l'autre dimension
124
+ // TODO: Faut il rajouter la gestion des types SIMD comme dans ItemVariableScalarOutViewT ?
134
125
135
126
public:
136
127
137
- MatItemVariableScalarOutViewT (RunCommand& cmd,IMeshMaterialVariable* var,ArrayView<DataType>* v)
138
- : MatVariableViewBase(cmd, var), m_value(v){}
128
+ MatItemVariableScalarOutViewT (const ViewBuildInfo& vbi, IMeshMaterialVariable* var, ArrayView<DataType>* v)
129
+ : MatVariableViewBase(vbi, var)
130
+ , m_value(v)
131
+ {}
139
132
140
133
// ! Opérateur d'accès pour l'entité \a item
141
134
ARCCORE_HOST_DEVICE Accessor operator [](ComponentItemLocalId lid) const
142
135
{
143
- return Accessor (this ->m_value [lid.localId ().arrayIndex ()].data ()+ lid.localId ().valueIndex ());
136
+ return Accessor (this ->m_value [lid.localId ().arrayIndex ()].data () + lid.localId ().valueIndex ());
144
137
}
145
138
146
139
ARCCORE_HOST_DEVICE Accessor operator [](PureMatVarIndex pmvi) const
@@ -151,18 +144,18 @@ class MatItemVariableScalarOutViewT
151
144
// ! Surcharge pour accéder à la valeure globale à partir du cell id
152
145
ARCCORE_HOST_DEVICE Accessor operator [](ItemIndexType item) const
153
146
{
154
- ARCANE_CHECK_AT (item.localId (),this ->m_value [0 ].size ());
147
+ ARCANE_CHECK_AT (item.localId (), this ->m_value [0 ].size ());
155
148
return Accessor (this ->m_value [0 ].data () + item.localId ());
156
149
}
157
150
158
151
// ! Opérateur d'accès pour l'entité \a item
159
152
ARCCORE_HOST_DEVICE Accessor value (ComponentItemLocalId lid) const
160
153
{
161
- return Accessor (this ->m_value [lid.localId ().arrayIndex ()].data ()+ lid.localId ().valueIndex ());
154
+ return Accessor (this ->m_value [lid.localId ().arrayIndex ()].data () + lid.localId ().valueIndex ());
162
155
}
163
156
164
157
// ! Positionne la valeur pour l'entité \a item à \a v
165
- ARCCORE_HOST_DEVICE void setValue (ComponentItemLocalId lid,const DataType& v) const
158
+ ARCCORE_HOST_DEVICE void setValue (ComponentItemLocalId lid, const DataType& v) const
166
159
{
167
160
this ->m_value [lid.localId ().arrayIndex ()][lid.localId ().valueIndex ()] = v;
168
161
}
@@ -182,47 +175,47 @@ class MatItemVariableScalarOutViewT
182
175
/* !
183
176
* \brief Vue en écriture pour les variables materiaux scalaire
184
177
*/
185
- template <typename DataType> auto
186
- viewOut (RunCommand& cmd , CellMaterialVariableScalarRef<DataType>& var)
178
+ template <typename DataType> auto
179
+ viewOut (const ViewBuildInfo& vbi , CellMaterialVariableScalarRef<DataType>& var)
187
180
{
188
181
using Accessor = DataViewSetter<DataType>;
189
- return MatItemVariableScalarOutViewT<Cell,Accessor>(cmd , var.materialVariable (),var._internalValue ());
182
+ return MatItemVariableScalarOutViewT<Cell, Accessor>(vbi , var.materialVariable (), var._internalValue ());
190
183
}
191
184
192
185
/* ---------------------------------------------------------------------------*/
193
186
/* ---------------------------------------------------------------------------*/
194
187
/* !
195
188
* \brief Vue en écriture pour les variables materiaux scalaire
196
189
*/
197
- template <typename DataType> auto
198
- viewOut (RunCommand& cmd , CellEnvironmentVariableScalarRef<DataType>& var)
190
+ template <typename DataType> auto
191
+ viewOut (const ViewBuildInfo& vbi , CellEnvironmentVariableScalarRef<DataType>& var)
199
192
{
200
193
using Accessor = DataViewSetter<DataType>;
201
- return MatItemVariableScalarOutViewT<Cell,Accessor>(cmd , var.materialVariable (),var._internalValue ());
194
+ return MatItemVariableScalarOutViewT<Cell, Accessor>(vbi , var.materialVariable (), var._internalValue ());
202
195
}
203
196
204
197
/* ---------------------------------------------------------------------------*/
205
198
/* ---------------------------------------------------------------------------*/
206
199
/* !
207
200
* \brief Vue en lecture/écriture pour les variables materiaux scalaire
208
201
*/
209
- template <typename DataType> auto
210
- viewInOut (RunCommand& cmd , CellMaterialVariableScalarRef<DataType>& var)
202
+ template <typename DataType> auto
203
+ viewInOut (const ViewBuildInfo& vbi , CellMaterialVariableScalarRef<DataType>& var)
211
204
{
212
205
using Accessor = DataViewGetterSetter<DataType>;
213
- return MatItemVariableScalarOutViewT<Cell,Accessor>(cmd , var.materialVariable (),var._internalValue ());
206
+ return MatItemVariableScalarOutViewT<Cell, Accessor>(vbi , var.materialVariable (), var._internalValue ());
214
207
}
215
208
216
209
/* ---------------------------------------------------------------------------*/
217
210
/* ---------------------------------------------------------------------------*/
218
211
/* !
219
212
* \brief Vue en lecture/écriture pour les variables materiaux scalaire
220
213
*/
221
- template <typename DataType> auto
222
- viewInOut (RunCommand& cmd , CellEnvironmentVariableScalarRef<DataType>& var)
214
+ template <typename DataType> auto
215
+ viewInOut (const ViewBuildInfo& vbi , CellEnvironmentVariableScalarRef<DataType>& var)
223
216
{
224
217
using Accessor = DataViewGetterSetter<DataType>;
225
- return MatItemVariableScalarOutViewT<Cell,Accessor>(cmd , var.materialVariable (),var._internalValue ());
218
+ return MatItemVariableScalarOutViewT<Cell, Accessor>(vbi , var.materialVariable (), var._internalValue ());
226
219
}
227
220
228
221
/* ---------------------------------------------------------------------------*/
@@ -231,10 +224,10 @@ viewInOut(RunCommand& cmd, CellEnvironmentVariableScalarRef<DataType>& var)
231
224
/* !
232
225
* \brief Vue en lecture pour les variables materiaux scalaire
233
226
*/
234
- template <typename DataType> auto
235
- viewIn (RunCommand& cmd, const CellMaterialVariableScalarRef<DataType>& var)
227
+ template <typename DataType> auto
228
+ viewIn (const ViewBuildInfo& vbi, const CellMaterialVariableScalarRef<DataType>& var)
236
229
{
237
- return MatItemVariableScalarInViewT<Cell,DataType>(cmd , var.materialVariable (),var._internalValue ());
230
+ return MatItemVariableScalarInViewT<Cell, DataType>(vbi , var.materialVariable (), var._internalValue ());
238
231
}
239
232
240
233
/* ---------------------------------------------------------------------------*/
@@ -243,15 +236,15 @@ viewIn(RunCommand& cmd,const CellMaterialVariableScalarRef<DataType>& var)
243
236
/* !
244
237
* \brief Vue en lecture pour les variables materiaux scalaire
245
238
*/
246
- template <typename DataType> auto
247
- viewIn (RunCommand& cmd, const CellEnvironmentVariableScalarRef<DataType>& var)
239
+ template <typename DataType> auto
240
+ viewIn (const ViewBuildInfo& vbi, const CellEnvironmentVariableScalarRef<DataType>& var)
248
241
{
249
- return MatItemVariableScalarInViewT<Cell,DataType>(cmd , var.materialVariable (),var._internalValue ());
242
+ return MatItemVariableScalarInViewT<Cell, DataType>(vbi , var.materialVariable (), var._internalValue ());
250
243
}
251
244
252
245
/* ---------------------------------------------------------------------------*/
253
246
/* ---------------------------------------------------------------------------*/
254
247
255
- }
248
+ } // namespace Arcane::Accelerator
256
249
257
250
#endif
0 commit comments