46class MpiParallelDispatchT
78 ARCANE_MPI_EXPORT ~MpiParallelDispatchT()
override;
79 ARCANE_MPI_EXPORT
void finalize()
override;
85 m_mp_dispatcher->broadcast(send_buf, rank);
89 m_mp_dispatcher->allGather(send_buf, recv_buf);
91 void allGatherVariable(ConstArrayView<Type> send_buf, Array<Type>& recv_buf)
override
93 m_mp_dispatcher->allGatherVariable(send_buf, recv_buf);
95 void gather(ConstArrayView<Type> send_buf, ArrayView<Type> recv_buf,
Int32 rank)
override
97 m_mp_dispatcher->gather(send_buf, recv_buf, rank);
99 void gatherVariable(ConstArrayView<Type> send_buf, Array<Type>& recv_buf,
Int32 rank)
override
101 m_mp_dispatcher->gatherVariable(send_buf, recv_buf, rank);
103 void scatterVariable(ConstArrayView<Type> send_buf, ArrayView<Type> recv_buf,
Int32 root)
override
105 m_mp_dispatcher->scatterVariable(send_buf, recv_buf, root);
107 void allToAll(ConstArrayView<Type> send_buf, ArrayView<Type> recv_buf,
Integer count)
override
109 m_mp_dispatcher->allToAll(send_buf, recv_buf, count);
115 m_mp_dispatcher->allToAllVariable(send_buf, send_count, send_index, recv_buf, recv_count, recv_index);
117 Request send(ConstArrayView<Type> send_buffer,
Int32 rank,
bool is_blocked)
override
119 return m_mp_dispatcher->send(send_buffer, rank, is_blocked);
121 Request send(Span<const Type> recv_buffer,
const PointToPointMessageInfo& message)
override
123 return m_mp_dispatcher->send(recv_buffer, message);
125 Request recv(ArrayView<Type> recv_buffer,
Int32 rank,
bool is_blocked)
override
127 return m_mp_dispatcher->receive(recv_buffer, rank, is_blocked);
129 Request receive(Span<Type> recv_buffer,
const PointToPointMessageInfo& message)
override
131 return m_mp_dispatcher->receive(recv_buffer, message);
133 void send(ConstArrayView<Type> send_buffer,
Int32 rank)
override
135 m_mp_dispatcher->send(send_buffer, rank,
true);
137 void recv(ArrayView<Type> recv_buffer,
Int32 rank)
override
139 m_mp_dispatcher->receive(recv_buffer, rank,
true);
141 Type allReduce(eReduceType op,
Type send_buf)
override
143 return m_mp_dispatcher->allReduce(op, send_buf);
145 void allReduce(eReduceType op, ArrayView<Type> send_buf)
override
147 m_mp_dispatcher->allReduce(op, send_buf);
152 ARCANE_MPI_EXPORT
void sendRecv(ConstArrayView<Type> send_buffer, ArrayView<Type> recv_buffer,
Int32 rank)
override;
153 ARCANE_MPI_EXPORT
Type scan(eReduceType op,
Type send_buf)
override;
154 ARCANE_MPI_EXPORT
void scan(eReduceType op, ArrayView<Type> send_buf)
override;
155 ARCANE_MPI_EXPORT
void computeMinMaxSum(
Type val,
Type& min_val,
Type& max_val,
Type& sum_val,
157 Int32& max_rank)
override;
158 ARCANE_MPI_EXPORT
void computeMinMaxSum(ConstArrayView<Type> values,
159 ArrayView<Type> min_values,
160 ArrayView<Type> max_values,
161 ArrayView<Type> sum_values,
162 ArrayView<Int32> min_ranks,
163 ArrayView<Int32> max_ranks)
override;
167 ITypeDispatcher<Type>* toArccoreDispatcher()
override;
168 MpiDatatype* datatype()
const;
172 virtual ARCANE_MPI_EXPORT
void computeMinMaxSumNoInit(
Type& min_val,
Type& max_val,
Type& sum_val,
177 MP::Mpi::MpiTypeDispatcher<Type>* m_mp_dispatcher;
181 MPI_Datatype m_min_max_sum_datatype;
182 MPI_Op m_min_max_sum_operator;
187 MPI_Datatype _mpiDatatype();
188 MpiAdapter* _adapter();
189 MPI_Op _mpiReduceOperator(eReduceType rt);
190 static void ARCANE_MPIOP_CALL _MinMaxSumOperator(
void* a,
void* b,
int* len, MPI_Datatype* type);