Arcane  v3.16.7.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
HybridMachineMemoryWindowBaseInternal.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/* HybridMachineMemoryWindowBaseInternal.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 des processus du même noeud. */
12/*---------------------------------------------------------------------------*/
13
14#ifndef ARCANE_PARALLEL_MPITHREAD_INTERNAL_HYBRIDMACHINEMEMORYWINDOWBASEINTERNAL_H
15#define ARCANE_PARALLEL_MPITHREAD_INTERNAL_HYBRIDMACHINEMEMORYWINDOWBASEINTERNAL_H
16
17/*---------------------------------------------------------------------------*/
18/*---------------------------------------------------------------------------*/
19
20#include "arcane/utils/Ref.h"
21
22#include "arccore/message_passing/internal/IMachineMemoryWindowBaseInternal.h"
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
28{
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32
33class HybridMachineMemoryWindowBaseInternal
35{
36 public:
37
38 HybridMachineMemoryWindowBaseInternal(Int32 my_rank_mpi, Int32 my_rank_local_proc, Int32 nb_rank_local_proc, ConstArrayView<Int32> ranks, Int32 sizeof_type, Ref<IMachineMemoryWindowBaseInternal> nb_elem, Ref<IMachineMemoryWindowBaseInternal> sum_nb_elem, Ref<IMachineMemoryWindowBaseInternal> mpi_window, IThreadBarrier* barrier);
39
40 ~HybridMachineMemoryWindowBaseInternal() override = default;
41
42 public:
43
44 Int32 sizeofOneElem() const override;
45
46 Span<std::byte> segment() const override;
47 Span<std::byte> segment(Int32 rank) const override;
48 Span<std::byte> window() const override;
49
50 void resizeSegment(Int64 new_sizeof_segment) override;
51
52 ConstArrayView<Int32> machineRanks() const override;
53
54 void barrier() const override;
55
56 private:
57
58 Int32 m_my_rank_local_proc;
59 Int32 m_nb_rank_local_proc;
60 Int32 m_my_rank_mpi;
61 ConstArrayView<Int32> m_machine_ranks;
62 Int32 m_sizeof_type;
64 Ref<IMachineMemoryWindowBaseInternal> m_sizeof_sub_segments_global;
65 Ref<IMachineMemoryWindowBaseInternal> m_sum_sizeof_sub_segments_global;
66 Span<Int64> m_sizeof_sub_segments_local_proc;
67 Span<Int64> m_sum_sizeof_sub_segments_local_proc;
68 IThreadBarrier* m_thread_barrier;
69};
70
71/*---------------------------------------------------------------------------*/
72/*---------------------------------------------------------------------------*/
73
74} // namespace Arcane::MessagePassing
75
76/*---------------------------------------------------------------------------*/
77/*---------------------------------------------------------------------------*/
78
79#endif
Vue constante d'un tableau de type T.
Span< std::byte > segment() const override
Méthode permettant d'obtenir une vue sur son segment.
Int32 sizeofOneElem() const override
Méthode permettant d'obtenir la taille d'un élement de la fenêtre.
void resizeSegment(Int64 new_sizeof_segment) override
Méthode permettant de redimensionner les segments 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...
ConstArrayView< Int32 > machineRanks() const override
Méthode permettant d'obtenir les rangs qui possèdent un segment dans la fenêtre.
Span< std::byte > window() const override
Méthode permettant d'obtenir une vue sur toute la fenêtre.
Classe permettant de créer une fenêtre mémoire pour un noeud de calcul.
Référence à une instance.
Vue d'un tableau d'éléments de type T.
Definition Span.h:513
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.