Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
ParallelSuperMngDispatcher.cc
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* ParallelSuperMngDispatcher.cc (C) 2000-2005 */
9/* */
10/* Redirection of message handling according to the type of arguments. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#include "arcane/utils/ArcanePrecomp.h"
15
16#include "arcane/utils/ArrayView.h"
17#include "arcane/utils/Iostream.h"
18
19#include "arcane/core/ParallelSuperMngDispatcher.h"
20#include "arcane/core/IParallelDispatch.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31ParallelSuperMngDispatcher::
32ParallelSuperMngDispatcher()
33: m_byte(0)
34, m_int32(0)
35, m_int64(0)
36, m_real(0)
37{
38}
39
40/*---------------------------------------------------------------------------*/
41/*---------------------------------------------------------------------------*/
42
43ParallelSuperMngDispatcher::
44~ParallelSuperMngDispatcher()
45{
46 delete m_byte;
47 delete m_int32;
48 delete m_int64;
49 delete m_real;
50}
51
52/*---------------------------------------------------------------------------*/
53/*---------------------------------------------------------------------------*/
54
55void ParallelSuperMngDispatcher::
56_setDispatchers(IParallelDispatchT<Byte>* c, IParallelDispatchT<Int32>* i32,
57 IParallelDispatchT<Int64>* i64, IParallelDispatchT<Real>* r)
58{
59 m_byte = c;
60 m_int32 = i32;
61 m_int64 = i64;
62 m_real = r;
63}
64
65/*---------------------------------------------------------------------------*/
66/*---------------------------------------------------------------------------*/
67
68void ParallelSuperMngDispatcher::
69_finalize()
70{
71 if (m_byte)
72 m_byte->finalize();
73 if (m_int32)
74 m_int32->finalize();
75 if (m_int64)
76 m_int64->finalize();
77 if (m_real)
78 m_real->finalize();
79}
80
81/*---------------------------------------------------------------------------*/
82/*---------------------------------------------------------------------------*/
83
84void ParallelSuperMngDispatcher::
85allGather(ByteConstArrayView send_buf, ByteArrayView recv_buf)
86{
87 m_byte->allGather(send_buf, recv_buf);
88}
89void ParallelSuperMngDispatcher::
90allGather(Int32ConstArrayView send_buf, Int32ArrayView recv_buf)
91{
92 m_int32->allGather(send_buf, recv_buf);
93}
94void ParallelSuperMngDispatcher::
95allGather(Int64ConstArrayView send_buf, Int64ArrayView recv_buf)
96{
97 m_int64->allGather(send_buf, recv_buf);
98}
99void ParallelSuperMngDispatcher::
100allGather(RealConstArrayView send_buf, RealArrayView recv_buf)
101{
102 m_real->allGather(send_buf, recv_buf);
103}
104
105Int32 ParallelSuperMngDispatcher::
106reduce(eReduceType rt, Int32 v)
107{
108 return m_int32->allReduce(rt, v);
109}
110Int64 ParallelSuperMngDispatcher::
111reduce(eReduceType rt, Int64 v)
112{
113 return m_int64->allReduce(rt, v);
114}
115Real ParallelSuperMngDispatcher::
116reduce(eReduceType rt, Real v)
117{
118 return m_real->allReduce(rt, v);
119}
120
121void ParallelSuperMngDispatcher::
122reduce(eReduceType rt, Int32ArrayView v)
123{
124 m_int32->allReduce(rt, v);
125}
126void ParallelSuperMngDispatcher::
127reduce(eReduceType rt, Int64ArrayView v)
128{
129 m_int64->allReduce(rt, v);
130}
131void ParallelSuperMngDispatcher::
132reduce(eReduceType rt, RealArrayView v)
133{
134 m_real->allReduce(rt, v);
135}
136
137void ParallelSuperMngDispatcher::
138broadcast(ByteArrayView send_buf, Integer id)
139{
140 m_byte->broadcast(send_buf, id);
141}
142void ParallelSuperMngDispatcher::
143broadcast(Int32ArrayView send_buf, Integer id)
144{
145 m_int32->broadcast(send_buf, id);
146}
147void ParallelSuperMngDispatcher::
148broadcast(Int64ArrayView send_buf, Integer id)
149{
150 m_int64->broadcast(send_buf, id);
151}
152void ParallelSuperMngDispatcher::
153broadcast(RealArrayView send_buf, Integer id)
154{
155 m_real->broadcast(send_buf, id);
156}
157
158void ParallelSuperMngDispatcher::
159send(ByteConstArrayView values, Integer id)
160{
161 m_byte->send(values, id);
162}
163void ParallelSuperMngDispatcher::
164send(Int32ConstArrayView values, Integer id)
165{
166 m_int32->send(values, id);
167}
168void ParallelSuperMngDispatcher::
169send(Int64ConstArrayView values, Integer id)
170{
171 m_int64->send(values, id);
172}
173void ParallelSuperMngDispatcher::
174send(RealConstArrayView values, Integer id)
175{
176 m_real->send(values, id);
177}
178
179void ParallelSuperMngDispatcher::
180recv(ByteArrayView values, Integer id)
181{
182 m_byte->recv(values, id);
183}
184void ParallelSuperMngDispatcher::
185recv(Int32ArrayView values, Integer id)
186{
187 m_int32->recv(values, id);
188}
189void ParallelSuperMngDispatcher::
190recv(Int64ArrayView values, Integer id)
191{
192 m_int64->recv(values, id);
193}
194void ParallelSuperMngDispatcher::
195recv(RealArrayView values, Integer id)
196{
197 m_real->recv(values, id);
198}
199
200Parallel::Request ParallelSuperMngDispatcher::
201send(ByteConstArrayView values, Integer id, bool is_blocked)
202{
203 return m_byte->send(values, id, is_blocked);
204}
205Parallel::Request ParallelSuperMngDispatcher::
206send(Int32ConstArrayView values, Integer id, bool is_blocked)
207{
208 return m_int32->send(values, id, is_blocked);
209}
210Parallel::Request ParallelSuperMngDispatcher::
211send(Int64ConstArrayView values, Integer id, bool is_blocked)
212{
213 return m_int64->send(values, id, is_blocked);
214}
215Parallel::Request ParallelSuperMngDispatcher::
216send(RealConstArrayView values, Integer id, bool is_blocked)
217{
218 return m_real->send(values, id, is_blocked);
219}
220
221Parallel::Request ParallelSuperMngDispatcher::
222recv(ByteArrayView values, Integer id, bool is_blocked)
223{
224 return m_byte->recv(values, id, is_blocked);
225}
226Parallel::Request ParallelSuperMngDispatcher::
227recv(Int32ArrayView values, Integer id, bool is_blocked)
228{
229 return m_int32->recv(values, id, is_blocked);
230}
231Parallel::Request ParallelSuperMngDispatcher::
232recv(Int64ArrayView values, Integer id, bool is_blocked)
233{
234 return m_int64->recv(values, id, is_blocked);
235}
236Parallel::Request ParallelSuperMngDispatcher::
237recv(RealArrayView values, Integer id, bool is_blocked)
238{
239 return m_real->recv(values, id, is_blocked);
240}
241
242void ParallelSuperMngDispatcher::
243sendRecv(ByteConstArrayView send_buf, ByteArrayView recv_buf, Integer id)
244{
245 m_byte->sendRecv(send_buf, recv_buf, id);
246}
247void ParallelSuperMngDispatcher::
248sendRecv(Int32ConstArrayView send_buf, Int32ArrayView recv_buf, Integer id)
249{
250 m_int32->sendRecv(send_buf, recv_buf, id);
251}
252void ParallelSuperMngDispatcher::
253sendRecv(Int64ConstArrayView send_buf, Int64ArrayView recv_buf, Integer id)
254{
255 m_int64->sendRecv(send_buf, recv_buf, id);
256}
257void ParallelSuperMngDispatcher::
258sendRecv(RealConstArrayView send_buf, RealArrayView recv_buf, Integer id)
259{
260 m_real->sendRecv(send_buf, recv_buf, id);
261}
262
263void ParallelSuperMngDispatcher::
264allToAll(ByteConstArrayView send_buf, ByteArrayView recv_buf, Integer count)
265{
266 m_byte->allToAll(send_buf, recv_buf, count);
267}
268void ParallelSuperMngDispatcher::
269allToAll(Int32ConstArrayView send_buf, Int32ArrayView recv_buf, Integer count)
270{
271 m_int32->allToAll(send_buf, recv_buf, count);
272}
273void ParallelSuperMngDispatcher::
274allToAll(Int64ConstArrayView send_buf, Int64ArrayView recv_buf, Integer count)
275{
276 m_int64->allToAll(send_buf, recv_buf, count);
277}
278void ParallelSuperMngDispatcher::
279allToAll(RealConstArrayView send_buf, RealArrayView recv_buf, Integer count)
280{
281 m_real->allToAll(send_buf, recv_buf, count);
282}
283
284Int32 ParallelSuperMngDispatcher::
285scan(eReduceType rt, Int32 v)
286{
287 return m_int32->scan(rt, v);
288}
289Int64 ParallelSuperMngDispatcher::
290scan(eReduceType rt, Int64 v)
291{
292 return m_int64->scan(rt, v);
293}
294Real ParallelSuperMngDispatcher::
295scan(eReduceType rt, Real v)
296{
297 return m_real->scan(rt, v);
298}
299
300void ParallelSuperMngDispatcher::
301scan(eReduceType rt, Int32ArrayView v)
302{
303 m_int32->scan(rt, v);
304}
305void ParallelSuperMngDispatcher::
306scan(eReduceType rt, Int64ArrayView v)
307{
308 m_int64->scan(rt, v);
309}
310void ParallelSuperMngDispatcher::
311scan(eReduceType rt, RealArrayView v)
312{
313 m_real->scan(rt, v);
314}
315
316/*---------------------------------------------------------------------------*/
317/*---------------------------------------------------------------------------*/
318
319} // namespace Arcane
320
321/*---------------------------------------------------------------------------*/
322/*---------------------------------------------------------------------------*/
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
ArrayView< Byte > ByteArrayView
C equivalent of a 1D array of characters.
Definition UtilsTypes.h:447
Int32 Integer
Type representing an integer.
ArrayView< Int32 > Int32ArrayView
C equivalent of a 1D array of 32-bit integers.
Definition UtilsTypes.h:453