14#ifndef ARCCORE_MESSAGEPASSINGMPI_INTERNAL_MPIMACHINESHMEMWINBASEINTERNAL_H
15#define ARCCORE_MESSAGEPASSINGMPI_INTERNAL_MPIMACHINESHMEMWINBASEINTERNAL_H
19#include "arccore/collections/Array.h"
20#include "arccore/message_passing/internal/IMachineShMemWinBaseInternal.h"
22#include "arccore/message_passing_mpi/MessagePassingMpiGlobal.h"
27namespace Arcane::MessagePassing::Mpi
30class ARCCORE_MESSAGEPASSINGMPI_EXPORT MpiMachineShMemWinBaseInternal
37 ~MpiMachineShMemWinBaseInternal()
override;
67 void _reallocBarrier(
Int64 new_sizeof);
68 void _reallocBarrier(
Int32 machine_rank,
Int64 new_sizeof);
69 void _reallocBarrier();
70 void _reallocCollective();
110 MPI_Comm m_comm_machine;
111 Int32 m_comm_machine_size = 0;
112 Int32 m_comm_machine_rank = 0;
114 Int32 m_sizeof_type = 0;
Constant view of an array of type T.
Class allowing the creation of memory windows for a computing node.
MPI_Win m_win_need_resize
void reserve(Int64 new_capacity) override
Method to reserve memory space in our segment.
ConstArrayView< Int32 > machineRanks() const override
Method to get the ranks that possess a segment in the window.
Span< Int64 > m_sizeof_used_part
Global view on contiguous window with the size of the primary windows.
Int32 sizeofOneElem() const override
Method to get the size of an element in the window.
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
Contiguous window with the size of the primary windows.
void shrink() override
Method to reduce the reserved memory space for the segments to the minimum necessary.
void addToAnotherSegment(Int32 rank, Span< const std::byte > elem) override
Method to add elements into the segment of another subdomain.
void resize(Int64 new_size) override
Method to resize our segment.
void barrier() const override
Method to wait until all processes/threads of the node call this method to continue execution.
void add(Span< const std::byte > elem) override
Method to add elements into our segment.
Span< std::byte > segmentView() override
Method to get a view of our segment.
Span< const std::byte > segmentConstView() const override
Method to get a view of our segment.
View of an array of elements of type T.
1D data vector with value semantics (STL style).
std::int64_t Int64
Signed integer type of 64 bits.
std::int32_t Int32
Signed integer type of 32 bits.