Arcane  4.2.1.0
Documentation utilisateur
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
39class MachineShMemWinVariableBase;
40class MachineShMemWinVariable2DBase;
41class MachineShMemWinVariableMDBase;
42
43/*---------------------------------------------------------------------------*/
44/*---------------------------------------------------------------------------*/
45
46/*!
47 * \brief Classe permettant d'accéder aux éléments partagés de la variable
48 * en mémoire partagée.
49 *
50 * Pour avoir accès à toutes les propriétés, il est nécessaire d'utiliser une
51 * des classes enfants :
52 * - \a MachineShMemWinVariableArrayT pour les variables tableaux sans
53 * support,
54 * - \a MachineShMemWinVariableItemT pour les variables au maillage.
55 */
56class ARCANE_CORE_EXPORT MachineShMemWinVariableCommon
57{
58
59 protected:
60
61 /*!
62 * \brief Constructeur.
63 * \param var Variable ayant la propriété "IVariable::PInShMem".
64 */
66
67 public:
68
70
71 public:
72
73 /*!
74 * \brief Méthode permettant d'obtenir les rangs qui possèdent un segment
75 * dans la fenêtre.
76 *
77 * Appel non collectif.
78 *
79 * \return Une vue contenant les ids des rangs.
80 */
82
83 /*!
84 * \brief Méthode permettant d'attendre que tous les processus/threads
85 * du noeud appellent cette méthode pour continuer l'exécution.
86 */
87 void barrier() const;
88
89 protected:
90
92};
93
94/*---------------------------------------------------------------------------*/
95/*---------------------------------------------------------------------------*/
96
97/*---------------------------------------------------------------------------*/
98/*---------------------------------------------------------------------------*/
99
100/*!
101 * \brief Classe permettant d'accéder aux éléments partagés de la variable
102 * en mémoire partagée.
103 *
104 * Il est nécessaire que cette variable soit allouée en mémoire partagée avec
105 * la propriété "IVariable::PInShMem".
106 *
107 * Cette classe fonctionne pour les variables tableaux sans support.
108 *
109 * Si la taille de la variable change lorsqu'un objet de ce type est utilisé,
110 * il est nécessaire d'appeler la méthode \a updateVariable().
111 */
112template <class DataType>
115{
116
117 public:
118
119 /*!
120 * \brief Constructeur.
121 * \param var Variable ayant la propriété "PInShMem".
122 */
123 ARCANE_CORE_EXPORT explicit MachineShMemWinVariableArrayT(VariableRefArrayT<DataType> var);
124 ARCANE_CORE_EXPORT ~MachineShMemWinVariableArrayT() override;
125
126 public:
127
128 /*!
129 * \brief Méthode permettant d'obtenir une vue sur le tableau d'un
130 * autre sous-domaine du noeud.
131 *
132 * Équivalent à "var.asArray()" mais d'un autre sous-domaine.
133 *
134 * Appel non collectif.
135 *
136 * \param rank Le rang du sous-domaine.
137 * \return Une vue.
138 */
139 ARCANE_CORE_EXPORT Span<DataType> view(Int32 rank) const;
140
141 /*!
142 * \brief Méthode permettant de mettre à jour cet objet après un
143 * redimensionnement de la variable.
144 *
145 * Appel collectif.
146 */
147 ARCANE_CORE_EXPORT void updateVariable();
148
149 private:
150
152};
153
154/*---------------------------------------------------------------------------*/
155/*---------------------------------------------------------------------------*/
156
157/*---------------------------------------------------------------------------*/
158/*---------------------------------------------------------------------------*/
159
160/*!
161 * \brief Classe permettant d'accéder aux éléments partagés de la variable
162 * en mémoire partagée.
163 *
164 * Il est nécessaire que cette variable soit allouée en mémoire partagée avec
165 * la propriété "IVariable::PInShMem".
166 *
167 * Cette classe fonctionne pour les variables scalaire au maillage.
168 *
169 * Si le maillage change lorsqu'un objet de ce type est utilisé, il est
170 * nécessaire d'appeler la méthode \a updateVariable().
171 */
172template <class ItemType, class DataType>
175{
176
177 public:
178
179 /*!
180 * \brief Constructeur.
181 * \param var Variable ayant la propriété "IVariable::PInShMem".
182 */
184
185 ARCANE_CORE_EXPORT ~MachineShMemWinMeshVariableScalarT() override;
186
187 public:
188
189 /*!
190 * \brief Méthode permettant d'obtenir une vue sur la variable d'un
191 * autre sous-domaine du noeud.
192 *
193 * Équivalent à "var.asArray()" mais d'un autre sous-domaine.
194 *
195 * \warning Attention : pour accéder aux éléments de la vue, il est
196 * nécessaire d'utiliser les local_ids de l'autre sous-domaine !
197 * Ne pas utiliser les local_ids de notre sous-domaine !
198 *
199 * Appel non collectif.
200 *
201 * \param rank Le rang du sous-domaine.
202 * \return Une vue.
203 */
204 ARCANE_CORE_EXPORT Span<DataType> view(Int32 rank) const;
205
206 /*!
207 * \brief Méthode permettant d'obtenir un élément de la variable d'un autre
208 * sous-domaine.
209 *
210 * \warning Attention : le local_id correspond au local_id du sous-domaine
211 * \a rank ! Ne surtout pas utiliser un local_id de notre
212 * sous-domaine pour accéder aux éléments de la vue !
213 *
214 * \note Si plusieurs itérations sont nécessaires pour un même rang, il est
215 * préférable de récupérer une vue via \a segmentView(Int32 rank).
216 *
217 * Appel non collectif.
218 *
219 * \param rank Le rang du sous-domaine de la variable ciblée.
220 * \param notlocal_id Le local_id du sous-domaine \a rank.
221 * \return L'élément de l'item.
222 */
223 ARCANE_CORE_EXPORT DataType operator()(Int32 rank, Int32 notlocal_id);
224
225 /*!
226 * \brief Méthode permettant de mettre à jour cet objet après un changement
227 * dans le maillage.
228 *
229 * Appel collectif.
230 */
231 ARCANE_CORE_EXPORT void updateVariable();
232
233 private:
234
236};
237
238/*---------------------------------------------------------------------------*/
239/*---------------------------------------------------------------------------*/
240
241/*---------------------------------------------------------------------------*/
242/*---------------------------------------------------------------------------*/
243
244/*!
245 * \brief Classe permettant d'accéder aux éléments partagés de la variable
246 * en mémoire partagée.
247 *
248 * Il est nécessaire que cette variable soit allouée en mémoire partagée avec
249 * la propriété "IVariable::PInShMem".
250 *
251 * Cette classe fonctionne pour les variables tableaux 2D sans support.
252 *
253 * Si la taille de la variable change lorsqu'un objet de ce type est utilisé,
254 * il est nécessaire d'appeler la méthode \a updateVariable().
255 */
256template <class DataType>
258{
259 public:
260
261 /*!
262 * \brief Constructeur.
263 * \param var Variable ayant la propriété "IVariable::PInShMem".
264 */
265 ARCANE_CORE_EXPORT explicit MachineShMemWinVariableArray2T(VariableRefArray2T<DataType> var);
266
267 ARCANE_CORE_EXPORT ~MachineShMemWinVariableArray2T();
268
269 public:
270
271 /*!
272 * \brief Méthode permettant d'obtenir les rangs qui possèdent un segment
273 * dans la fenêtre.
274 *
275 * Appel non collectif.
276 *
277 * \return Une vue contenant les ids des rangs.
278 */
279 ARCANE_CORE_EXPORT ConstArrayView<Int32> machineRanks() const;
280
281 /*!
282 * \brief Méthode permettant d'attendre que tous les processus/threads
283 * du noeud appellent cette méthode pour continuer l'exécution.
284 */
285 ARCANE_CORE_EXPORT void barrier() const;
286
287 public:
288
289 /*!
290 * \brief Méthode permettant d'obtenir une vue sur le tableau d'un
291 * autre sous-domaine du noeud.
292 *
293 * Appel non collectif.
294 *
295 * \param rank Le rang du sous-domaine.
296 * \return Une vue 2D.
297 */
298 ARCANE_CORE_EXPORT Span2<DataType> view(Int32 rank) const;
299
300 /*!
301 * \brief Méthode permettant de mettre à jour cet objet après un
302 * redimensionnement de la variable.
303 *
304 * Appel collectif.
305 */
306 ARCANE_CORE_EXPORT void updateVariable();
307
308 private:
309
312};
313
314/*---------------------------------------------------------------------------*/
315/*---------------------------------------------------------------------------*/
316
317/*---------------------------------------------------------------------------*/
318/*---------------------------------------------------------------------------*/
319
320/*!
321 * \brief Classe permettant d'accéder aux éléments partagés de la variable
322 * en mémoire partagée.
323 *
324 * Il est nécessaire que cette variable soit allouée en mémoire partagée avec
325 * la propriété "IVariable::PInShMem".
326 *
327 * Cette classe fonctionne pour les variables tableaux au maillage.
328 *
329 * Si le maillage et/ou la taille de la variable change lorsqu'un objet de ce
330 * type est utilisé, il est nécessaire d'appeler la méthode \a updateVariable().
331 */
332template <class ItemType, class DataType>
334{
335
336 public:
337
338 /*!
339 * \brief Constructeur.
340 * \param var Variable ayant la propriété "IVariable::PInShMem".
341 */
343
344 ARCANE_CORE_EXPORT ~MachineShMemWinMeshVariableArrayT();
345
346 public:
347
348 /*!
349 * \brief Méthode permettant d'obtenir les rangs qui possèdent un segment
350 * dans la fenêtre.
351 *
352 * Appel non collectif.
353 *
354 * \return Une vue contenant les ids des rangs.
355 */
356 ARCANE_CORE_EXPORT ConstArrayView<Int32> machineRanks() const;
357
358 /*!
359 * \brief Méthode permettant d'attendre que tous les processus/threads
360 * du noeud appellent cette méthode pour continuer l'exécution.
361 */
362 ARCANE_CORE_EXPORT void barrier() const;
363
364 public:
365
366 /*!
367 * \brief Méthode permettant d'obtenir une vue sur la variable d'un
368 * autre sous-domaine du noeud.
369 *
370 * Équivalent à "var.asArray()" mais d'un autre sous-domaine.
371 * Le premier indice correspond au local_id, le second indice est la
372 * position de l'élément dans le tableau de l'item.
373 *
374 * \warning Attention : pour accéder aux éléments de la vue, il est
375 * nécessaire d'utiliser les local_ids de l'autre sous-domaine !
376 * Ne pas utiliser les local_ids de notre sous-domaine !
377 *
378 * Appel non collectif.
379 *
380 * \param rank Le rang du sous-domaine.
381 * \return Une vue 2D.
382 */
383 ARCANE_CORE_EXPORT Span2<DataType> view(Int32 rank) const;
384
385 /*!
386 * \brief Méthode permettant d'obtenir le tableau d'un item d'un autre
387 * sous-domaine.
388 *
389 * \warning Attention : le local_id correspond au local_id du sous-domaine
390 * \a rank ! Ne surtout pas utiliser un local_id de notre
391 * sous-domaine pour accéder aux éléments de la vue !
392 *
393 * \note Si plusieurs itérations sont nécessaires pour un même rang, il est
394 * préférable de récupérer une vue via \a segmentView(Int32 rank).
395 *
396 * Appel non collectif.
397 *
398 * \param rank Le rang du sous-domaine de la variable ciblée.
399 * \param notlocal_id Le local_id du sous-domaine \a rank.
400 * \return Le tableau de l'item.
401 */
402 ARCANE_CORE_EXPORT Span<DataType> operator()(Int32 rank, Int32 notlocal_id);
403
404 /*!
405 * \brief Méthode permettant de mettre à jour cet objet après un changement
406 * dans le maillage et/ou après un redimensionnement de la variable.
407 *
408 * Appel collectif.
409 */
410 ARCANE_CORE_EXPORT void updateVariable();
411
412 private:
413
416 Int32 m_nb_elem_dim2{};
417};
418
419/*---------------------------------------------------------------------------*/
420/*---------------------------------------------------------------------------*/
421
422/*---------------------------------------------------------------------------*/
423/*---------------------------------------------------------------------------*/
424
425/*!
426 * \brief Classe permettant d'accéder aux éléments partagés de la variable
427 * en mémoire partagée.
428 *
429 * Cette classe ne peut pas être utilisée directement. Il est nécessaire
430 * d'utiliser une des classes suivante :
431 * - \a MachineShMemWinMeshMDVariableT pour les variables au maillage de type
432 * scalaire et de dimension max de 3,
433 * - \a MachineShMemWinMeshVectorMDVariableT pour les variables au maillage de
434 * type vecteur et de dimension max de 2,
435 * - \a MachineShMemWinMeshMatrixMDVariableT pour les variables au maillage de
436 * type matrice et de dimension max de 1.
437 */
438template <class ItemType, class DataType, class Extents>
440{
441
442 protected:
443
444 /*!
445 * \brief Constructeur.
446 * \param var Variable ayant la propriété "IVariable::PInShMem".
447 */
449
450 public:
451
452 ARCANE_CORE_EXPORT virtual ~MachineShMemWinMDVariableT();
453
454 public:
455
456 /*!
457 * \brief Méthode permettant d'obtenir les rangs qui possèdent un segment
458 * dans la fenêtre.
459 *
460 * Appel non collectif.
461 *
462 * \return Une vue contenant les ids des rangs.
463 */
464 ARCANE_CORE_EXPORT ConstArrayView<Int32> machineRanks() const;
465
466 /*!
467 * \brief Méthode permettant d'attendre que tous les processus/threads
468 * du noeud appellent cette méthode pour continuer l'exécution.
469 */
470 ARCANE_CORE_EXPORT void barrier() const;
471
472 public:
473
474 /*!
475 * \brief Méthode permettant d'obtenir une vue sur la variable d'un
476 * autre sous-domaine du noeud.
477 *
478 * Le premier indice correspond au local_id, les autres indices sont la
479 * position de l'élément dans le tableau de l'item.
480 *
481 * \warning Attention : pour accéder aux éléments de la vue, il est
482 * nécessaire d'utiliser les local_ids de l'autre sous-domaine !
483 * Ne pas utiliser les local_ids de notre sous-domaine !
484 *
485 * Appel non collectif.
486 *
487 * \param rank Le rang du sous-domaine.
488 * \return Une vue.
489 */
490 ARCANE_CORE_EXPORT MDSpan<DataType, typename MDDimType<Extents::rank() + 1>::DimType> view(Int32 rank) const;
491
492 /*!
493 * \brief Méthode permettant d'obtenir le tableau multi-dimensionnel d'un
494 * item d'un autre sous-domaine.
495 *
496 * \warning Attention : le local_id correspond au local_id du sous-domaine
497 * \a rank ! Ne surtout pas utiliser un local_id de notre
498 * sous-domaine pour accéder aux éléments de la vue !
499 *
500 * \note Si plusieurs itérations sont nécessaires pour un même rang, il est
501 * préférable de récupérer une vue via \a view(Int32 rank).
502 *
503 * Appel non collectif.
504 *
505 * \param rank Le rang du sous-domaine de la variable ciblée.
506 * \param notlocal_id Le local_id du sous-domaine \a rank.
507 * \return Le tableau MD de l'item.
508 */
509 ARCANE_CORE_EXPORT MDSpan<DataType, Extents> operator()(Int32 rank, Int32 notlocal_id);
510
511 /*!
512 * \brief Méthode permettant de mettre à jour cet objet après un changement
513 * dans le maillage et/ou après un redimensionnement de la variable.
514 *
515 * Appel collectif.
516 */
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
533/*!
534 * \brief Classe permettant d'accéder aux éléments partagés de la variable
535 * en mémoire partagée.
536 *
537 * Il est nécessaire que cette variable soit allouée en mémoire partagée avec
538 * la propriété "IVariable::PInShMem".
539 *
540 * Cette classe fonctionne pour les variables au maillage de type scalaire et
541 * de dimension max de 3.
542 *
543 * Si le maillage et/ou la taille de la variable change lorsqu'un objet de ce
544 * type est utilisé, il est nécessaire d'appeler la méthode \a updateVariable().
545 */
546template <class ItemType, class DataType, class Extents>
548: public MachineShMemWinMDVariableT<ItemType, DataType, Extents>
549{
550
551 public:
552
553 /*!
554 * \brief Constructeur.
555 * \param var Variable ayant la propriété "IVariable::PInShMem".
556 */
558 : MachineShMemWinMDVariableT<ItemType, DataType, Extents>(var.underlyingVariable())
559 {}
560
561 ~MachineShMemWinMeshMDVariableT() override = default;
562};
563
564/*---------------------------------------------------------------------------*/
565/*---------------------------------------------------------------------------*/
566
567/*---------------------------------------------------------------------------*/
568/*---------------------------------------------------------------------------*/
569
570/*!
571 * \brief Classe permettant d'accéder aux éléments partagés de la variable
572 * en mémoire partagée.
573 *
574 * Il est nécessaire que cette variable soit allouée en mémoire partagée avec
575 * la propriété "IVariable::PInShMem".
576 *
577 * Cette classe fonctionne pour les variables au maillage de type vecteur et
578 * de dimension max de 2.
579 *
580 * Si le maillage et/ou la taille de la variable change lorsqu'un objet de ce
581 * type est utilisé, il est nécessaire d'appeler la méthode \a updateVariable().
582 */
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
591 /*!
592 * \brief Constructeur.
593 * \param var Variable ayant la propriété "IVariable::PInShMem".
594 */
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
609/*!
610 * \brief Classe permettant d'accéder aux éléments partagés de la variable
611 * en mémoire partagée.
612 *
613 * Il est nécessaire que cette variable soit allouée en mémoire partagée avec
614 * la propriété "IVariable::PInShMem".
615 *
616 * Cette classe fonctionne pour les variables au maillage de type matrice et
617 * de dimension max de 1.
618 *
619 * Si le maillage et/ou la taille de la variable change lorsqu'un objet de ce
620 * type est utilisé, il est nécessaire d'appeler la méthode \a updateVariable().
621 */
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
630 /*!
631 * \brief Constructeur.
632 * \param var Variable ayant la propriété "IVariable::PInShMem".
633 */
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.
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.
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 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.