Arcane  v4.1.4.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
DynamicMachineMemoryWindowBase.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/* DynamicMachineMemoryWindowBase.h (C) 2000-2026 */
9/* */
10/* Classe permettant de créer des fenêtres mémoires pour un noeud de calcul. */
11/* Les segments de ces fenêtres ne sont pas contigües en mémoire et peuvent */
12/* être redimensionnées. */
13/*---------------------------------------------------------------------------*/
14
15#ifndef ARCANE_CORE_DYNAMICMACHINEMEMORYWINDOWBASE_H
16#define ARCANE_CORE_DYNAMICMACHINEMEMORYWINDOWBASE_H
17
18/*---------------------------------------------------------------------------*/
19/*---------------------------------------------------------------------------*/
20
22#include "arcane/utils/Ref.h"
23
24#include "arccore/base/Span.h"
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28
29namespace Arcane
30{
31
32/*---------------------------------------------------------------------------*/
33/*---------------------------------------------------------------------------*/
34
35class IParallelMng;
41
42/*---------------------------------------------------------------------------*/
43/*---------------------------------------------------------------------------*/
44
54class ARCANE_CORE_EXPORT DynamicMachineMemoryWindowBase
55{
56
57 public:
58
66 DynamicMachineMemoryWindowBase(IParallelMng* pm, Int64 sizeof_segment, Int32 sizeof_elem);
67
68 public:
69
79
84 void barrier() const;
85
94
105
114
125
140 void add(Span<const std::byte> elem);
151 void add();
152
173
184 void addToAnotherSegment();
185
209 void reserve(Int64 new_nb_elem_segment_capacity);
210
219 void reserve();
220
235 void resize(Int64 new_nb_elem_segment);
236
245 void resize();
246
253 void shrink();
254
255 private:
256
257 IParallelMngInternal* m_pm_internal;
259 Int32 m_sizeof_elem;
260};
261
262/*---------------------------------------------------------------------------*/
263/*---------------------------------------------------------------------------*/
264
265} // End namespace Arcane
266
267/*---------------------------------------------------------------------------*/
268/*---------------------------------------------------------------------------*/
269
270#endif
Déclarations des types généraux de Arcane.
Types et fonctions associés aux classes SpanImpl, SmallSpan and Span.
Vue constante d'un tableau de type T.
DynamicMachineMemoryWindowBase(IParallelMng *pm, Int64 sizeof_segment, Int32 sizeof_elem)
Constructeur.
ConstArrayView< Int32 > machineRanks() const
Méthode permettant d'obtenir les rangs qui possèdent un segment dans la fenêtre.
void add(Span< const std::byte > elem)
Méthode permettant d'ajouter des élements dans notre segment.
void resize(Int64 new_nb_elem_segment)
Méthode permettant de redimensionner notre segment.
Span< std::byte > segmentView()
Méthode permettant d'obtenir une vue sur notre segment.
void addToAnotherSegment(Int32 rank, Span< const std::byte > elem)
Méthode permettant d'ajouter des éléments dans le segment d'un autre sous-domaine.
Span< const std::byte > segmentConstView() const
Méthode permettant d'obtenir une vue sur notre segment.
void shrink()
Méthode permettant de réduire l'espace mémoire réservé pour les segments au minimum nécessaire.
void barrier() const
Méthode permettant d'attendre que tous les processus/threads du noeud appellent cette méthode pour co...
void reserve(Int64 new_nb_elem_segment_capacity)
Méthode permettant de réserver de l'espace mémoire dans notre segment.
Partie interne de IParallelMng.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Classe permettant de créer des fenêtres mémoires pour un noeud de calcul.
Référence à une instance.
Vue d'un tableau d'éléments de type T.
Definition Span.h:633
Déclarations des types et méthodes utilisés par les mécanismes d'échange de messages.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int64_t Int64
Type entier signé sur 64 bits.
std::int32_t Int32
Type entier signé sur 32 bits.