15#ifndef ARCCORE_MESSAGEPASSINGMPI_INTERNAL_MPIDYNAMICMULTIMACHINEMEMORYWINDOWBASEINTERNAL_H
16#define ARCCORE_MESSAGEPASSINGMPI_INTERNAL_MPIDYNAMICMULTIMACHINEMEMORYWINDOWBASEINTERNAL_H
21#include "arccore/collections/Array.h"
23#include "arccore/message_passing_mpi/MessagePassingMpiGlobal.h"
28namespace Arcane::MessagePassing::Mpi
258 void _requestRealloc(
Int32 owner_pos_segment,
Int64 new_capacity)
const;
259 void _requestRealloc(
Int32 owner_pos_segment)
const;
260 void _executeRealloc();
273 MPI_Win m_win_need_resize;
276 MPI_Win m_win_actual_sizeof;
279 MPI_Win m_win_target_segments;
282 MPI_Comm m_comm_machine;
283 Int32 m_comm_machine_size = 0;
284 Int32 m_comm_machine_rank = 0;
286 Int32 m_sizeof_type = 0;
287 Int32 m_nb_segments_per_proc = 0;
292 bool m_add_requested =
false;
295 bool m_resize_requested =
false;
Vue constante d'un tableau de type T.
void executeResize()
Méthode permettant d'exécuter les requêtes de redimensionnement.
Span< const std::byte > segmentConstView(Int32 num_seg) const
Méthode permettant d'obtenir une vue sur l'un de nos segments.
Int32 sizeofOneElem() const
Méthode permettant d'obtenir la taille d'un élement de la fenêtre.
void requestReserve(Int32 num_seg, Int64 new_capacity)
Méthode permettant de demander la réservation d'espace mémoire pour un de nos segments.
ConstArrayView< Int32 > machineRanks() const
Méthode permettant d'obtenir les rangs qui possèdent un segment dans la fenêtre.
void requestResize(Int32 num_seg, Int64 new_size)
Méthode permettant de demander le redimensionnement d'un de nos segments.
void requestAdd(Int32 num_seg, Span< const std::byte > elem)
Méthode permettant de demander l'ajout d'éléments dans l'un de nos segments.
void executeShrink()
Méthode permettant de réduire l'espace mémoire réservé pour les segments au minimum nécessaire.
void executeAdd()
Méthode permettant d'exécuter les requêtes d'ajout.
void executeAddToAnotherSegment()
Méthode permettant d'exécuter les requêtes d'ajout dans les segments d'autres processus.
void requestAddToAnotherSegment(Int32 thread, Int32 rank, Int32 num_seg, Span< const std::byte > elem)
Méthode permettant de demander l'ajout d'éléments dans un des segments de la fenêtre.
MpiDynamicMultiMachineMemoryWindowBaseInternal(SmallSpan< Int64 > sizeof_segments, Int32 nb_segments_per_proc, Int32 sizeof_type, const MPI_Comm &comm_machine, Int32 comm_machine_rank, Int32 comm_machine_size, ConstArrayView< Int32 > machine_ranks)
Le sizeof_segments ne doit pas être conservé !
Span< std::byte > segmentView(Int32 num_seg)
Méthode permettant d'obtenir une vue sur l'un de nos segments.
void barrier() const
Méthode permettant d'attendre que tous les processus du noeud appellent cette méthode pour continuer ...
void executeReserve()
Méthode permettant d'exécuter les requêtes de réservation.
Vue d'un tableau d'éléments de type T.
Vue d'un tableau d'éléments de type T.
Vecteur 1D de données avec sémantique par valeur (style STL).
std::int64_t Int64
Type entier signé sur 64 bits.
std::int32_t Int32
Type entier signé sur 32 bits.