Arcane  v3.16.8.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
SharedMemoryDynamicMachineMemoryWindowBaseInternal.h
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/* SharedMemoryDynamicMachineMemoryWindowBaseInternal.h (C) 2000-2025 */
9/* */
10/* Classe permettant de créer des fenêtres mémoires pour l'ensemble des */
11/* sous-domaines en mémoire partagée. */
12/* Les segments de ces fenêtres ne sont pas contigüs en mémoire et peuvent */
13/* être redimensionnés. */
14/*---------------------------------------------------------------------------*/
15
16#ifndef ARCANE_PARALLEL_THREAD_INTERNAL_SHAREDMEMORYDYNAMICMACHINEMEMORYWINDOWBASEINTERNAL_H
17#define ARCANE_PARALLEL_THREAD_INTERNAL_SHAREDMEMORYDYNAMICMACHINEMEMORYWINDOWBASEINTERNAL_H
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22#include "arccore/message_passing/internal/IDynamicMachineMemoryWindowBaseInternal.h"
23
25#include "arcane/utils/Ref.h"
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
31{
32
33/*---------------------------------------------------------------------------*/
34/*---------------------------------------------------------------------------*/
35
36class ARCANE_THREAD_EXPORT SharedMemoryDynamicMachineMemoryWindowBaseInternal
38{
39 public:
40
41 SharedMemoryDynamicMachineMemoryWindowBaseInternal(Int32 my_rank, ConstArrayView<Int32> ranks, Int32 sizeof_type, Ref<UniqueArray<UniqueArray<std::byte>>> windows, Ref<UniqueArray<Int32>> target_segments, IThreadBarrier* barrier);
42
43 ~SharedMemoryDynamicMachineMemoryWindowBaseInternal() override = default;
44
45 public:
46
47 Int32 sizeofOneElem() const override;
48 ConstArrayView<Int32> machineRanks() const override;
49 void barrier() const override;
50
52 Span<std::byte> segmentView(Int32 rank) override;
53
55 Span<const std::byte> segmentConstView(Int32 rank) const override;
56
57 void add(Span<const std::byte> elem) override;
58 void add() override;
59
60 void addToAnotherSegment(Int32 rank, Span<const std::byte> elem) override;
61 void addToAnotherSegment() override;
62
63 void reserve(Int64 new_capacity) override;
64 void reserve() override;
65
66 void resize(Int64 new_size) override;
67 void resize() override;
68
69 void shrink() override;
70
71 private:
72
73 Int32 m_my_rank = 0;
74 Int32 m_sizeof_type = 0;
76
79
80 Ref<UniqueArray<Int32>> m_target_segments;
81 SmallSpan<Int32> m_target_segments_span;
82
83 IThreadBarrier* m_barrier = nullptr;
84};
85
86/*---------------------------------------------------------------------------*/
87/*---------------------------------------------------------------------------*/
88
89} // namespace Arcane::MessagePassing
90
91/*---------------------------------------------------------------------------*/
92/*---------------------------------------------------------------------------*/
93
94#endif
Déclarations des types généraux de Arcane.
Vue constante d'un tableau de type T.
Classe permettant de créer des fenêtres mémoires pour un noeud de calcul.
ConstArrayView< Int32 > machineRanks() const override
Méthode permettant d'obtenir les rangs qui possèdent un segment dans la fenêtre.
void addToAnotherSegment(Int32 rank, Span< const std::byte > elem) override
Méthode permettant d'ajouter des éléments dans le segment d'un autre sous-domaine.
void reserve(Int64 new_capacity) override
Méthode permettant de réserver de l'espace mémoire dans notre segment.
void add(Span< const std::byte > elem) override
Méthode permettant d'ajouter des élements dans notre segment.
Span< const std::byte > segmentConstView() const override
Méthode permettant d'obtenir une vue sur notre segment.
Int32 sizeofOneElem() const override
Méthode permettant d'obtenir la taille d'un élement de la fenêtre.
void barrier() const override
Méthode permettant d'attendre que tous les processus/threads du noeud appellent cette méthode pour co...
Span< std::byte > segmentView() override
Méthode permettant d'obtenir une vue sur notre segment.
void shrink() override
Méthode permettant de réduire l'espace mémoire réservé pour les segments au minimum nécessaire.
void resize(Int64 new_size) override
Méthode permettant de redimensionner notre segment.
Référence à une instance.
Vue d'un tableau d'éléments de type T.
Definition Span.h:673
Vue d'un tableau d'éléments de type T.
Definition Span.h:513
Vecteur 1D de données avec sémantique par valeur (style STL).
Déclarations des types et méthodes utilisés par les mécanismes d'échange de messages.
std::int64_t Int64
Type entier signé sur 64 bits.
std::int32_t Int32
Type entier signé sur 32 bits.