Arcane  4.2.1.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#ifndef ARCANE_CORE_MACHINESHMEMWINVARIABLE_H
14#define ARCANE_CORE_MACHINESHMEMWINVARIABLE_H
15/*---------------------------------------------------------------------------*/
16/*---------------------------------------------------------------------------*/
17
18#include "arccore/base/FixedArray.h"
19
21
22#include "arcane/utils/Ref.h"
23#include "arcane/utils/NumArray.h"
24
25#include "arcane/core/MeshMDVariableRef.h"
26#include "arcane/core/MeshMatrixMDVariableRef.h"
27#include "arcane/core/MeshVectorMDVariableRef.h"
28
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32
33namespace Arcane
34{
35
36/*---------------------------------------------------------------------------*/
37/*---------------------------------------------------------------------------*/
38
42
43/*---------------------------------------------------------------------------*/
44/*---------------------------------------------------------------------------*/
45
56class ARCANE_CORE_EXPORT MachineShMemWinVariableCommon
57{
58
59 protected:
60
66
67 public:
68
70
71 public:
72
82
87 void barrier() const;
88
89 protected:
90
92};
93
94/*---------------------------------------------------------------------------*/
95/*---------------------------------------------------------------------------*/
96
97/*---------------------------------------------------------------------------*/
98/*---------------------------------------------------------------------------*/
99
112template <class DataType>
115{
116
117 public:
118
123 ARCANE_CORE_EXPORT explicit MachineShMemWinVariableArrayT(VariableRefArrayT<DataType> var);
124 ARCANE_CORE_EXPORT ~MachineShMemWinVariableArrayT() override;
125
126 public:
127
139 ARCANE_CORE_EXPORT Span<DataType> view(Int32 rank) const;
140
147 ARCANE_CORE_EXPORT void updateVariable();
148
149 private:
150
152};
153
154/*---------------------------------------------------------------------------*/
155/*---------------------------------------------------------------------------*/
156
157/*---------------------------------------------------------------------------*/
158/*---------------------------------------------------------------------------*/
159
172template <class ItemType, class DataType>
175{
176
177 public:
178
184
185 ARCANE_CORE_EXPORT ~MachineShMemWinMeshVariableScalarT() override;
186
187 public:
188
204 ARCANE_CORE_EXPORT Span<DataType> view(Int32 rank) const;
205
223 ARCANE_CORE_EXPORT DataType operator()(Int32 rank, Int32 notlocal_id);
224
231 ARCANE_CORE_EXPORT void updateVariable();
232
233 private:
234
236};
237
238/*---------------------------------------------------------------------------*/
239/*---------------------------------------------------------------------------*/
240
241/*---------------------------------------------------------------------------*/
242/*---------------------------------------------------------------------------*/
243
256template <class DataType>
258{
259 public:
260
265 ARCANE_CORE_EXPORT explicit MachineShMemWinVariableArray2T(VariableRefArray2T<DataType> var);
266
267 ARCANE_CORE_EXPORT ~MachineShMemWinVariableArray2T();
268
269 public:
270
279 ARCANE_CORE_EXPORT ConstArrayView<Int32> machineRanks() const;
280
285 ARCANE_CORE_EXPORT void barrier() const;
286
287 public:
288
298 ARCANE_CORE_EXPORT Span2<DataType> view(Int32 rank) const;
299
306 ARCANE_CORE_EXPORT void updateVariable();
307
308 private:
309
312};
313
314/*---------------------------------------------------------------------------*/
315/*---------------------------------------------------------------------------*/
316
317/*---------------------------------------------------------------------------*/
318/*---------------------------------------------------------------------------*/
319
332template <class ItemType, class DataType>
334{
335
336 public:
337
343
344 ARCANE_CORE_EXPORT ~MachineShMemWinMeshVariableArrayT();
345
346 public:
347
356 ARCANE_CORE_EXPORT ConstArrayView<Int32> machineRanks() const;
357
362 ARCANE_CORE_EXPORT void barrier() const;
363
364 public:
365
383 ARCANE_CORE_EXPORT Span2<DataType> view(Int32 rank) const;
384
402 ARCANE_CORE_EXPORT Span<DataType> operator()(Int32 rank, Int32 notlocal_id);
403
410 ARCANE_CORE_EXPORT void updateVariable();
411
412 private:
413
416 Int32 m_nb_elem_dim2{};
417};
418
419/*---------------------------------------------------------------------------*/
420/*---------------------------------------------------------------------------*/
421
422/*---------------------------------------------------------------------------*/
423/*---------------------------------------------------------------------------*/
424
438template <class ItemType, class DataType, class Extents>
440{
441
442 protected:
443
449
450 public:
451
452 ARCANE_CORE_EXPORT virtual ~MachineShMemWinMDVariableT();
453
454 public:
455
464 ARCANE_CORE_EXPORT ConstArrayView<Int32> machineRanks() const;
465
470 ARCANE_CORE_EXPORT void barrier() const;
471
472 public:
473
490 ARCANE_CORE_EXPORT MDSpan<DataType, typename MDDimType<Extents::rank() + 1>::DimType> view(Int32 rank) const;
491
509 ARCANE_CORE_EXPORT MDSpan<DataType, Extents> operator()(Int32 rank, Int32 notlocal_id);
510
517 ARCANE_CORE_EXPORT void updateVariable();
518
519 private:
520
523 Int32 m_nb_elem_dim2{};
524 std::array<Int32, Extents::rank()> m_shape_dim2{};
525};
526
527/*---------------------------------------------------------------------------*/
528/*---------------------------------------------------------------------------*/
529
530/*---------------------------------------------------------------------------*/
531/*---------------------------------------------------------------------------*/
532
546template <class ItemType, class DataType, class Extents>
548: public MachineShMemWinMDVariableT<ItemType, DataType, Extents>
549{
550
551 public:
552
558 : MachineShMemWinMDVariableT<ItemType, DataType, Extents>(var.underlyingVariable())
559 {}
560
561 ~MachineShMemWinMeshMDVariableT() override = default;
562};
563
564/*---------------------------------------------------------------------------*/
565/*---------------------------------------------------------------------------*/
566
567/*---------------------------------------------------------------------------*/
568/*---------------------------------------------------------------------------*/
569
583template <class ItemType, class DataType, class Extents>
585: public MachineShMemWinMDVariableT<ItemType, DataType, typename Extents::template AddedFirstExtentsType<DynExtent>>
586{
587 using AddedFirstExtentsType = Extents::template AddedFirstExtentsType<DynExtent>;
588
589 public:
590
595 template <Int32 Size>
597 : MachineShMemWinMDVariableT<ItemType, DataType, AddedFirstExtentsType>(var.underlyingVariable())
598 {}
599
600 ~MachineShMemWinMeshVectorMDVariableT() override = default;
601};
602
603/*---------------------------------------------------------------------------*/
604/*---------------------------------------------------------------------------*/
605
606/*---------------------------------------------------------------------------*/
607/*---------------------------------------------------------------------------*/
608
622template <class ItemType, class DataType, class Extents>
624: public MachineShMemWinMDVariableT<ItemType, DataType, typename Extents::template AddedFirstLastExtentsType<DynExtent, DynExtent>>
625{
626 using AddedFirstLastExtentsType = Extents::template AddedFirstLastExtentsType<DynExtent, DynExtent>;
627
628 public:
629
634 template <Int32 Row, Int32 Column>
636 : MachineShMemWinMDVariableT<ItemType, DataType, AddedFirstLastExtentsType>(var.underlyingVariable())
637 {}
638
639 ~MachineShMemWinMeshMatrixMDVariableT() override = default;
640};
641
642/*---------------------------------------------------------------------------*/
643/*---------------------------------------------------------------------------*/
644
645} // End namespace Arcane
646
647/*---------------------------------------------------------------------------*/
648/*---------------------------------------------------------------------------*/
649
650#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 de type NumMatrix multidimensionnelle sur une entité de maillage.
Variable tableau sur un type d'entité du maillage.
Variable scalaire sur un type d'entité du maillage.
Classe gérant une variable de type NumVector multidimensionnelle sur une entité de maillage.
Référence à une instance.
Vue pour un tableau 2D dont la taille est un 'Int64'.
Definition Span2.h:321
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.