Arcane  v4.1.7.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 ConstArrayView<Int64> m_nb_elem_dim1;
312 ConstArrayView<Int64> m_nb_elem_dim2;
313};
314
315/*---------------------------------------------------------------------------*/
316/*---------------------------------------------------------------------------*/
317
318/*---------------------------------------------------------------------------*/
319/*---------------------------------------------------------------------------*/
320
333template <class ItemType, class DataType>
335{
336
337 public:
338
344
345 ARCANE_CORE_EXPORT ~MachineShMemWinMeshVariableArrayT();
346
347 public:
348
357 ARCANE_CORE_EXPORT ConstArrayView<Int32> machineRanks() const;
358
363 ARCANE_CORE_EXPORT void barrier() const;
364
365 public:
366
384 ARCANE_CORE_EXPORT Span2<DataType> view(Int32 rank) const;
385
403 ARCANE_CORE_EXPORT Span<DataType> operator()(Int32 rank, Int32 notlocal_id);
404
411 ARCANE_CORE_EXPORT void updateVariable();
412
413 private:
414
417 ConstArrayView<Int64> m_nb_elem_dim1;
418 Int32 m_nb_elem_dim2{};
419};
420
421/*---------------------------------------------------------------------------*/
422/*---------------------------------------------------------------------------*/
423
424/*---------------------------------------------------------------------------*/
425/*---------------------------------------------------------------------------*/
426
440template <class ItemType, class DataType, class Extents>
442{
443
444 protected:
445
451
452 public:
453
454 ARCANE_CORE_EXPORT virtual ~MachineShMemWinMDVariableT();
455
456 public:
457
466 ARCANE_CORE_EXPORT ConstArrayView<Int32> machineRanks() const;
467
472 ARCANE_CORE_EXPORT void barrier() const;
473
474 public:
475
492 // template <class X = MDDimType<Extents::rank() + 1>::DimType>
493 // MDSpan<DataType, X> view(Int32 rank) const;
494
495 ARCANE_CORE_EXPORT MDSpan<DataType, typename MDDimType<Extents::rank() + 1>::DimType> view(Int32 rank) const;
496
514 ARCANE_CORE_EXPORT MDSpan<DataType, Extents> operator()(Int32 rank, Int32 notlocal_id);
515
522 ARCANE_CORE_EXPORT void updateVariable();
523
524 private:
525
528 ConstArrayView<Int64> m_nb_elem_dim1;
529 Int32 m_nb_elem_dim2{};
530 std::array<Int32, Extents::rank()> m_shape_dim2{};
531};
532
533/*---------------------------------------------------------------------------*/
534/*---------------------------------------------------------------------------*/
535
536/*---------------------------------------------------------------------------*/
537/*---------------------------------------------------------------------------*/
538
552template <class ItemType, class DataType, class Extents>
554: public MachineShMemWinMDVariableT<ItemType, DataType, Extents>
555{
556
557 public:
558
564 : MachineShMemWinMDVariableT<ItemType, DataType, Extents>(var.underlyingVariable())
565 {}
566
567 ~MachineShMemWinMeshMDVariableT() override = default;
568};
569
570/*---------------------------------------------------------------------------*/
571/*---------------------------------------------------------------------------*/
572
573/*---------------------------------------------------------------------------*/
574/*---------------------------------------------------------------------------*/
575
589template <class ItemType, class DataType, class Extents>
591: public MachineShMemWinMDVariableT<ItemType, DataType, typename Extents::template AddedFirstExtentsType<DynExtent>>
592{
593 using AddedFirstExtentsType = Extents::template AddedFirstExtentsType<DynExtent>;
594
595 public:
596
601 template <Int32 Size>
603 : MachineShMemWinMDVariableT<ItemType, DataType, AddedFirstExtentsType>(var.underlyingVariable())
604 {}
605
606 ~MachineShMemWinMeshVectorMDVariableT() override = default;
607};
608
609/*---------------------------------------------------------------------------*/
610/*---------------------------------------------------------------------------*/
611
612/*---------------------------------------------------------------------------*/
613/*---------------------------------------------------------------------------*/
614
628template <class ItemType, class DataType, class Extents>
630: public MachineShMemWinMDVariableT<ItemType, DataType, typename Extents::template AddedFirstLastExtentsType<DynExtent, DynExtent>>
631{
632 using AddedFirstLastExtentsType = Extents::template AddedFirstLastExtentsType<DynExtent, DynExtent>;
633
634 public:
635
640 template <Int32 Row, Int32 Column>
642 : MachineShMemWinMDVariableT<ItemType, DataType, AddedFirstLastExtentsType>(var.underlyingVariable())
643 {}
644
645 ~MachineShMemWinMeshMatrixMDVariableT() override = default;
646};
647
648/*---------------------------------------------------------------------------*/
649/*---------------------------------------------------------------------------*/
650
651} // End namespace Arcane
652
653/*---------------------------------------------------------------------------*/
654/*---------------------------------------------------------------------------*/
655
656#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.