Arcane  v4.1.4.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
DynamicMachineMemoryWindowVariable.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/* DynamicMachineMemoryWindowVariable.h (C) 2000-2026 */
9/* */
10/* Classe permettant d'accéder à la partie en mémoire partagée d'une */
11/* variable. */
12/*---------------------------------------------------------------------------*/
13
14#ifndef ARCANE_CORE_DYNAMICMACHINEMEMORYWINDOWVARIABLE_H
15#define ARCANE_CORE_DYNAMICMACHINEMEMORYWINDOWVARIABLE_H
16
17/*---------------------------------------------------------------------------*/
18/*---------------------------------------------------------------------------*/
19
21
22#include "arcane/core/DynamicMachineMemoryWindowVariableBase.h"
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27namespace Arcane
28{
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32
33/*!
34 * \brief Classe permettant d'accéder à la partie en mémoire partagée d'une
35 * variable.
36 *
37 * Il est nécessaire que cette variable soit allouée en mémoire partagée avec
38 * la propriété "IVariable::PShMem".
39 *
40 * \tparam DataType Type de la donnée de la variable.
41 */
42template <class DataType>
44{
45
46 public:
47
48 /*!
49 * \brief Constructeur.
50 * \param var Variable ayant la propriété "IVariable::PShMem".
51 */
52 template <class ItemType>
56
57 /*!
58 * \brief Constructeur.
59 * \param var Variable ayant la propriété "IVariable::PShMem".
60 */
61 template <class ItemType>
65
66 public:
67
68 /*!
69 * \brief Méthode permettant d'obtenir les rangs qui possèdent un segment
70 * dans la fenêtre.
71 *
72 * Appel non collectif.
73 *
74 * \return Une vue contenant les ids des rangs.
75 */
77 {
78 return m_base.machineRanks();
79 }
80
81 /*!
82 * \brief Méthode permettant d'attendre que tous les processus/threads
83 * du noeud appellent cette méthode pour continuer l'exécution.
84 */
85 void barrier() const
86 {
87 m_base.barrier();
88 }
89
90 /*!
91 * \brief Méthode permettant d'obtenir une vue sur notre segment.
92 *
93 * Équivalent à "var.asArray()".
94 *
95 * Appel non collectif.
96 *
97 * \return Une vue.
98 */
100 {
101 return asSpan<DataType>(m_base.segmentView());
102 }
103
104 /*!
105 * \brief Méthode permettant d'obtenir une vue sur le segment d'un
106 * autre sous-domaine du noeud.
107 *
108 * Appel non collectif.
109 *
110 * \param rank Le rang du sous-domaine.
111 * \return Une vue.
112 */
114 {
115 return asSpan<DataType>(m_base.segmentView(rank));
116 }
117
118 private:
119
121};
122
123/*---------------------------------------------------------------------------*/
124/*---------------------------------------------------------------------------*/
125
126} // End namespace Arcane
127
128/*---------------------------------------------------------------------------*/
129/*---------------------------------------------------------------------------*/
130
131#endif
Déclarations des types généraux de Arcane.
Vue constante d'un tableau de type T.
Classe permettant d'accéder à la partie en mémoire partagée entre sous-domaines d'un même noeud d'une...
Span< DataType > segmentView(Int32 rank) const
Méthode permettant d'obtenir une vue sur le segment d'un autre sous-domaine du noeud.
ConstArrayView< Int32 > machineRanks() const
Méthode permettant d'obtenir les rangs qui possèdent un segment dans la fenêtre.
DynamicMachineMemoryWindowVariable(MeshVariableScalarRefT< ItemType, DataType > var)
Constructeur.
void barrier() const
Méthode permettant d'attendre que tous les processus/threads du noeud appellent cette méthode pour co...
DynamicMachineMemoryWindowVariable(MeshVariableArrayRefT< ItemType, DataType > var)
Constructeur.
Span< DataType > segmentView() const
Méthode permettant d'obtenir une vue sur notre segment.
Variable tableau sur un type d'entité du maillage.
Variable scalaire sur un type d'entité du maillage.
Vue d'un tableau d'éléments de type T.
Definition Span.h:633
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Span< DataType > asSpan(Span< std::byte, Extent > bytes)
Converti un Span<std::byte> en un Span<DataType>.
Definition Span.h:1114
std::int32_t Int32
Type entier signé sur 32 bits.