Arcane  v4.1.8.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 ConstArrayView<Int64> m_nb_elem_dim1;
312 ConstArrayView<Int64> m_nb_elem_dim2;
313};
314
315/*---------------------------------------------------------------------------*/
316/*---------------------------------------------------------------------------*/
317
318/*---------------------------------------------------------------------------*/
319/*---------------------------------------------------------------------------*/
320
321/*!
322 * \brief Classe permettant d'accéder aux éléments partagés de la variable
323 * en mémoire partagée.
324 *
325 * Il est nécessaire que cette variable soit allouée en mémoire partagée avec
326 * la propriété "IVariable::PInShMem".
327 *
328 * Cette classe fonctionne pour les variables tableaux au maillage.
329 *
330 * Si le maillage et/ou la taille de la variable change lorsqu'un objet de ce
331 * type est utilisé, il est nécessaire d'appeler la méthode \a updateVariable().
332 */
333template <class ItemType, class DataType>
335{
336
337 public:
338
339 /*!
340 * \brief Constructeur.
341 * \param var Variable ayant la propriété "IVariable::PInShMem".
342 */
344
345 ARCANE_CORE_EXPORT ~MachineShMemWinMeshVariableArrayT();
346
347 public:
348
349 /*!
350 * \brief Méthode permettant d'obtenir les rangs qui possèdent un segment
351 * dans la fenêtre.
352 *
353 * Appel non collectif.
354 *
355 * \return Une vue contenant les ids des rangs.
356 */
357 ARCANE_CORE_EXPORT ConstArrayView<Int32> machineRanks() const;
358
359 /*!
360 * \brief Méthode permettant d'attendre que tous les processus/threads
361 * du noeud appellent cette méthode pour continuer l'exécution.
362 */
363 ARCANE_CORE_EXPORT void barrier() const;
364
365 public:
366
367 /*!
368 * \brief Méthode permettant d'obtenir une vue sur la variable d'un
369 * autre sous-domaine du noeud.
370 *
371 * Équivalent à "var.asArray()" mais d'un autre sous-domaine.
372 * Le premier indice correspond au local_id, le second indice est la
373 * position de l'élément dans le tableau de l'item.
374 *
375 * \warning Attention : pour accéder aux éléments de la vue, il est
376 * nécessaire d'utiliser les local_ids de l'autre sous-domaine !
377 * Ne pas utiliser les local_ids de notre sous-domaine !
378 *
379 * Appel non collectif.
380 *
381 * \param rank Le rang du sous-domaine.
382 * \return Une vue 2D.
383 */
384 ARCANE_CORE_EXPORT Span2<DataType> view(Int32 rank) const;
385
386 /*!
387 * \brief Méthode permettant d'obtenir le tableau d'un item d'un autre
388 * sous-domaine.
389 *
390 * \warning Attention : le local_id correspond au local_id du sous-domaine
391 * \a rank ! Ne surtout pas utiliser un local_id de notre
392 * sous-domaine pour accéder aux éléments de la vue !
393 *
394 * \note Si plusieurs itérations sont nécessaires pour un même rang, il est
395 * préférable de récupérer une vue via \a segmentView(Int32 rank).
396 *
397 * Appel non collectif.
398 *
399 * \param rank Le rang du sous-domaine de la variable ciblée.
400 * \param notlocal_id Le local_id du sous-domaine \a rank.
401 * \return Le tableau de l'item.
402 */
403 ARCANE_CORE_EXPORT Span<DataType> operator()(Int32 rank, Int32 notlocal_id);
404
405 /*!
406 * \brief Méthode permettant de mettre à jour cet objet après un changement
407 * dans le maillage et/ou après un redimensionnement de la variable.
408 *
409 * Appel collectif.
410 */
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
427/*!
428 * \brief Classe permettant d'accéder aux éléments partagés de la variable
429 * en mémoire partagée.
430 *
431 * Cette classe ne peut pas être utilisée directement. Il est nécessaire
432 * d'utiliser une des classes suivante :
433 * - \a MachineShMemWinMeshMDVariableT pour les variables au maillage de type
434 * scalaire et de dimension max de 3,
435 * - \a MachineShMemWinMeshVectorMDVariableT pour les variables au maillage de
436 * type vecteur et de dimension max de 2,
437 * - \a MachineShMemWinMeshMatrixMDVariableT pour les variables au maillage de
438 * type matrice et de dimension max de 1.
439 */
440template <class ItemType, class DataType, class Extents>
442{
443
444 protected:
445
446 /*!
447 * \brief Constructeur.
448 * \param var Variable ayant la propriété "IVariable::PInShMem".
449 */
451
452 public:
453
454 ARCANE_CORE_EXPORT virtual ~MachineShMemWinMDVariableT();
455
456 public:
457
458 /*!
459 * \brief Méthode permettant d'obtenir les rangs qui possèdent un segment
460 * dans la fenêtre.
461 *
462 * Appel non collectif.
463 *
464 * \return Une vue contenant les ids des rangs.
465 */
466 ARCANE_CORE_EXPORT ConstArrayView<Int32> machineRanks() const;
467
468 /*!
469 * \brief Méthode permettant d'attendre que tous les processus/threads
470 * du noeud appellent cette méthode pour continuer l'exécution.
471 */
472 ARCANE_CORE_EXPORT void barrier() const;
473
474 public:
475
476 /*!
477 * \brief Méthode permettant d'obtenir une vue sur la variable d'un
478 * autre sous-domaine du noeud.
479 *
480 * Le premier indice correspond au local_id, les autres indices sont la
481 * position de l'élément dans le tableau de l'item.
482 *
483 * \warning Attention : pour accéder aux éléments de la vue, il est
484 * nécessaire d'utiliser les local_ids de l'autre sous-domaine !
485 * Ne pas utiliser les local_ids de notre sous-domaine !
486 *
487 * Appel non collectif.
488 *
489 * \param rank Le rang du sous-domaine.
490 * \return Une vue.
491 */
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
497 /*!
498 * \brief Méthode permettant d'obtenir le tableau multi-dimensionnel d'un
499 * item d'un autre sous-domaine.
500 *
501 * \warning Attention : le local_id correspond au local_id du sous-domaine
502 * \a rank ! Ne surtout pas utiliser un local_id de notre
503 * sous-domaine pour accéder aux éléments de la vue !
504 *
505 * \note Si plusieurs itérations sont nécessaires pour un même rang, il est
506 * préférable de récupérer une vue via \a view(Int32 rank).
507 *
508 * Appel non collectif.
509 *
510 * \param rank Le rang du sous-domaine de la variable ciblée.
511 * \param notlocal_id Le local_id du sous-domaine \a rank.
512 * \return Le tableau MD de l'item.
513 */
514 ARCANE_CORE_EXPORT MDSpan<DataType, Extents> operator()(Int32 rank, Int32 notlocal_id);
515
516 /*!
517 * \brief Méthode permettant de mettre à jour cet objet après un changement
518 * dans le maillage et/ou après un redimensionnement de la variable.
519 *
520 * Appel collectif.
521 */
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
539/*!
540 * \brief Classe permettant d'accéder aux éléments partagés de la variable
541 * en mémoire partagée.
542 *
543 * Il est nécessaire que cette variable soit allouée en mémoire partagée avec
544 * la propriété "IVariable::PInShMem".
545 *
546 * Cette classe fonctionne pour les variables au maillage de type scalaire et
547 * de dimension max de 3.
548 *
549 * Si le maillage et/ou la taille de la variable change lorsqu'un objet de ce
550 * type est utilisé, il est nécessaire d'appeler la méthode \a updateVariable().
551 */
552template <class ItemType, class DataType, class Extents>
554: public MachineShMemWinMDVariableT<ItemType, DataType, Extents>
555{
556
557 public:
558
559 /*!
560 * \brief Constructeur.
561 * \param var Variable ayant la propriété "IVariable::PInShMem".
562 */
564 : MachineShMemWinMDVariableT<ItemType, DataType, Extents>(var.underlyingVariable())
565 {}
566
567 ~MachineShMemWinMeshMDVariableT() override = default;
568};
569
570/*---------------------------------------------------------------------------*/
571/*---------------------------------------------------------------------------*/
572
573/*---------------------------------------------------------------------------*/
574/*---------------------------------------------------------------------------*/
575
576/*!
577 * \brief Classe permettant d'accéder aux éléments partagés de la variable
578 * en mémoire partagée.
579 *
580 * Il est nécessaire que cette variable soit allouée en mémoire partagée avec
581 * la propriété "IVariable::PInShMem".
582 *
583 * Cette classe fonctionne pour les variables au maillage de type vecteur et
584 * de dimension max de 2.
585 *
586 * Si le maillage et/ou la taille de la variable change lorsqu'un objet de ce
587 * type est utilisé, il est nécessaire d'appeler la méthode \a updateVariable().
588 */
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
597 /*!
598 * \brief Constructeur.
599 * \param var Variable ayant la propriété "IVariable::PInShMem".
600 */
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
615/*!
616 * \brief Classe permettant d'accéder aux éléments partagés de la variable
617 * en mémoire partagée.
618 *
619 * Il est nécessaire que cette variable soit allouée en mémoire partagée avec
620 * la propriété "IVariable::PInShMem".
621 *
622 * Cette classe fonctionne pour les variables au maillage de type matrice et
623 * de dimension max de 1.
624 *
625 * Si le maillage et/ou la taille de la variable change lorsqu'un objet de ce
626 * type est utilisé, il est nécessaire d'appeler la méthode \a updateVariable().
627 */
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
636 /*!
637 * \brief Constructeur.
638 * \param var Variable ayant la propriété "IVariable::PInShMem".
639 */
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.
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.