Arcane  4.1.11.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
MachineShMemWinVariableBase.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/* MachineShMemWinVariableBase.h (C) 2000-2026 */
9/* */
10/* Classes de bases permettant d'exploiter l'objet MachineShMemWinVariable */
11/* pointé de la zone mémoire des variables en mémoire partagée. */
12/*---------------------------------------------------------------------------*/
13
14#ifndef ARCANE_CORE_INTERNAL_MACHINESHMEMWINVARIABLEBASE_H
15#define ARCANE_CORE_INTERNAL_MACHINESHMEMWINVARIABLEBASE_H
16
17/*---------------------------------------------------------------------------*/
18/*---------------------------------------------------------------------------*/
19
21
22#include "arcane/utils/UniqueArray.h"
23#include "arcane/utils/FixedArray.h"
24#include "arcane/utils/HashTableMap2.h"
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28
29namespace Arcane
30{
31
32/*---------------------------------------------------------------------------*/
33/*---------------------------------------------------------------------------*/
34
42class ARCANE_CORE_EXPORT MachineShMemWinVariableBase
43{
44
45 public:
46
52
53 public:
54
64
69 void barrier() const;
70
81
87 void updateVariable(Int64 nb_elem_dim1, Int64 sizeof_elem);
88
89 protected:
90
91 IVariable* m_var = nullptr;
92 IParallelMng* m_pm = nullptr;
93
94 ConstArrayView<Int32> m_machine_ranks;
95
96 // <world_rank, size_bytes>
98};
99
100/*---------------------------------------------------------------------------*/
101/*---------------------------------------------------------------------------*/
102
103/*---------------------------------------------------------------------------*/
104/*---------------------------------------------------------------------------*/
105
116class ARCANE_CORE_EXPORT MachineShMemWinVariable2DBase
118{
119
120 public:
121
127
128 public:
129
136 void updateVariable(Int64 nb_elem_dim1, Int64 nb_elem_dim2, Int64 sizeof_elem);
137
138 Int64 nbElemDim1(const Int32 rank) const { return m_nb_elem_dim1.at(rank); }
139 Int64 nbElemDim2(const Int32 rank) const { return m_nb_elem_dim2.at(rank); }
140
141 private:
142
143 // <world_rank, size_nb_elems>
146};
147
148/*---------------------------------------------------------------------------*/
149/*---------------------------------------------------------------------------*/
150
151/*---------------------------------------------------------------------------*/
152/*---------------------------------------------------------------------------*/
153
165class ARCANE_CORE_EXPORT MachineShMemWinVariableMDBase
167{
168
169 public:
170
176
177 public:
178
185 void updateVariable(Int64 nb_elem_dim1, Int32 nb_elem_dim2, Int64 sizeof_elem);
186
187 Int64 nbElemDim1(const Int32 rank) const { return m_nb_elem_dim1.at(rank); }
188 ArrayShape arrayShape() const;
189
190 private:
191
192 // <world_rank, size_nb_elems>
194};
195
196/*---------------------------------------------------------------------------*/
197/*---------------------------------------------------------------------------*/
198
199} // End namespace Arcane
200
201/*---------------------------------------------------------------------------*/
202/*---------------------------------------------------------------------------*/
203
204#endif
Déclarations des types généraux de Arcane.
Forme d'un tableau.
Definition ArrayShape.h:40
Vue constante d'un tableau de type T.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Interface d'une variable.
Definition IVariable.h:39
MachineShMemWinVariable2DBase(IVariable *var)
Constructeur.
void updateVariable(Int64 nb_elem_dim1, Int64 nb_elem_dim2, Int64 sizeof_elem)
Span< std::byte > segmentView(Int32 rank) const
Méthode permettant d'obtenir une vue sur le segment d'un autre sous-domaine du noeud.
MachineShMemWinVariableBase(IVariable *var)
Constructeur.
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.
void updateVariable(Int64 nb_elem_dim1, Int64 sizeof_elem)
void updateVariable(Int64 nb_elem_dim1, Int32 nb_elem_dim2, Int64 sizeof_elem)
MachineShMemWinVariableMDBase(IVariable *var)
Constructeur.
Vue d'un tableau d'éléments de type T.
Definition Span.h:633
Implementation of std::unordered_map.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
std::int64_t Int64
Type entier signé sur 64 bits.
std::int32_t Int32
Type entier signé sur 32 bits.