Arcane  v3.16.6.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
MachineMemoryWindowBase.cc
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 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/* MachineMemoryWindowBase.cc (C) 2000-2025 */
9/* */
10/* Classe permettant de créer une fenêtre mémoire partagée entre les */
11/* processus d'un même noeud. */
12/*---------------------------------------------------------------------------*/
13
14#include "arcane/core/MachineMemoryWindowBase.h"
15
16#include "arcane/core/IParallelMng.h"
17#include "arcane/core/internal/IParallelMngInternal.h"
18
19#include "arcane/utils/NumericTypes.h"
20
21#include "arccore/message_passing/internal/IMachineMemoryWindowBaseInternal.h"
22
23/*---------------------------------------------------------------------------*/
24/*---------------------------------------------------------------------------*/
25
26namespace Arcane
27{
28
30MachineMemoryWindowBase(IParallelMng* pm, Int64 nb_elem_segment, Int32 sizeof_elem)
31: m_pm_internal(pm->_internalApi())
32, m_sizeof_elem(sizeof_elem)
33{
34 m_node_window_base = m_pm_internal->createMachineMemoryWindowBase(nb_elem_segment * static_cast<Int64>(sizeof_elem), sizeof_elem);
35}
36
37/*---------------------------------------------------------------------------*/
38/*---------------------------------------------------------------------------*/
39
41segmentView() const
42{
43 return m_node_window_base->segment();
44}
45
46/*---------------------------------------------------------------------------*/
47/*---------------------------------------------------------------------------*/
48
50segmentView(Int32 rank) const
51{
52 return m_node_window_base->segment(rank);
53}
54
55/*---------------------------------------------------------------------------*/
56/*---------------------------------------------------------------------------*/
57
59windowView() const
60{
61 return m_node_window_base->window();
62}
63
64/*---------------------------------------------------------------------------*/
65/*---------------------------------------------------------------------------*/
66
68segmentConstView() const
69{
70 return m_node_window_base->segment();
71}
72
73/*---------------------------------------------------------------------------*/
74/*---------------------------------------------------------------------------*/
75
77segmentConstView(Int32 rank) const
78{
79 return m_node_window_base->segment(rank);
80}
81
82/*---------------------------------------------------------------------------*/
83/*---------------------------------------------------------------------------*/
84
86windowConstView() const
87{
88 return m_node_window_base->window();
89}
90
91/*---------------------------------------------------------------------------*/
92/*---------------------------------------------------------------------------*/
93
95resizeSegment(Integer new_nb_elem) const
96{
97 m_node_window_base->resizeSegment(new_nb_elem * static_cast<Int64>(m_sizeof_elem));
98}
99
100/*---------------------------------------------------------------------------*/
101/*---------------------------------------------------------------------------*/
102
104machineRanks() const
105{
106 return m_node_window_base->machineRanks();
107}
108
109/*---------------------------------------------------------------------------*/
110/*---------------------------------------------------------------------------*/
111
113barrier() const
114{
115 m_node_window_base->barrier();
116}
117
118/*---------------------------------------------------------------------------*/
119/*---------------------------------------------------------------------------*/
120
121} // End namespace Arcane
122
123/*---------------------------------------------------------------------------*/
124/*---------------------------------------------------------------------------*/
Vue constante d'un tableau de type T.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Span< const std::byte > windowConstView() const
Méthode permettant d'obtenir une vue constante sur toute la fenêtre mémoire.
MachineMemoryWindowBase(IParallelMng *pm, Int64 sizeof_segment, Int32 sizeof_elem)
Constructeur.
void resizeSegment(Integer new_size) const
Méthode permettant de redimensionner les segments de la fenêtre. Appel collectif.
void barrier() const
Méthode permettant d'attendre que tous les processus/threads du noeud appellent cette méthode pour co...
Span< const std::byte > segmentConstView() const
Méthode permettant d'obtenir une vue constante sur notre segment de fenêtre mémoire.
ConstArrayView< Int32 > machineRanks() const
Méthode permettant d'obtenir les rangs qui possèdent un segment dans la fenêtre.
Span< std::byte > windowView() const
Méthode permettant d'obtenir une vue sur toute la fenêtre mémoire.
Span< std::byte > segmentView() const
Méthode permettant d'obtenir une vue sur notre segment de fenêtre mémoire.
Vue d'un tableau d'éléments de type T.
Definition Span.h:513
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int64_t Int64
Type entier signé sur 64 bits.
Int32 Integer
Type représentant un entier.
std::int32_t Int32
Type entier signé sur 32 bits.