16#include "arcane/parallel/thread/internal/SharedMemoryDynamicMachineMemoryWindowBaseInternal.h"
18#include "arcane/utils/FatalErrorException.h"
20#include "arccore/concurrency/IThreadBarrier.h"
31SharedMemoryDynamicMachineMemoryWindowBaseInternal::
32SharedMemoryDynamicMachineMemoryWindowBaseInternal(
Int32 my_rank, ConstArrayView<Int32> ranks,
Int32 sizeof_type, Ref<UniqueArray<UniqueArray<std::byte>>> windows, Ref<UniqueArray<Int32>> target_segments, IThreadBarrier* barrier)
34, m_sizeof_type(sizeof_type)
37, m_windows_span(windows->smallSpan())
38, m_target_segments(target_segments)
39, m_target_segments_span(target_segments->smallSpan())
46Int32 SharedMemoryDynamicMachineMemoryWindowBaseInternal::
64void SharedMemoryDynamicMachineMemoryWindowBaseInternal::
76 return m_windows_span[m_my_rank];
83segmentView(
Int32 rank)
85 return m_windows_span[rank];
92segmentConstView()
const
94 return m_windows_span[m_my_rank];
101segmentConstView(
Int32 rank)
const
103 return m_windows_span[rank];
109void SharedMemoryDynamicMachineMemoryWindowBaseInternal::
113 if (elem.
size() % m_sizeof_type != 0) {
114 ARCCORE_FATAL(
"Sizeof elem not valid");
116 m_windows_span[m_my_rank].addRange(elem);
123void SharedMemoryDynamicMachineMemoryWindowBaseInternal::
133void SharedMemoryDynamicMachineMemoryWindowBaseInternal::
136 if (elem.
size() % m_sizeof_type != 0) {
137 ARCCORE_FATAL(
"Sizeof elem not valid");
140 m_target_segments_span[m_my_rank] = rank;
143 bool is_found =
false;
144 for (
const Int32 rank_asked : m_target_segments_span) {
145 if (rank_asked == rank) {
150 ARCANE_FATAL(
"Two subdomains ask same rank for addToAnotherSegment()");
155 m_windows_span[rank].addRange(elem);
157 m_target_segments_span[m_my_rank] = -1;
163void SharedMemoryDynamicMachineMemoryWindowBaseInternal::
173void SharedMemoryDynamicMachineMemoryWindowBaseInternal::
174reserve(
Int64 new_capacity)
177 m_windows_span[m_my_rank].reserve(new_capacity);
184void SharedMemoryDynamicMachineMemoryWindowBaseInternal::
194void SharedMemoryDynamicMachineMemoryWindowBaseInternal::
195resize(
Int64 new_size)
198 m_windows_span[m_my_rank].resize(new_size);
205void SharedMemoryDynamicMachineMemoryWindowBaseInternal::
215void SharedMemoryDynamicMachineMemoryWindowBaseInternal::
219 m_windows_span[m_my_rank].shrink();
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Vue constante d'un tableau de type T.
constexpr __host__ __device__ SizeType size() const noexcept
Retourne la taille du tableau.
Vue d'un tableau d'éléments de type T.
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.