106 ARCCORE_INTERNAL_DEFINE_REFERENCE_COUNTED_INCLASS_METHODS();
132 Int32 m_min_rank = A_NULL_RANK;
133 Int32 m_max_rank = A_NULL_RANK;
143 void finalize()
override;
184 void gather(ConstArrayView<Type> send_buf,ArrayView<Type> recv_buf,Integer rank)
override
185 { this->gather(Span<const Type>(send_buf),Span<Type>(recv_buf),rank); }
186 void gatherVariable(ConstArrayView<Type> send_buf,Array<Type>& recv_buf,Integer rank)
override
187 { this->gatherVariable(Span<const Type>(send_buf),recv_buf,rank); }
188 void scatterVariable(ConstArrayView<Type> send_buf,ArrayView<Type> recv_buf,Integer root)
override
189 { this->scatterVariable(Span<const Type>(send_buf),Span<Type>(recv_buf),root); }
190 void allToAll(ConstArrayView<Type> send_buf,ArrayView<Type> recv_buf,Integer count)
override
191 { this->allToAll(Span<const Type>(send_buf),Span<Type>(recv_buf),count); }
195 { this->allToAllVariable(Span<const Type>(send_buf),send_count,send_index,
196 Span<Type>(recv_buf),recv_count,recv_index); }
197 Request send(ConstArrayView<Type> send_buffer,Integer proc,
bool is_blocked)
override
198 {
return this->send(Span<const Type>(send_buffer),proc,is_blocked); }
199 Request recv(ArrayView<Type> recv_buffer,Integer proc,
bool is_blocked)
override
200 {
return this->receive(Span<Type>(recv_buffer),proc,is_blocked); }
201 void allReduce(eReduceType op,ArrayView<Type> send_buf)
override
202 {
return this->allReduce(op,Span<Type>(send_buf)); }
204 void send(ConstArrayView<Type> send_buffer,Integer proc)
override;
205 void recv(ArrayView<Type> recv_buffer,Integer proc)
override;
206 void sendRecv(ConstArrayView<Type> send_buffer,ArrayView<Type> recv_buffer,Integer proc)
override;
207 Type allReduce(eReduceType op,
Type send_buf)
override;
208 Type scan(eReduceType op,
Type send_buf)
override;
209 void scan(eReduceType op,ArrayView<Type> send_buf)
override;
212 Int32& max_rank)
override;
213 void computeMinMaxSum(ConstArrayView<Type> values,
214 ArrayView<Type> min_values,
215 ArrayView<Type> max_values,
216 ArrayView<Type> sum_values,
217 ArrayView<Int32> min_ranks,
218 ArrayView<Int32> max_ranks)
override;
219 ITypeDispatcher<Type>* toArccoreDispatcher()
override {
return this; }
223 HybridParallelMng* m_parallel_mng =
nullptr;
224 Int32 m_local_rank = A_NULL_RANK;
225 Int32 m_local_nb_rank = 0;
226 Int32 m_global_rank = A_NULL_RANK;
227 Int32 m_global_nb_rank = 0;
228 Int32 m_mpi_rank = A_NULL_RANK;
229 Int32 m_mpi_nb_rank = 0;
233 using AllDispatchView = ArrayView<HybridParallelDispatch<Type>*>;
234 Int32 globalRank()
const {
return m_global_rank; }
235 AllDispatchView m_all_dispatchs;
239 Span<Type> m_broadcast_view;
240 Span<const Type> m_const_view;
241 Span<Type> m_recv_view;
242 Span<const Type> m_send_view;
243 AllToAllVariableInfo m_alltoallv_infos;
247 ReduceInfo m_reduce_infos;
248 MinMaxSumInfo m_min_max_sum_infos;
252 HybridMessageQueue* m_message_queue =
nullptr;
253 MpiParallelDispatchT<Type>* m_mpi_dispatcher =
nullptr;
257 void _collectiveBarrier();
258 void _allReduceOrScan(eReduceType op, Span<Type> send_buf,
bool is_scan);
259 void _applyReduceOperator(eReduceType op, Span<Type> result, AllDispatchView dispatch_view,