Arcane  v3.16.8.0
Documentation développeur
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
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31
33MachineMemoryWindowBase(IParallelMng* pm, Int64 nb_elem_segment, Int32 sizeof_elem)
34: m_pm_internal(pm->_internalApi())
35, m_node_window_base(m_pm_internal->createMachineMemoryWindowBase(nb_elem_segment * static_cast<Int64>(sizeof_elem), sizeof_elem))
36, m_sizeof_elem(sizeof_elem)
37{}
38
39/*---------------------------------------------------------------------------*/
40/*---------------------------------------------------------------------------*/
41
44{
45 return m_node_window_base->segmentView();
46}
47
48/*---------------------------------------------------------------------------*/
49/*---------------------------------------------------------------------------*/
50
53{
54 return m_node_window_base->segmentView(rank);
55}
56
57/*---------------------------------------------------------------------------*/
58/*---------------------------------------------------------------------------*/
59
62{
63 return m_node_window_base->windowView();
64}
65
66/*---------------------------------------------------------------------------*/
67/*---------------------------------------------------------------------------*/
68
70segmentConstView() const
71{
72 return m_node_window_base->segmentConstView();
73}
74
75/*---------------------------------------------------------------------------*/
76/*---------------------------------------------------------------------------*/
77
79segmentConstView(Int32 rank) const
80{
81 return m_node_window_base->segmentConstView(rank);
82}
83
84/*---------------------------------------------------------------------------*/
85/*---------------------------------------------------------------------------*/
86
88windowConstView() const
89{
90 return m_node_window_base->windowConstView();
91}
92
93/*---------------------------------------------------------------------------*/
94/*---------------------------------------------------------------------------*/
95
97resizeSegment(Integer new_nb_elem)
98{
99 m_node_window_base->resizeSegment(new_nb_elem * static_cast<Int64>(m_sizeof_elem));
100}
101
102/*---------------------------------------------------------------------------*/
103/*---------------------------------------------------------------------------*/
104
106machineRanks() const
107{
108 return m_node_window_base->machineRanks();
109}
110
111/*---------------------------------------------------------------------------*/
112/*---------------------------------------------------------------------------*/
113
115barrier() const
116{
117 m_node_window_base->barrier();
118}
119
120/*---------------------------------------------------------------------------*/
121/*---------------------------------------------------------------------------*/
122
123} // End namespace Arcane
124
125/*---------------------------------------------------------------------------*/
126/*---------------------------------------------------------------------------*/
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.
Span< std::byte > windowView()
Méthode permettant d'obtenir une vue sur toute la fenêtre mémoire.
void resizeSegment(Integer new_size)
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< std::byte > segmentView()
Méthode permettant d'obtenir une vue sur notre segment de fenêtre mémoire.
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.
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.