Arcane  v4.1.7.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
HybridMachineShMemWinBaseInternalCreator.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/* HybridMachineShMemWinBaseInternalCreator.h (C) 2000-2026 */
9/* */
10/* Classe permettant de créer des objets de type */
11/* HybridContigMachineShMemWinBaseInternal. Une instance de cet objet doit */
12/* être partagée par tous les threads d'un processus. */
13/*---------------------------------------------------------------------------*/
14
15#ifndef ARCANE_PARALLEL_MPITHREAD_INTERNAL_HYBRIDMACHINESHMEMWINBASEINTERNALCREATOR_H
16#define ARCANE_PARALLEL_MPITHREAD_INTERNAL_HYBRIDMACHINESHMEMWINBASEINTERNALCREATOR_H
17
18/*---------------------------------------------------------------------------*/
19/*---------------------------------------------------------------------------*/
20
21#include "arcane/utils/Ref.h"
22#include "arcane/utils/UniqueArray.h"
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27namespace Arcane
28{
29class MpiParallelMng;
30
31namespace MessagePassing
32{
36
37 namespace Mpi
38 {
41 } // namespace Mpi
42} // namespace MessagePassing
43} // namespace Arcane
44
45/*---------------------------------------------------------------------------*/
46/*---------------------------------------------------------------------------*/
47
49{
50
51/*---------------------------------------------------------------------------*/
52/*---------------------------------------------------------------------------*/
53
54class HybridMachineShMemWinBaseInternalCreator
55{
56 public:
57
58 HybridMachineShMemWinBaseInternalCreator(Int32 nb_rank_local_proc, IThreadBarrier* barrier);
59 ~HybridMachineShMemWinBaseInternalCreator() = default;
60
61 public:
62
63 void initializeMpiWindowCreator(Int32 my_rank_global, MpiParallelMng* mpi_parallel_mng);
64
65 HybridContigMachineShMemWinBaseInternal* createWindow(Int32 my_rank_global, Int64 sizeof_segment, Int32 sizeof_type, MpiParallelMng* mpi_parallel_mng);
66 HybridMachineShMemWinBaseInternal* createDynamicWindow(Int32 my_rank_global, Int64 sizeof_segment, Int32 sizeof_type, MpiParallelMng* mpi_parallel_mng);
67
68 ConstArrayView<Int32> machineRanks();
69 void machineBarrier(Int32 my_rank_global, MpiParallelMng* mpi_parallel_mng) const;
70
71 private:
72
73 void _buildMachineRanksArray(ConstArrayView<Int32> mpi_machine_ranks);
74
75 private:
76
77 Int32 m_nb_rank_local_proc = 0;
78 Int64 m_sizeof_segment_local_proc = 0;
79 IThreadBarrier* m_barrier = nullptr;
80 UniqueArray<Int32> m_machine_ranks;
81
83 Ref<IContigMachineShMemWinBaseInternal> m_sizeof_sub_segments;
84 Ref<IContigMachineShMemWinBaseInternal> m_sum_sizeof_sub_segments;
85 //-----------
87 UniqueArray<Int64> m_sizeof_resize_segments;
88};
89/*---------------------------------------------------------------------------*/
90/*---------------------------------------------------------------------------*/
91
92} // namespace Arcane::MessagePassing
93
94/*---------------------------------------------------------------------------*/
95/*---------------------------------------------------------------------------*/
96
97#endif
Vue constante d'un tableau de type T.
Classe permettant de créer une fenêtre mémoire pour un noeud de calcul.
Classe basée sur MpiMachineShMemWinBaseInternal mais pouvant gérer plusieurs segments par processus.
Gestionnaire du parallélisme utilisant MPI.
Référence à une instance.
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.
-*- 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.