Arcane  4.1.11.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
MachineShMemWinVariable.h
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/* MachineShMemWinVariable.h (C) 2000-2026 */
9/* */
10/* Classes permettant d'exploiter l'objet MachineShMemWinVariable pointé de */
11/* la zone mémoire des variables en mémoire partagée. */
12/*---------------------------------------------------------------------------*/
13
14#ifndef ARCANE_CORE_MACHINESHMEMWINVARIABLE_H
15#define ARCANE_CORE_MACHINESHMEMWINVARIABLE_H
16
17/*---------------------------------------------------------------------------*/
18/*---------------------------------------------------------------------------*/
19
21
22#include "arcane/utils/Ref.h"
23#include "arcane/utils/NumArray.h"
24
25#include "arcane/core/MeshMDVariableRef.h"
26
27#include "arccore/base/FixedArray.h"
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31
32namespace Arcane
33{
34
35/*---------------------------------------------------------------------------*/
36/*---------------------------------------------------------------------------*/
37
41
42/*---------------------------------------------------------------------------*/
43/*---------------------------------------------------------------------------*/
44
55class ARCANE_CORE_EXPORT MachineShMemWinVariableCommon
56{
57
58 protected:
59
65
66 public:
67
69
70 public:
71
81
86 void barrier() const;
87
88 protected:
89
91};
92
93/*---------------------------------------------------------------------------*/
94/*---------------------------------------------------------------------------*/
95
96/*---------------------------------------------------------------------------*/
97/*---------------------------------------------------------------------------*/
98
111template <class DataType>
114{
115
116 public:
117
122 ARCANE_CORE_EXPORT explicit MachineShMemWinVariableArrayT(VariableRefArrayT<DataType> var);
123 ARCANE_CORE_EXPORT ~MachineShMemWinVariableArrayT() override;
124
125 public:
126
138 ARCANE_CORE_EXPORT Span<DataType> view(Int32 rank) const;
139
146 ARCANE_CORE_EXPORT void updateVariable();
147
148 private:
149
151};
152
153/*---------------------------------------------------------------------------*/
154/*---------------------------------------------------------------------------*/
155
156/*---------------------------------------------------------------------------*/
157/*---------------------------------------------------------------------------*/
158
171template <class ItemType, class DataType>
174{
175
176 public:
177
183
184 ARCANE_CORE_EXPORT ~MachineShMemWinMeshVariableScalarT() override;
185
186 public:
187
203 ARCANE_CORE_EXPORT Span<DataType> view(Int32 rank) const;
204
222 ARCANE_CORE_EXPORT DataType operator()(Int32 rank, Int32 notlocal_id);
223
230 ARCANE_CORE_EXPORT void updateVariable();
231
232 private:
233
235};
236
237/*---------------------------------------------------------------------------*/
238/*---------------------------------------------------------------------------*/
239
240/*---------------------------------------------------------------------------*/
241/*---------------------------------------------------------------------------*/
242
255template <class DataType>
257{
258 public:
259
264 ARCANE_CORE_EXPORT explicit MachineShMemWinVariableArray2T(VariableRefArray2T<DataType> var);
265
266 ARCANE_CORE_EXPORT ~MachineShMemWinVariableArray2T();
267
268 public:
269
278 ARCANE_CORE_EXPORT ConstArrayView<Int32> machineRanks() const;
279
284 ARCANE_CORE_EXPORT void barrier() const;
285
286 public:
287
297 ARCANE_CORE_EXPORT Span2<DataType> view(Int32 rank) const;
298
305 ARCANE_CORE_EXPORT void updateVariable();
306
307 private:
308
311};
312
313/*---------------------------------------------------------------------------*/
314/*---------------------------------------------------------------------------*/
315
316/*---------------------------------------------------------------------------*/
317/*---------------------------------------------------------------------------*/
318
331template <class ItemType, class DataType>
333{
334
335 public:
336
342
343 ARCANE_CORE_EXPORT ~MachineShMemWinMeshVariableArrayT();
344
345 public:
346
355 ARCANE_CORE_EXPORT ConstArrayView<Int32> machineRanks() const;
356
361 ARCANE_CORE_EXPORT void barrier() const;
362
363 public:
364
382 ARCANE_CORE_EXPORT Span2<DataType> view(Int32 rank) const;
383
401 ARCANE_CORE_EXPORT Span<DataType> operator()(Int32 rank, Int32 notlocal_id);
402
409 ARCANE_CORE_EXPORT void updateVariable();
410
411 private:
412
415 Int32 m_nb_elem_dim2{};
416};
417
418/*---------------------------------------------------------------------------*/
419/*---------------------------------------------------------------------------*/
420
421/*---------------------------------------------------------------------------*/
422/*---------------------------------------------------------------------------*/
423
437template <class ItemType, class DataType, class Extents>
439{
440
441 protected:
442
448
449 public:
450
451 ARCANE_CORE_EXPORT virtual ~MachineShMemWinMDVariableT();
452
453 public:
454
463 ARCANE_CORE_EXPORT ConstArrayView<Int32> machineRanks() const;
464
469 ARCANE_CORE_EXPORT void barrier() const;
470
471 public:
472
489 ARCANE_CORE_EXPORT MDSpan<DataType, typename MDDimType<Extents::rank() + 1>::DimType> view(Int32 rank) const;
490
508 ARCANE_CORE_EXPORT MDSpan<DataType, Extents> operator()(Int32 rank, Int32 notlocal_id);
509
516 ARCANE_CORE_EXPORT void updateVariable();
517
518 private:
519
522 Int32 m_nb_elem_dim2{};
523 std::array<Int32, Extents::rank()> m_shape_dim2{};
524};
525
526/*---------------------------------------------------------------------------*/
527/*---------------------------------------------------------------------------*/
528
529/*---------------------------------------------------------------------------*/
530/*---------------------------------------------------------------------------*/
531
545template <class ItemType, class DataType, class Extents>
547: public MachineShMemWinMDVariableT<ItemType, DataType, Extents>
548{
549
550 public:
551
557 : MachineShMemWinMDVariableT<ItemType, DataType, Extents>(var.underlyingVariable())
558 {}
559
560 ~MachineShMemWinMeshMDVariableT() override = default;
561};
562
563/*---------------------------------------------------------------------------*/
564/*---------------------------------------------------------------------------*/
565
566/*---------------------------------------------------------------------------*/
567/*---------------------------------------------------------------------------*/
568
582template <class ItemType, class DataType, class Extents>
584: public MachineShMemWinMDVariableT<ItemType, DataType, typename Extents::template AddedFirstExtentsType<DynExtent>>
585{
586 using AddedFirstExtentsType = Extents::template AddedFirstExtentsType<DynExtent>;
587
588 public:
589
594 template <Int32 Size>
596 : MachineShMemWinMDVariableT<ItemType, DataType, AddedFirstExtentsType>(var.underlyingVariable())
597 {}
598
599 ~MachineShMemWinMeshVectorMDVariableT() override = default;
600};
601
602/*---------------------------------------------------------------------------*/
603/*---------------------------------------------------------------------------*/
604
605/*---------------------------------------------------------------------------*/
606/*---------------------------------------------------------------------------*/
607
621template <class ItemType, class DataType, class Extents>
623: public MachineShMemWinMDVariableT<ItemType, DataType, typename Extents::template AddedFirstLastExtentsType<DynExtent, DynExtent>>
624{
625 using AddedFirstLastExtentsType = Extents::template AddedFirstLastExtentsType<DynExtent, DynExtent>;
626
627 public:
628
633 template <Int32 Row, Int32 Column>
635 : MachineShMemWinMDVariableT<ItemType, DataType, AddedFirstLastExtentsType>(var.underlyingVariable())
636 {}
637
638 ~MachineShMemWinMeshMatrixMDVariableT() override = default;
639};
640
641/*---------------------------------------------------------------------------*/
642/*---------------------------------------------------------------------------*/
643
644} // End namespace Arcane
645
646/*---------------------------------------------------------------------------*/
647/*---------------------------------------------------------------------------*/
648
649#endif
Déclarations des types généraux de Arcane.
Vue constante d'un tableau de type T.
Interface d'une variable.
Definition IVariable.h:39
Classe de base des vues multi-dimensionnelles.
MachineShMemWinMDVariableT(MeshVariableArrayRefT< ItemType, DataType > var)
Constructeur.
MDSpan< DataType, Extents > operator()(Int32 rank, Int32 notlocal_id)
Méthode permettant d'obtenir le tableau multi-dimensionnel d'un item d'un autre sous-domaine.
ConstArrayView< Int32 > machineRanks() const
Méthode permettant d'obtenir les rangs qui possèdent un segment dans la fenêtre.
MDSpan< DataType, typename MDDimType< Extents::rank()+1 >::DimType > view(Int32 rank) const
Méthode permettant d'obtenir une vue sur la variable d'un autre sous-domaine du noeud.
void updateVariable()
Méthode permettant de mettre à jour cet objet après un changement dans le maillage et/ou après un red...
void barrier() const
Méthode permettant d'attendre que tous les processus/threads du noeud appellent cette méthode pour co...
Classe permettant d'accéder aux éléments partagés de la variable en mémoire partagée.
MachineShMemWinMeshMDVariableT(MeshMDVariableRefT< ItemType, DataType, Extents > var)
Constructeur.
Classe permettant d'accéder aux éléments partagés de la variable en mémoire partagée.
MachineShMemWinMeshMatrixMDVariableT(MeshMatrixMDVariableRefT< ItemType, DataType, Row, Column, Extents > var)
Constructeur.
void updateVariable()
Méthode permettant de mettre à jour cet objet après un changement dans le maillage et/ou après un red...
Span2< DataType > view(Int32 rank) const
Méthode permettant d'obtenir une vue sur la variable d'un autre sous-domaine du noeud.
void barrier() const
Méthode permettant d'attendre que tous les processus/threads du noeud appellent cette méthode pour co...
Span< DataType > operator()(Int32 rank, Int32 notlocal_id)
Méthode permettant d'obtenir le tableau d'un item d'un autre sous-domaine.
MachineShMemWinMeshVariableArrayT(MeshVariableArrayRefT< ItemType, DataType > var)
Constructeur.
ConstArrayView< Int32 > machineRanks() const
Méthode permettant d'obtenir les rangs qui possèdent un segment dans la fenêtre.
void updateVariable()
Méthode permettant de mettre à jour cet objet après un changement dans le maillage.
DataType operator()(Int32 rank, Int32 notlocal_id)
Méthode permettant d'obtenir un élément de la variable d'un autre sous-domaine.
Span< DataType > view(Int32 rank) const
Méthode permettant d'obtenir une vue sur la variable d'un autre sous-domaine du noeud.
MachineShMemWinMeshVariableScalarT(MeshVariableScalarRefT< ItemType, DataType > var)
Constructeur.
Classe permettant d'accéder aux éléments partagés de la variable en mémoire partagée.
MachineShMemWinMeshVectorMDVariableT(MeshVectorMDVariableRefT< ItemType, DataType, Size, Extents > var)
Constructeur.
Classe permettant d'accéder à la partie en mémoire partagée entre sous-domaines d'un même noeud d'une...
ConstArrayView< Int32 > machineRanks() const
Méthode permettant d'obtenir les rangs qui possèdent un segment dans la fenêtre.
Span2< DataType > view(Int32 rank) const
Méthode permettant d'obtenir une vue sur le tableau d'un autre sous-domaine du noeud.
MachineShMemWinVariableArray2T(VariableRefArray2T< DataType > var)
Constructeur.
void barrier() const
Méthode permettant d'attendre que tous les processus/threads du noeud appellent cette méthode pour co...
void updateVariable()
Méthode permettant de mettre à jour cet objet après un redimensionnement de la variable.
MachineShMemWinVariableArrayT(VariableRefArrayT< DataType > var)
Constructeur.
Span< DataType > view(Int32 rank) const
Méthode permettant d'obtenir une vue sur le tableau d'un autre sous-domaine du noeud.
void updateVariable()
Méthode permettant de mettre à jour cet objet après un redimensionnement de la variable.
Classe permettant d'accéder à la partie en mémoire partagée entre sous-domaines d'un même noeud d'une...
void barrier() const
Méthode permettant d'attendre que tous les processus/threads du noeud appellent cette méthode pour co...
ConstArrayView< Int32 > machineRanks() const
Méthode permettant d'obtenir les rangs qui possèdent un segment dans la fenêtre.
MachineShMemWinVariableCommon(IVariable *var)
Constructeur.
Classe permettant d'accéder à la partie en mémoire partagée entre sous-domaines d'un même noeud d'une...
Classe gérant une variable multi-dimension sur une entité du maillage.
Classe gérant une variable multi-dimension de type 'NumMatrix' sur une entité du maillage.
Variable tableau sur un type d'entité du maillage.
Variable scalaire sur un type d'entité du maillage.
Classe gérant une variable multi-dimension de type 'NumVector' sur une entité du maillage.
Référence à une instance.
Vue pour un tableau 2D dont la taille est un 'Int64'.
Definition Span2.h:301
Vue d'un tableau d'éléments de type T.
Definition Span.h:633
Variable tableau bi dimensionnel.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
std::int32_t Int32
Type entier signé sur 32 bits.