Arcane  v3.16.8.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
SharedMemoryMachineMemoryWindowBaseInternal.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/* SharedMemoryMachineMemoryWindowBaseInternal.h (C) 2000-2025 */
9/* */
10/* Classe permettant de créer une fenêtre mémoire pour l'ensemble des */
11/* sous-domaines en mémoire partagée. */
12/*---------------------------------------------------------------------------*/
13
14#ifndef ARCANE_PARALLEL_THREAD_INTERNAL_SHAREDMEMORYMACHINEMEMORYWINDOWBASEINTERNAL_H
15#define ARCANE_PARALLEL_THREAD_INTERNAL_SHAREDMEMORYMACHINEMEMORYWINDOWBASEINTERNAL_H
16
17/*---------------------------------------------------------------------------*/
18/*---------------------------------------------------------------------------*/
19
20#include "arccore/message_passing/internal/IMachineMemoryWindowBaseInternal.h"
21
23#include "arcane/utils/Ref.h"
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
29{
30
31/*---------------------------------------------------------------------------*/
32/*---------------------------------------------------------------------------*/
33
34class ARCANE_THREAD_EXPORT SharedMemoryMachineMemoryWindowBaseInternal
36{
37 public:
38
39 SharedMemoryMachineMemoryWindowBaseInternal(Int32 my_rank, Int32 nb_rank, ConstArrayView<Int32> ranks, Int32 sizeof_type, Ref<UniqueArray<std::byte>> window, Ref<UniqueArray<Int64>> sizeof_segments, Ref<UniqueArray<Int64>> sum_sizeof_segments, Int64 sizeof_window, IThreadBarrier* barrier);
40
41 ~SharedMemoryMachineMemoryWindowBaseInternal() override = default;
42
43 public:
44
45 Int32 sizeofOneElem() const override;
46
48 Span<std::byte> segmentView(Int32 rank) override;
49 Span<std::byte> windowView() override;
50
52 Span<const std::byte> segmentConstView(Int32 rank) const override;
54
55 void resizeSegment(Int64 new_sizeof_segment) override;
56
57 ConstArrayView<Int32> machineRanks() const override;
58
59 void barrier() const override;
60
61 private:
62
63 Int32 m_my_rank = 0;
64 Int32 m_nb_rank = 0;
65 Int32 m_sizeof_type = 0;
66 Int64 m_actual_sizeof_win = 0;
67 Int64 m_max_sizeof_win = 0;
69
70 Span<std::byte> m_window_span;
72
73 Ref<UniqueArray<Int64>> m_sizeof_segments;
74 SmallSpan<Int64> m_sizeof_segments_span;
75
76 Ref<UniqueArray<Int64>> m_sum_sizeof_segments;
77 SmallSpan<Int64> m_sum_sizeof_segments_span;
78
79 IThreadBarrier* m_barrier = nullptr;
80};
81
82/*---------------------------------------------------------------------------*/
83/*---------------------------------------------------------------------------*/
84
85} // namespace Arcane::MessagePassing
86
87/*---------------------------------------------------------------------------*/
88/*---------------------------------------------------------------------------*/
89
90#endif
Déclarations des types généraux de Arcane.
Vue constante d'un tableau de type T.
Classe permettant de créer une fenêtre mémoire pour un noeud de calcul.
void barrier() const override
Méthode permettant d'attendre que tous les processus/threads du noeud appellent cette méthode pour co...
Span< const std::byte > windowConstView() const override
Méthode permettant d'obtenir une vue sur toute la fenêtre.
Int32 sizeofOneElem() const override
Méthode permettant d'obtenir la taille d'un élement de la fenêtre.
Span< std::byte > segmentView() override
Méthode permettant d'obtenir une vue sur son segment.
Span< const std::byte > segmentConstView() const override
Méthode permettant d'obtenir une vue sur son segment.
Span< std::byte > windowView() override
Méthode permettant d'obtenir une vue sur toute la fenêtre.
ConstArrayView< Int32 > machineRanks() const override
Méthode permettant d'obtenir les rangs qui possèdent un segment dans la fenêtre.
void resizeSegment(Int64 new_sizeof_segment) override
Méthode permettant de redimensionner les segments de la fenêtre.
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.