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