Arcane  4.1.13.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
VariableViews.h
Aller à la documentation de ce fichier.
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* VariableViews.h (C) 2000-2026 */
9/* */
10/* Gestion des vues sur les variables pour les accélérateurs. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ACCELERATOR_VARIABLEVIEWS_H
13#define ARCANE_ACCELERATOR_VARIABLEVIEWS_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
20#include "arcane/core/GroupIndexTable.h"
21
22#include "arcane/accelerator/core/ViewBuildInfo.h"
23#include "arcane/accelerator/AcceleratorGlobal.h"
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28
29// TODO: Faire les vues en ReadWrite pour les accesseurs SIMD
30
31namespace Arcane::Accelerator
32{
33template <typename DataType> class View1DGetterSetter;
34
35/*---------------------------------------------------------------------------*/
36/*---------------------------------------------------------------------------*/
40class ARCANE_ACCELERATOR_EXPORT VariableViewBase
41{
42 public:
43
44 VariableViewBase(const ViewBuildInfo& command, IVariable* var);
45};
46
47/*---------------------------------------------------------------------------*/
48/*---------------------------------------------------------------------------*/
52template <typename DataType>
53class View1DSetter
54{
55 // Pour accéder à m_data;
56 friend class View1DGetterSetter<DataType>;
57
58 public:
59
60 using ValueType = DataType;
61 using DataTypeReturnReference = View1DSetter<DataType>;
62 explicit ARCCORE_HOST_DEVICE View1DSetter(SmallSpan<DataType> data)
63 : m_data(data)
64 {}
65 ARCCORE_HOST_DEVICE DataViewSetter<DataType> operator[](Int32 index) const
66 {
67 return DataViewSetter<DataType>(m_data.ptrAt(index));
68 }
69 ARCCORE_HOST_DEVICE DataViewSetter<DataType> operator()(Int32 index) const
70 {
71 return DataViewSetter<DataType>(m_data.ptrAt(index));
72 }
73 DataTypeReturnReference& operator=(const View1DSetter<DataType>& rhs) = delete;
74
75 public:
76
77 ARCCORE_HOST_DEVICE void copy(SmallSpan<const DataType> rhs)
78 {
79 m_data.copy(rhs);
80 }
81
82 private:
83
85};
86
87/*---------------------------------------------------------------------------*/
88/*---------------------------------------------------------------------------*/
92template <typename DataType>
93class View1DGetterSetter
94: public View1DSetter<DataType>
95{
96 using View1DSetter<DataType>::m_data;
97
98 public:
99
100 using ValueType = DataType;
101 using DataTypeReturnReference = View1DGetterSetter<DataType>;
102
103 public:
104
105 explicit ARCCORE_HOST_DEVICE View1DGetterSetter(SmallSpan<DataType> data)
106 : View1DSetter<DataType>(data)
107 {}
108 DataTypeReturnReference& operator=(const View1DGetterSetter<DataType>& rhs) = delete;
109
110 public:
111
112 ARCCORE_HOST_DEVICE DataViewGetterSetter<DataType> operator[](Int32 index) const
113 {
114 return DataViewGetterSetter<DataType>(m_data.ptrAt(index));
115 }
116
117 public:
118
119 ARCCORE_HOST_DEVICE SmallSpan<DataType> value() const { return m_data; }
120 ARCCORE_HOST_DEVICE operator SmallSpan<DataType>() { return m_data; }
121 ARCCORE_HOST_DEVICE operator SmallSpan<const DataType>() const { return m_data; }
122 ARCCORE_HOST_DEVICE operator Span<DataType>() { return { m_data.data(), m_data.size() }; }
123 ARCCORE_HOST_DEVICE operator Span<const DataType>() const { return { m_data.data(), m_data.size() }; }
124};
125
126/*---------------------------------------------------------------------------*/
127/*---------------------------------------------------------------------------*/
131template <typename ItemType_, typename Accessor_, typename IndexerType_, bool HasSimd_>
132class ItemVariableScalarOutViewBaseT
133: public VariableViewBase
134{
135 using Accessor = Accessor_;
136
137 public:
138
139 using ItemType = ItemType_;
140 using IndexerType = IndexerType_;
141 using DataType = Accessor_::ValueType;
142 using DataTypeReturnReference = DataType&;
143
144 public:
145
146 ItemVariableScalarOutViewBaseT(const ViewBuildInfo& command, IVariable* var, SmallSpan<DataType> v)
147 : VariableViewBase(command, var)
148 , m_values(v.data())
149 , m_size(v.size())
150 {}
151
153 SimdSetter<DataType> operator[](SimdItemIndexT<ItemType> simd_item) const requires(HasSimd_)
154 {
155 return SimdSetter<DataType>(m_values, simd_item.simdLocalIds());
156 }
157
160 {
161 return SimdDirectSetter<DataType>(m_values + simd_item.baseLocalId());
162 }
163
165 ARCCORE_HOST_DEVICE Accessor operator[](IndexerType item) const
166 {
167 ARCANE_CHECK_AT(item.asInt32(), m_size);
168 return Accessor(this->m_values + item.asInt32());
169 }
170
172 ARCCORE_HOST_DEVICE Accessor operator()(IndexerType item) const
173 {
174 ARCANE_CHECK_AT(item.asInt32(), m_size);
175 return Accessor(this->m_values + item.asInt32());
176 }
177
179 ARCCORE_HOST_DEVICE Accessor value(IndexerType item) const
180 {
181 ARCANE_CHECK_AT(item.asInt32(), m_size);
182 return Accessor(this->m_values + item.asInt32());
183 }
184
186 ARCCORE_HOST_DEVICE void setValue(IndexerType item, const DataType& v) const
187 {
188 ARCANE_CHECK_AT(item.asInt32(), m_size);
189 this->m_values[item.asInt32()] = v;
190 }
191
192 private:
193
194 DataType* m_values = nullptr;
195 Int32 m_size = 0;
196};
197
198/*---------------------------------------------------------------------------*/
199/*---------------------------------------------------------------------------*/
203template <typename ItemType_, typename Accessor_>
204class ItemVariableScalarOutViewT
205: public VariableViewBase
206{
207 public:
208
209 using DataType = Accessor_::ValueType;
210 using Accessor = Accessor_;
211 using ItemType = ItemType_;
213 using DataTypeReturnReference = DataType&;
214
215 public:
216
217 ItemVariableScalarOutViewT(const ViewBuildInfo& command, IVariable* var, SmallSpan<DataType> v)
218 : VariableViewBase(command, var)
219 , m_values(v.data())
220 , m_size(v.size())
221 {}
222
225 {
226 return SimdSetter<DataType>(m_values, simd_item.simdLocalIds());
227 }
228
231 {
232 return SimdDirectSetter<DataType>(m_values + simd_item.baseLocalId());
233 }
234
236 ARCCORE_HOST_DEVICE Accessor operator[](IndexerType item) const
237 {
238 ARCANE_CHECK_AT(item.asInt32(), m_size);
239 return Accessor(this->m_values + item.asInt32());
240 }
241
243 ARCCORE_HOST_DEVICE Accessor operator()(IndexerType item) const
244 {
245 ARCANE_CHECK_AT(item.asInt32(), m_size);
246 return Accessor(this->m_values + item.asInt32());
247 }
248
250 ARCCORE_HOST_DEVICE Accessor value(IndexerType item) const
251 {
252 ARCANE_CHECK_AT(item.asInt32(), m_size);
253 return Accessor(this->m_values + item.asInt32());
254 }
255
257 ARCCORE_HOST_DEVICE void setValue(IndexerType item, const DataType& v) const
258 {
259 ARCANE_CHECK_AT(item.asInt32(), m_size);
260 this->m_values[item.asInt32()] = v;
261 }
262
263 private:
264
265 DataType* m_values = nullptr;
266 Int32 m_size = 0;
267};
268
269/*---------------------------------------------------------------------------*/
270/*---------------------------------------------------------------------------*/
274template <typename ItemType_, typename Accessor_>
275class ItemPartialVariableScalarOutViewT
276: public VariableViewBase
277{
278 public:
279
280 using DataType = Accessor_::ValueType;
281 using Accessor = Accessor_;
282 using ItemType = ItemType_;
283 using IndexerType = ItemEnumeratorIndexT<ItemType_>;
284 using DataTypeReturnReference = DataType&;
285 using ItemLocalIdType = ItemTraitsT<ItemType_>::LocalIdType;
286
287 public:
288
289 ItemPartialVariableScalarOutViewT(const ViewBuildInfo& command, IVariable* var,
291 : VariableViewBase(command, var)
292 , m_values(v.data())
293 , m_size(v.size())
294 , m_table_view(table_view)
295 {}
296
298 ARCCORE_HOST_DEVICE Accessor operator[](IndexerType item) const
299 {
300 ARCANE_CHECK_AT(item.asInt32(), m_size);
301 return Accessor(this->m_values + item.asInt32());
302 }
303
305 ARCCORE_HOST_DEVICE Accessor operator()(IndexerType item) const
306 {
307 ARCANE_CHECK_AT(item.asInt32(), m_size);
308 return Accessor(this->m_values + item.asInt32());
309 }
310
312 ARCCORE_HOST_DEVICE Accessor value(IndexerType item) const
313 {
314 ARCANE_CHECK_AT(item.asInt32(), m_size);
315 return Accessor(this->m_values + item.asInt32());
316 }
317
319 ARCCORE_HOST_DEVICE void setValue(IndexerType item, const DataType& v) const
320 {
321 ARCANE_CHECK_AT(item.asInt32(), m_size);
322 this->m_values[item.asInt32()] = v;
323 }
324
325 public:
326
328 ARCCORE_HOST_DEVICE Accessor operator[](ItemLocalIdType lid) const
329 {
330 Int32 index = _toIndex(lid);
331 ARCANE_CHECK_AT(index, m_size);
332 return Accessor(m_values + index);
333 }
334
336 ARCCORE_HOST_DEVICE Accessor operator()(ItemLocalIdType lid) const
337 {
338 Int32 index = _toIndex(lid);
339 ARCANE_CHECK_AT(index, m_size);
340 return Accessor(m_values + index);
341 }
342
344 ARCCORE_HOST_DEVICE Accessor value(ItemLocalIdType lid) const
345 {
346 Int32 index = _toIndex(lid);
347 ARCANE_CHECK_AT(index, m_size);
348 return Accessor(m_values + index);
349 }
350
352 ARCCORE_HOST_DEVICE void setValue(ItemLocalIdType lid, const DataType& v) const
353 {
354 Int32 index = _toIndex(lid);
355 ARCANE_CHECK_AT(index, m_size);
356 this->m_values[index] = v;
357 }
358
359 private:
360
361 ARCCORE_HOST_DEVICE Int32 _toIndex(ItemLocalIdType lid) const
362 {
363 return m_table_view[lid];
364 }
365
366 private:
367
368 DataType* m_values = nullptr;
369 Int32 m_size = 0;
370 GroupIndexTableView m_table_view;
371};
372
373/*---------------------------------------------------------------------------*/
374/*---------------------------------------------------------------------------*/
378template <typename ItemType_, typename DataType_>
379class ItemVariableScalarInViewT
380: public VariableViewBase
381{
382 public:
383
384 using ItemType = ItemType_;
385 using DataType = DataType_;
387
388 public:
389
390 ItemVariableScalarInViewT(const ViewBuildInfo& command, IVariable* var, SmallSpan<const DataType> v)
391 : VariableViewBase(command, var)
392 , m_values(v)
393 {
394 }
395
396 public:
397
399 typename SimdTypeTraits<DataType>::SimdType
401 {
402 typedef typename SimdTypeTraits<DataType>::SimdType SimdType;
403 return SimdType(m_values.data(), simd_item.simdLocalIds());
404 }
405
407 typename SimdTypeTraits<DataType>::SimdType
409 {
410 typedef typename SimdTypeTraits<DataType>::SimdType SimdType;
411 return SimdType(m_values.data() + simd_item.baseLocalId());
412 }
413
415 ARCCORE_HOST_DEVICE const DataType& operator[](IndexerType item) const
416 {
417 return this->m_values[item.asInt32()];
418 }
419
421 ARCCORE_HOST_DEVICE const DataType& operator()(IndexerType item) const
422 {
423 return this->m_values[item.asInt32()];
424 }
425
427 ARCCORE_HOST_DEVICE const DataType& value(IndexerType item) const
428 {
429 return this->m_values[item.asInt32()];
430 }
431
432 private:
433
435};
436
437/*---------------------------------------------------------------------------*/
438/*---------------------------------------------------------------------------*/
442template <typename ItemType_, typename DataType_>
443class ItemPartialVariableScalarInViewT
444: public VariableViewBase
445{
446 public:
447
448 using ItemType = ItemType_;
449 using DataType = DataType_;
450 using IndexerType = ItemEnumeratorIndexT<ItemType_>;
451 using ItemLocalIdType = ItemTraitsT<ItemType_>::LocalIdType;
452
453 public:
454
455 ItemPartialVariableScalarInViewT(const ViewBuildInfo& command, IVariable* var,
457 : VariableViewBase(command, var)
458 , m_values(v)
459 , m_table_view(table_view)
460 {}
461
462 public:
463
465 ARCCORE_HOST_DEVICE const DataType& operator[](IndexerType item) const
466 {
467 return m_values[item.asInt32()];
468 }
469
471 ARCCORE_HOST_DEVICE const DataType& operator()(IndexerType item) const
472 {
473 return m_values[item.asInt32()];
474 }
475
477 ARCCORE_HOST_DEVICE const DataType& value(IndexerType item) const
478 {
479 return m_values[item.asInt32()];
480 }
481
483 ARCCORE_HOST_DEVICE const DataType& operator[](ItemLocalIdType lid) const
484 {
485 return m_values[_toIndex(lid)];
486 }
487
489 ARCCORE_HOST_DEVICE const DataType& operator()(ItemLocalIdType lid) const
490 {
491 return m_values[_toIndex(lid)];
492 }
493
495 ARCCORE_HOST_DEVICE const DataType& value(ItemLocalIdType lid) const
496 {
497 return m_values[_toIndex(lid)];
498 }
499
500 private:
501
502 ARCCORE_HOST_DEVICE Int32 _toIndex(ItemLocalIdType lid) const
503 {
504 return m_table_view[lid];
505 }
506
507 private:
508
510 GroupIndexTableView m_table_view;
511};
512
513/*---------------------------------------------------------------------------*/
514/*---------------------------------------------------------------------------*/
518template <typename ItemType_, typename DataType_>
519class ItemPartialVariableArrayInViewT
520: public VariableViewBase
521{
522 public:
523
524 using ItemType = ItemType_;
525 using DataType = DataType_;
526 using IndexerType = ItemEnumeratorIndexT<ItemType_>;
527 using ItemLocalIdType = typename ItemTraitsT<ItemType_>::LocalIdType;
528
529 public:
530
531 ItemPartialVariableArrayInViewT(const ViewBuildInfo& command, IVariable* var,
533 : VariableViewBase(command, var)
534 , m_values(v)
535 , m_table_view(table_view)
536 {}
537
539 ARCCORE_HOST_DEVICE const SmallSpan<const DataType> operator[](IndexerType i) const
540 {
541 return this->m_values[i.asInt32()];
542 }
543
545 ARCCORE_HOST_DEVICE const SmallSpan<const DataType> operator[](ItemLocalIdType lid) const
546 {
547 return m_values[_toIndex(lid)];
548 }
549
551 ARCCORE_HOST_DEVICE const DataType& operator()(IndexerType item, Int32 i) const
552 {
553 return m_values[item.asInt32()][i];
554 }
555
557 ARCCORE_HOST_DEVICE const DataType& operator()(ItemLocalIdType lid, Int32 i) const
558 {
559 return m_values[_toIndex(lid)][i];
560 }
561
563 ARCCORE_HOST_DEVICE const SmallSpan<const DataType> value(IndexerType i) const
564 {
565 return m_values[i.asInt32()];
566 }
567
569 ARCCORE_HOST_DEVICE const SmallSpan<const DataType> value(ItemLocalIdType lid) const
570 {
571 return m_values[_toIndex(lid)];
572 }
573
574 protected:
575
576 ARCCORE_HOST_DEVICE Int32 _toIndex(ItemLocalIdType lid) const
577 {
578 return m_table_view[lid];
579 }
580
581 private:
582
584 GroupIndexTableView m_table_view;
585};
586
587/*---------------------------------------------------------------------------*/
588/*---------------------------------------------------------------------------*/
592template <typename ItemType_, typename DataType_>
593class ItemVariableArrayInViewT
594: public VariableViewBase
595{
596 private:
597
598 using IndexerType = ItemTraitsT<ItemType_>::LocalIdType;
599
600 public:
601
602 using DataType = DataType_;
603
604 public:
605
606 ItemVariableArrayInViewT(const ViewBuildInfo& command, IVariable* var, SmallSpan2<const DataType> v)
607 : VariableViewBase(command, var)
608 , m_values(v)
609 {}
610
611 public:
612
614 ARCCORE_HOST_DEVICE const SmallSpan<const DataType> operator[](IndexerType i) const
615 {
616 return this->m_values[i.asInt32()];
617 }
618
620 ARCCORE_HOST_DEVICE const DataType& operator()(IndexerType item, Int32 i) const
621 {
622 return this->m_values[item.asInt32()][i];
623 }
624
626 ARCCORE_HOST_DEVICE const SmallSpan<const DataType> value(IndexerType i) const
627 {
628 return this->m_values[i.asInt32()];
629 }
630
631 private:
632
634};
635
636/*---------------------------------------------------------------------------*/
637/*---------------------------------------------------------------------------*/
641template <typename ItemType_, typename Accessor_, typename Indexer_>
642class ItemVariableArrayOutViewBaseT
643: public VariableViewBase
644{
645 private:
646
647 using ItemType = ItemType_;
648 using Accessor = Accessor_;
649 using IndexerType = Indexer_;
650 using DataType = Accessor::ValueType;
651 using DataTypeReturnType = Accessor::DataTypeReturnReference;
652
653 public:
654
655 ItemVariableArrayOutViewBaseT(const ViewBuildInfo& command, IVariable* var, SmallSpan2<DataType> v)
656 : VariableViewBase(command, var)
657 , m_values(v)
658 {}
659
661 ARCCORE_HOST_DEVICE DataTypeReturnType operator[](IndexerType item) const
662 {
663 return DataTypeReturnType(this->m_values[item.asInt32()]);
664 }
665
667 ARCCORE_HOST_DEVICE DataType& operator()(IndexerType item, Int32 i) const
668 {
669 return this->m_values[item.asInt32()][i];
670 }
671
673 ARCCORE_HOST_DEVICE SmallSpan<DataType> value(IndexerType item) const
674 {
675 return DataTypeReturnType(this->m_values[item.asInt32()]);
676 }
677
678 private:
679
680 SmallSpan2<DataType> m_values;
681};
682
683/*---------------------------------------------------------------------------*/
684/*---------------------------------------------------------------------------*/
688template <typename ItemType_, typename Accessor_>
689class ItemVariableArrayOutViewT
690: public VariableViewBase
691{
692 public:
693
694 using ItemType = ItemType_;
695 using Accessor = Accessor_;
696 using IndexerType = ItemTraitsT<ItemType_>::LocalIdType;
697 using DataType = Accessor::ValueType;
698 using DataTypeReturnType = Accessor::DataTypeReturnReference;
699
700 public:
701
702 ItemVariableArrayOutViewT(const ViewBuildInfo& command, IVariable* var, SmallSpan2<DataType> v)
703 : VariableViewBase(command, var)
704 , m_values(v)
705 {}
706
708 ARCCORE_HOST_DEVICE DataTypeReturnType operator[](IndexerType item) const
709 {
710 return DataTypeReturnType(this->m_values[item.asInt32()]);
711 }
712
714 ARCCORE_HOST_DEVICE DataType& operator()(IndexerType item, Int32 i) const
715 {
716 return this->m_values[item.asInt32()][i];
717 }
718
720 ARCCORE_HOST_DEVICE SmallSpan<DataType> value(IndexerType item) const
721 {
722 return DataTypeReturnType(this->m_values[item.asInt32()]);
723 }
724
725 private:
726
727 SmallSpan2<DataType> m_values;
728};
729
730/*---------------------------------------------------------------------------*/
731/*---------------------------------------------------------------------------*/
732
736template <typename ItemType_, typename Accessor_>
737class ItemPartialVariableArrayOutViewT
738: public VariableViewBase
739{
740 public:
741
742 using ItemType = ItemType_;
743 using Accessor = Accessor_;
744 using IndexerType = ItemEnumeratorIndexT<ItemType_>;
745 using DataType = Accessor::ValueType;
746 using DataTypeReturnType = Accessor::DataTypeReturnReference;
747 using ItemLocalIdType = ItemTraitsT<ItemType_>::LocalIdType;
748
749 public:
750
751 ItemPartialVariableArrayOutViewT(const ViewBuildInfo& command, IVariable* var,
753 : VariableViewBase(command, var)
754 , m_values(v)
755 , m_table_view(table_view)
756 {}
757
758 public:
759
761 ARCCORE_HOST_DEVICE DataTypeReturnType operator[](IndexerType item) const
762 {
763 return DataTypeReturnType(m_values[item.asInt32()]);
764 }
765
767 ARCCORE_HOST_DEVICE DataType& operator()(IndexerType item, Int32 i) const
768 {
769 return m_values[item.asInt32()][i];
770 }
771
773 ARCCORE_HOST_DEVICE SmallSpan<DataType> value(IndexerType item) const
774 {
775 return DataTypeReturnType(m_values[item.asInt32()]);
776 }
777
778 public:
779
781 ARCCORE_HOST_DEVICE DataTypeReturnType operator[](ItemLocalIdType lid) const
782 {
783 return DataTypeReturnType(m_values[_toIndex(lid)]);
784 }
785
787 ARCCORE_HOST_DEVICE DataType& operator()(ItemLocalIdType lid, Int32 i) const
788 {
789 return m_values[_toIndex(lid)][i];
790 }
791
793 ARCCORE_HOST_DEVICE SmallSpan<DataType> value(ItemLocalIdType lid) const
794 {
795 return DataTypeReturnType(m_values[_toIndex(lid)]);
796 }
797
798 private:
799
800 ARCCORE_HOST_DEVICE Int32 _toIndex(ItemLocalIdType lid) const
801 {
802 return m_table_view[lid];
803 }
804
805 private:
806
807 SmallSpan2<DataType> m_values;
808 GroupIndexTableView m_table_view;
809};
810
811/*---------------------------------------------------------------------------*/
812/*---------------------------------------------------------------------------*/
832template <typename ItemType_, typename Accessor_>
834: public VariableViewBase
835{
836 public:
837
838 using ItemType = ItemType_;
839 using Accessor = Accessor_;
840 using IndexerType = ItemTraitsT<ItemType_>::LocalIdType;
841 using DataType = Accessor_::ValueType;
842 using DataTypeReturnReference = DataType&;
843
844 public:
845
848 : VariableViewBase(command, var)
849 , m_values(v.data())
850 , m_size(v.size())
851 {}
852
855 {
856 return SimdSetter<DataType>(m_values, simd_item.simdLocalIds());
857 }
858
861 {
862 return SimdSetter<DataType>(m_values, simd_item.simdLocalIds());
863 }
864
867 {
868 return SimdDirectSetter<DataType>(m_values + simd_item.baseLocalId());
869 }
870
873 {
874 return SimdDirectSetter<DataType>(m_values + simd_item.baseLocalId());
875 }
876
878 ARCCORE_HOST_DEVICE Accessor operator[](IndexerType item) const
879 {
880 ARCANE_CHECK_AT(item.asInt32(), m_size);
881 return Accessor(m_values + item.asInt32());
882 }
883
885 ARCCORE_HOST_DEVICE Accessor operator()(IndexerType item) const
886 {
887 ARCANE_CHECK_AT(item.asInt32(), m_size);
888 return Accessor(m_values + item.asInt32());
889 }
890
892 ARCCORE_HOST_DEVICE Accessor value(IndexerType item) const
893 {
894 ARCANE_CHECK_AT(item.asInt32(), m_size);
895 return Accessor(m_values + item.asInt32());
896 }
897
899 ARCCORE_HOST_DEVICE void setValue(IndexerType item, const DataType& v) const
900 {
901 ARCANE_CHECK_AT(item.asInt32(), m_size);
902 this->m_values[item.asInt32()] = v;
903 }
904
905 private:
906
907 DataType* m_values = nullptr;
908 Int32 m_size = 0;
909};
910
911/*---------------------------------------------------------------------------*/
912/*---------------------------------------------------------------------------*/
913
914template <typename ItemType_, typename Accessor_>
916: public VariableViewBase
917{
918 public:
919
920 using ItemType = ItemType_;
921 using Accessor = Accessor_;
922 using IndexerType = ItemEnumeratorIndexT<ItemType_>;
923 using DataType = typename Accessor_::ValueType;
924 using DataTypeReturnReference = DataType&;
925 using ItemLocalIdType = typename ItemTraitsT<ItemType_>::LocalIdType;
926
927 public:
928
932 : VariableViewBase(command, var)
933 , m_values(v.data())
934 , m_size(v.size())
935 , m_table_view(table_view)
936 {}
937
938 public:
939
941 ARCCORE_HOST_DEVICE Accessor operator[](IndexerType item) const
942 {
943 ARCANE_CHECK_AT(item.asInt32(), m_size);
944 return Accessor(this->m_values + item.asInt32());
945 }
946
948 ARCCORE_HOST_DEVICE Accessor operator()(IndexerType item) const
949 {
950 ARCANE_CHECK_AT(item.asInt32(), m_size);
951 return Accessor(this->m_values + item.asInt32());
952 }
953
955 ARCCORE_HOST_DEVICE Accessor value(IndexerType item) const
956 {
957 ARCANE_CHECK_AT(item.asInt32(), m_size);
958 return Accessor(this->m_values + item.asInt32());
959 }
960
962 ARCCORE_HOST_DEVICE void setValue(IndexerType item, const DataType& v) const
963 {
964 ARCANE_CHECK_AT(item.asInt32(), m_size);
965 this->m_values[item.asInt32()] = v;
966 }
967
968 public:
969
971 ARCCORE_HOST_DEVICE Accessor operator[](ItemLocalIdType lid) const
972 {
973 Int32 index = _toIndex(lid);
974 ARCANE_CHECK_AT(index, m_size);
975 return Accessor(m_values + index);
976 }
977
979 ARCCORE_HOST_DEVICE Accessor operator()(ItemLocalIdType lid) const
980 {
981 Int32 index = _toIndex(lid);
982 ARCANE_CHECK_AT(index, m_size);
983 return Accessor(m_values + index);
984 }
985
987 ARCCORE_HOST_DEVICE Accessor value(ItemLocalIdType lid) const
988 {
989 Int32 index = _toIndex(lid);
990 ARCANE_CHECK_AT(index, m_size);
991 return Accessor(m_values + index);
992 }
993
995 ARCCORE_HOST_DEVICE void setValue(ItemLocalIdType lid, const DataType& v) const
996 {
997 Int32 index = _toIndex(lid);
998 ARCANE_CHECK_AT(index, m_size);
999 m_values[index] = v;
1000 }
1001
1002 private:
1003
1004 ARCCORE_HOST_DEVICE Int32 _toIndex(ItemLocalIdType lid) const
1005 {
1006 return m_table_view[lid];
1007 }
1008
1009 private:
1010
1011 DataType* m_values = nullptr;
1012 Int32 m_size = 0;
1013 GroupIndexTableView m_table_view;
1014};
1015
1016/*---------------------------------------------------------------------------*/
1017/*---------------------------------------------------------------------------*/
1018
1019/*---------------------------------------------------------------------------*/
1020/*---------------------------------------------------------------------------*/
1024template <typename DataType> auto
1026{
1027 using Accessor = DataViewSetter<DataType>;
1028 return ItemVariableScalarOutViewT<Item, Accessor>(command, var.variable(), var.asArray());
1029}
1030
1034template <typename ItemType, typename DataType> auto
1036{
1037 using Accessor = DataViewSetter<DataType>;
1038 return ItemVariableScalarOutViewT<ItemType, Accessor>(command, var.variable(), var.asArray());
1039}
1040
1044template <typename ItemType, typename DataType> auto
1046{
1047 using Accessor = DataViewSetter<DataType>;
1049 return ViewType(command, var.variable(), var.asArray(), var.tableView());
1050}
1051
1055template <typename ItemType> auto
1057{
1058 using Accessor = DataViewSetter<Real3>;
1059 return ItemVariableRealNScalarOutViewT<ItemType, Accessor>(command, var.variable(), var.asArray());
1060}
1061
1065template <typename ItemType> auto
1067{
1068 using Accessor = DataViewSetter<Real3>;
1070 return ViewType(command, var.variable(), var.asArray(), var.tableView());
1071}
1072
1076template <typename ItemType> auto
1078{
1079 using Accessor = DataViewSetter<Real2>;
1080 return ItemVariableRealNScalarOutViewT<ItemType, Accessor>(command, var.variable(), var.asArray());
1081}
1082
1086template <typename ItemType> auto
1088{
1089 using Accessor = DataViewSetter<Real2>;
1091 return ViewType(command, var.variable(), var.asArray(), var.tableView());
1092}
1093
1097template <typename ItemType, typename DataType> auto
1099{
1100 using Accessor = View1DSetter<DataType>;
1101 return ItemVariableArrayOutViewT<ItemType, Accessor>(command, var.variable(), var.asArray());
1102}
1103
1107template <typename ItemType, typename DataType> auto
1109{
1110 using Accessor = View1DSetter<DataType>;
1112 return ViewType(command, var.variable(), var.asArray(), var.tableView());
1113}
1114
1115/*---------------------------------------------------------------------------*/
1116/*---------------------------------------------------------------------------*/
1117
1121template <typename DataType> auto
1123{
1124 using Accessor = DataViewGetterSetter<DataType>;
1125 return ItemVariableScalarOutViewT<Item, Accessor>(command, var.variable(), var.asArray());
1126}
1127
1131template <typename ItemType, typename DataType> auto
1133{
1134 using Accessor = DataViewGetterSetter<DataType>;
1135 return ItemVariableScalarOutViewT<ItemType, Accessor>(command, var.variable(), var.asArray());
1136}
1137
1141template <typename ItemType, typename DataType> auto
1143{
1144 using Accessor = DataViewGetterSetter<DataType>;
1145 return ItemPartialVariableScalarOutViewT<ItemType, Accessor>(command, var.variable(), var.asArray());
1146}
1147
1151template <typename ItemType> auto
1153{
1154 using Accessor = DataViewGetterSetter<Real3>;
1155 return ItemVariableRealNScalarOutViewT<ItemType, Accessor>(command, var.variable(), var.asArray());
1156}
1157
1161template <typename ItemType> auto
1163{
1164 using Accessor = DataViewGetterSetter<Real3>;
1166 return ViewType(command, var.variable(), var.asArray(), var.tableView());
1167}
1168
1172template <typename ItemType> auto
1174{
1175 using Accessor = DataViewGetterSetter<Real2>;
1176 return ItemVariableRealNScalarOutViewT<ItemType, Accessor>(command, var.variable(), var.asArray());
1177}
1178
1182template <typename ItemType> auto
1184{
1185 using Accessor = DataViewGetterSetter<Real2>;
1187 return ViewType(command, var.variable(), var.asArray(), var.tableView());
1188}
1189
1193template <typename ItemType, typename DataType> auto
1195{
1196 using Accessor = View1DGetterSetter<DataType>;
1197 return ItemVariableArrayOutViewT<ItemType, Accessor>(command, var.variable(), var.asArray());
1198}
1199
1203template <typename ItemType, typename DataType> auto
1205{
1206 using Accessor = View1DGetterSetter<DataType>;
1208 return ViewType(command, var.variable(), var.asArray(), var.tableView());
1209}
1210
1211/*---------------------------------------------------------------------------*/
1212/*---------------------------------------------------------------------------*/
1213
1217template <typename ItemType, typename DataType> auto
1219{
1220 return ItemPartialVariableScalarInViewT<ItemType, DataType>(command, var.variable(), var.asArray(), var.tableView());
1221}
1222
1226template <typename ItemType, typename DataType> auto
1228{
1229 return ItemVariableScalarInViewT<ItemType, DataType>(command, var.variable(), var.asArray());
1230}
1231
1235template <typename DataType> auto
1237{
1238 return ItemVariableScalarInViewT<Item, DataType>(command, var.variable(), var.asArray());
1239}
1240
1244template <typename ItemType, typename DataType> auto
1246{
1247 return ItemPartialVariableArrayInViewT<ItemType, DataType>(command, var.variable(), var.asArray(), var.tableView());
1248}
1249
1253template <typename ItemType, typename DataType> auto
1255{
1256 return ItemVariableArrayInViewT<ItemType, DataType>(command, var.variable(), var.asArray());
1257}
1258
1259/*---------------------------------------------------------------------------*/
1260/*---------------------------------------------------------------------------*/
1261
1262typedef ItemVariableScalarInViewT<Node, Byte> VariableNodeByteInView;
1263typedef ItemVariableScalarInViewT<Edge, Byte> VariableEdgeByteInView;
1264typedef ItemVariableScalarInViewT<Face, Byte> VariableFaceByteInView;
1265typedef ItemVariableScalarInViewT<Cell, Byte> VariableCellByteInView;
1266typedef ItemVariableScalarInViewT<Particle, Byte> VariableParticleByteInView;
1267typedef ItemVariableScalarInViewT<DoF, Byte> VariableDoFByteInView;
1268
1269typedef ItemVariableScalarInViewT<Node, Int16> VariableNodeInt16InView;
1270typedef ItemVariableScalarInViewT<Edge, Int16> VariableEdgeInt16InView;
1271typedef ItemVariableScalarInViewT<Face, Int16> VariableFaceInt16InView;
1272typedef ItemVariableScalarInViewT<Cell, Int16> VariableCellInt16InView;
1273typedef ItemVariableScalarInViewT<Particle, Int16> VariableParticleInt16InView;
1274typedef ItemVariableScalarInViewT<DoF, Int16> VariableDoFInt16InView;
1275
1276typedef ItemVariableScalarInViewT<Node, Int32> VariableNodeInt32InView;
1277typedef ItemVariableScalarInViewT<Edge, Int32> VariableEdgeInt32InView;
1278typedef ItemVariableScalarInViewT<Face, Int32> VariableFaceInt32InView;
1279typedef ItemVariableScalarInViewT<Cell, Int32> VariableCellInt32InView;
1280typedef ItemVariableScalarInViewT<Particle, Int32> VariableParticleInt32InView;
1281typedef ItemVariableScalarInViewT<DoF, Int32> VariableDoFInt32InView;
1282
1283typedef ItemVariableScalarInViewT<Node, Int64> VariableNodeInt64InView;
1284typedef ItemVariableScalarInViewT<Edge, Int64> VariableEdgeInt64InView;
1285typedef ItemVariableScalarInViewT<Face, Int64> VariableFaceInt64InView;
1286typedef ItemVariableScalarInViewT<Cell, Int64> VariableCellInt64InView;
1287typedef ItemVariableScalarInViewT<Particle, Int64> VariableParticleInt64InView;
1288typedef ItemVariableScalarInViewT<DoF, Int64> VariableDoFInt64InView;
1289
1290typedef ItemVariableScalarInViewT<Node, Real> VariableNodeRealInView;
1291typedef ItemVariableScalarInViewT<Edge, Real> VariableEdgeRealInView;
1292typedef ItemVariableScalarInViewT<Face, Real> VariableFaceRealInView;
1293typedef ItemVariableScalarInViewT<Cell, Real> VariableCellRealInView;
1294typedef ItemVariableScalarInViewT<Particle, Real> VariableParticleRealInView;
1295typedef ItemVariableScalarInViewT<DoF, Real> VariableDoFRealInView;
1296
1297typedef ItemVariableScalarInViewT<Node, Real2> VariableNodeReal2InView;
1298typedef ItemVariableScalarInViewT<Edge, Real2> VariableEdgeReal2InView;
1299typedef ItemVariableScalarInViewT<Face, Real2> VariableFaceReal2InView;
1300typedef ItemVariableScalarInViewT<Cell, Real2> VariableCellReal2InView;
1301typedef ItemVariableScalarInViewT<Particle, Real2> VariableParticleReal2InView;
1302typedef ItemVariableScalarInViewT<DoF, Real2> VariableDoFReal2InView;
1303
1304typedef ItemVariableScalarInViewT<Node, Real3> VariableNodeReal3InView;
1305typedef ItemVariableScalarInViewT<Edge, Real3> VariableEdgeReal3InView;
1306typedef ItemVariableScalarInViewT<Face, Real3> VariableFaceReal3InView;
1307typedef ItemVariableScalarInViewT<Cell, Real3> VariableCellReal3InView;
1308typedef ItemVariableScalarInViewT<Particle, Real3> VariableParticleReal3InView;
1309typedef ItemVariableScalarInViewT<DoF, Real3> VariableDoFReal3InView;
1310
1311/*---------------------------------------------------------------------------*/
1312/*---------------------------------------------------------------------------*/
1313
1314typedef ItemVariableScalarOutViewT<Node, DataViewSetter<Byte>> VariableNodeByteOutView;
1315typedef ItemVariableScalarOutViewT<Edge, DataViewSetter<Byte>> VariableEdgeByteOutView;
1316typedef ItemVariableScalarOutViewT<Face, DataViewSetter<Byte>> VariableFaceByteOutView;
1317typedef ItemVariableScalarOutViewT<Cell, DataViewSetter<Byte>> VariableCellByteOutView;
1318typedef ItemVariableScalarOutViewT<Particle, DataViewSetter<Byte>> VariableParticleByteOutView;
1319typedef ItemVariableScalarOutViewT<DoF, DataViewSetter<Byte>> VariableDoFByteOutView;
1320
1321typedef ItemVariableScalarOutViewT<Node, DataViewSetter<Int16>> VariableNodeInt16OutView;
1322typedef ItemVariableScalarOutViewT<Edge, DataViewSetter<Int16>> VariableEdgeInt16OutView;
1323typedef ItemVariableScalarOutViewT<Face, DataViewSetter<Int16>> VariableFaceInt16OutView;
1324typedef ItemVariableScalarOutViewT<Cell, DataViewSetter<Int16>> VariableCellInt16OutView;
1325typedef ItemVariableScalarOutViewT<Particle, DataViewSetter<Int16>> VariableParticleInt16OutView;
1326typedef ItemVariableScalarOutViewT<DoF, DataViewSetter<Int16>> VariableDoFInt16OutView;
1327
1328typedef ItemVariableScalarOutViewT<Node, DataViewSetter<Int32>> VariableNodeInt32OutView;
1329typedef ItemVariableScalarOutViewT<Edge, DataViewSetter<Int32>> VariableEdgeInt32OutView;
1330typedef ItemVariableScalarOutViewT<Face, DataViewSetter<Int32>> VariableFaceInt32OutView;
1331typedef ItemVariableScalarOutViewT<Cell, DataViewSetter<Int32>> VariableCellInt32OutView;
1332typedef ItemVariableScalarOutViewT<Particle, DataViewSetter<Int32>> VariableParticleInt32OutView;
1333typedef ItemVariableScalarOutViewT<DoF, DataViewSetter<Int32>> VariableDoFInt32OutView;
1334
1335typedef ItemVariableScalarOutViewT<Node, DataViewSetter<Int64>> VariableNodeInt64OutView;
1336typedef ItemVariableScalarOutViewT<Edge, DataViewSetter<Int64>> VariableEdgeInt64OutView;
1337typedef ItemVariableScalarOutViewT<Face, DataViewSetter<Int64>> VariableFaceInt64OutView;
1338typedef ItemVariableScalarOutViewT<Cell, DataViewSetter<Int64>> VariableCellInt64OutView;
1339typedef ItemVariableScalarOutViewT<Particle, DataViewSetter<Int64>> VariableParticleInt64OutView;
1340typedef ItemVariableScalarOutViewT<DoF, DataViewSetter<Int64>> VariableDoFInt64OutView;
1341
1342typedef ItemVariableScalarOutViewT<Node, DataViewSetter<Real>> VariableNodeRealOutView;
1343typedef ItemVariableScalarOutViewT<Edge, DataViewSetter<Real>> VariableEdgeRealOutView;
1344typedef ItemVariableScalarOutViewT<Face, DataViewSetter<Real>> VariableFaceRealOutView;
1345typedef ItemVariableScalarOutViewT<Cell, DataViewSetter<Real>> VariableCellRealOutView;
1346typedef ItemVariableScalarOutViewT<Particle, DataViewSetter<Real>> VariableParticleRealOutView;
1347typedef ItemVariableScalarOutViewT<DoF, DataViewSetter<Real>> VariableDoFRealOutView;
1348
1349typedef ItemVariableRealNScalarOutViewT<Node, DataViewSetter<Real2>> VariableNodeReal2OutView;
1350typedef ItemVariableRealNScalarOutViewT<Edge, DataViewSetter<Real2>> VariableEdgeReal2OutView;
1351typedef ItemVariableRealNScalarOutViewT<Face, DataViewSetter<Real2>> VariableFaceReal2OutView;
1352typedef ItemVariableRealNScalarOutViewT<Cell, DataViewSetter<Real2>> VariableCellReal2OutView;
1353typedef ItemVariableRealNScalarOutViewT<Particle, DataViewSetter<Real2>> VariableParticleReal2OutView;
1354typedef ItemVariableRealNScalarOutViewT<DoF, DataViewSetter<Real2>> VariableDoFReal2OutView;
1355
1356typedef ItemVariableRealNScalarOutViewT<Node, DataViewSetter<Real3>> VariableNodeReal3OutView;
1357typedef ItemVariableRealNScalarOutViewT<Edge, DataViewSetter<Real3>> VariableEdgeReal3OutView;
1358typedef ItemVariableRealNScalarOutViewT<Face, DataViewSetter<Real3>> VariableFaceReal3OutView;
1359typedef ItemVariableRealNScalarOutViewT<Cell, DataViewSetter<Real3>> VariableCellReal3OutView;
1360typedef ItemVariableRealNScalarOutViewT<Particle, DataViewSetter<Real3>> VariableParticleReal3OutView;
1361typedef ItemVariableRealNScalarOutViewT<DoF, DataViewSetter<Real3>> VariableDoFReal3OutView;
1362
1363/*---------------------------------------------------------------------------*/
1364/*---------------------------------------------------------------------------*/
1365
1366} // End namespace Arcane::Accelerator
1367
1368/*---------------------------------------------------------------------------*/
1369/*---------------------------------------------------------------------------*/
1370
1371#endif
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[](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 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()(ItemLocalIdType lid, Int32 i) const
Opérateur d'accès pour la i-ème valeur de l'entité item.
Vue en écriture sur une variable partielle tableau du maillage.
__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__ DataTypeReturnType operator[](IndexerType item) const
Opérateur d'accès pour 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__ DataTypeReturnType operator[](ItemLocalIdType lid) const
Opérateur d'accès pour l'entité de numéro local lid.
__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.
ItemPartialVariableRealNScalarOutViewT(const ViewBuildInfo &command, IVariable *var, SmallSpan< DataType > v, GroupIndexTableView table_view)
Construit la vue.
__host__ __device__ void setValue(ItemLocalIdType lid, 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 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.
__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é item.
Vue en lecture sur une variable partielle scalaire du maillage.
__host__ __device__ const DataType & operator()(IndexerType item) 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 & 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 & value(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.
Vue en écriture sur une variable partielle scalaire du maillage.
__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 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.
__host__ __device__ Accessor value(ItemLocalIdType lid) const
Opérateur d'accès pour l'entité de numéro local lid.
__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[](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 > value(IndexerType i) const
Opérateur d'accès pour 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 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-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.
__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.
ItemVariableRealNScalarOutViewT(const ViewBuildInfo &command, IVariable *var, SmallSpan< DataType > v)
Construit la vue.
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.
SimdDirectSetter< DataType > operator[](SimdItemDirectIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel sans indirection.
SimdSetter< DataType > operator[](SimdItemIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel avec indirection.
__host__ __device__ Accessor value(IndexerType item) const
Opérateur d'accès pour l'entité item.
Vue en lecture sur une variable scalaire du maillage.
SimdTypeTraits< DataType >::SimdType operator[](SimdItemDirectIndexT< 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 & value(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[](SimdItemIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel avec indirection.
SimdSetter< DataType > operator[](SimdItemIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel avec indirection.
__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.
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 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 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.
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 value(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.
Interface d'une variable.
Definition IVariable.h:39
Représente un index d'une énumération sur une entité ItemType.
typename ItemTraitsT< ItemType >::LocalIdType LocalIdType
Type du localId().
Definition ItemTypes.h:814
GroupIndexTableView tableView() const
Vue sur table d'indirection du groupe.
GroupIndexTableView tableView() const
Vue sur table d'indirection du groupe.
Caractéristiques des éléments du maillage.
Definition ItemTypes.h:621
Variable scalaire sur un type d'entité 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.
Definition SimdItem.h:351
Index vectoriel sans indirection pour un type d'entité
Definition SimdItem.h:188
Index vectoriel avec indirection pour un type d'entité. TODO: stocker les index dans un registre vect...
Definition SimdItem.h:166
const SimdIndexType &ARCANE_RESTRICT simdLocalIds() const
Liste des numéros locaux des entités de l'instance.
Definition SimdItem.h:176
Objet permettant de positionner les valeurs d'un vecteur SIMD.
Definition SimdItem.h:320
Vue pour un tableau 2D dont la taille est un 'Int32'.
Definition Span2.h:233
Vue d'un tableau d'éléments de type T.
Definition Span.h:801
constexpr __host__ __device__ pointer data() const noexcept
Pointeur sur le début de la vue.
Definition Span.h:537
constexpr __host__ __device__ SizeType size() const noexcept
Retourne la taille du tableau.
Definition Span.h:325
Vue d'un tableau d'éléments de type T.
Definition Span.h:633
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 scalaires.
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.