15#ifndef ARCCORE_MESSAGEPASSINGMPI_INTERNAL_MPIMACHINESHMEMWINBASEINTERNAL_H
16#define ARCCORE_MESSAGEPASSINGMPI_INTERNAL_MPIMACHINESHMEMWINBASEINTERNAL_H
21#include "arccore/collections/Array.h"
22#include "arccore/message_passing/internal/IMachineShMemWinBaseInternal.h"
24#include "arccore/message_passing_mpi/MessagePassingMpiGlobal.h"
29namespace Arcane::MessagePassing::Mpi
32class ARCCORE_MESSAGEPASSINGMPI_EXPORT MpiMachineShMemWinBaseInternal
39 ~MpiMachineShMemWinBaseInternal()
override;
69 void _reallocBarrier(
Int64 new_sizeof);
70 void _reallocBarrier(
Int32 machine_rank,
Int64 new_sizeof);
71 void _reallocBarrier();
72 void _reallocCollective();
112 MPI_Comm m_comm_machine;
113 Int32 m_comm_machine_size = 0;
114 Int32 m_comm_machine_rank = 0;
116 Int32 m_sizeof_type = 0;
Vue constante d'un tableau de type T.
Classe permettant de créer des fenêtres mémoires pour un noeud de calcul.
MPI_Win m_win_need_resize
void reserve(Int64 new_capacity) override
Méthode permettant de réserver de l'espace mémoire dans notre segment.
ConstArrayView< Int32 > machineRanks() const override
Méthode permettant d'obtenir les rangs qui possèdent un segment dans la fenêtre.
Span< Int64 > m_sizeof_used_part
Vue globale sur fenêtre contiguë avec taille des fenêtres principales.
Int32 sizeofOneElem() const override
Méthode permettant d'obtenir la taille d'un élement de la fenêtre.
MPI_Win m_win_target_segments
Span< std::byte > m_reserved_part_span
Span< Int32 > m_target_segments
Span< Int64 > m_need_resize
UniqueArray< MPI_Win > m_all_mpi_win
MPI_Win m_win_actual_sizeof
Fenêtre contiguë avec taille des fenêtres principales.
void shrink() override
Méthode permettant de réduire l'espace mémoire réservé pour les segments au minimum nécessaire.
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 resize(Int64 new_size) override
Méthode permettant de redimensionner notre segment.
void barrier() const override
Méthode permettant d'attendre que tous les processus/threads du noeud appellent cette méthode pour co...
void add(Span< const std::byte > elem) override
Méthode permettant d'ajouter des élements dans notre segment.
Span< std::byte > segmentView() override
Méthode permettant d'obtenir une vue sur notre segment.
Span< const std::byte > segmentConstView() const override
Méthode permettant d'obtenir une vue sur notre segment.
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.