Arcane  v4.1.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
IParallelMng.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 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/* IParallelMng.h (C) 2000-2025 */
9/* */
10/* Interface du gestionnaire du parallélisme sur un sous-domaine. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_IPARALLELMNG_H
13#define ARCANE_CORE_IPARALLELMNG_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
51class ARCANE_CORE_EXPORT IParallelMng
52{
54 // Classe pour accéder à _internalUtilsFactory()
55 friend class ParallelMngUtilsAccessor;
56
57 public:
58
59 // NOTE: Laisse temporairement ce destructeur publique tant que
60 // les méthodes createParallelMng() existent pour des raisons de
61 // compatibilité avec l'existant
62 virtual ~IParallelMng() = default;
63
64 public:
65
66 typedef Parallel::Request Request;
67 using PointToPointMessageInfo = Parallel::PointToPointMessageInfo;
68 using MessageId = Parallel::MessageId;
69 using MessageSourceInfo = Parallel::MessageSourceInfo;
70 typedef Parallel::eReduceType eReduceType;
71 typedef Parallel::IStat IStat;
72
73 public:
74
76 virtual void build() =0;
77
78 public:
79
86 virtual bool isParallel() const =0;
87
88 private:
89
90 // NOTE: on laisse temporairement ces deux méthodes pour garder la compatibilité binaire.
91
93 virtual ARCANE_DEPRECATED Integer subDomainId() const final { return commRank(); }
94
96 virtual ARCANE_DEPRECATED Integer nbSubDomain() const final { return commSize(); }
97
98 public:
99
101 virtual Int32 commRank() const =0;
102
104 virtual Int32 commSize() const =0;
105
112 virtual void* getMPICommunicator() =0;
113
119 virtual ARCANE_DEPRECATED_120 void* mpiCommunicator();
120
133
146 virtual Parallel::Communicator machineCommunicator() const { return {}; }
147
154 virtual bool isThreadImplementation() const =0;
155
161 virtual bool isHybridImplementation() const =0;
162
164 virtual void setTimeStats(ITimeStats* time_stats) =0;
165
167 virtual ITimeStats* timeStats() const =0;
168
170 virtual ITraceMng* traceMng() const =0;
171
173 virtual IThreadMng* threadMng() const =0;
174
176 virtual ITimerMng* timerMng() const =0;
177
179 virtual IIOMng* ioMng() const =0;
180
182 virtual IParallelMng* worldParallelMng() const =0;
183
185 virtual void initialize() =0;
186
189
190 public:
191
192
193 public:
194
196 virtual bool isMasterIO() const =0;
197
203 virtual Integer masterIORank() const =0;
204
206
207
214 virtual void allGather(ConstArrayView<char> send_buf,ArrayView<char> recv_buf) =0;
215 virtual void allGather(ConstArrayView<unsigned char> send_buf,ArrayView<unsigned char> recv_buf) =0;
216 virtual void allGather(ConstArrayView<signed char> send_buf,ArrayView<signed char> recv_buf) =0;
217 virtual void allGather(ConstArrayView<short> send_buf,ArrayView<short> recv_buf) =0;
218 virtual void allGather(ConstArrayView<unsigned short> send_buf,ArrayView<unsigned short> recv_buf) =0;
219 virtual void allGather(ConstArrayView<int> send_buf,ArrayView<int> recv_buf) =0;
220 virtual void allGather(ConstArrayView<unsigned int> send_buf,ArrayView<unsigned int> recv_buf) =0;
221 virtual void allGather(ConstArrayView<long> send_buf,ArrayView<long> recv_buf) =0;
222 virtual void allGather(ConstArrayView<unsigned long> send_buf,ArrayView<unsigned long> recv_buf) =0;
223 virtual void allGather(ConstArrayView<long long> send_buf,ArrayView<long long> recv_buf) =0;
225 virtual void allGather(ConstArrayView<float> send_buf,ArrayView<float> recv_buf) =0;
226 virtual void allGather(ConstArrayView<double> send_buf,ArrayView<double> recv_buf) =0;
227 virtual void allGather(ConstArrayView<long double> send_buf,ArrayView<long double> recv_buf) =0;
228 virtual void allGather(ConstArrayView<APReal> send_buf,ArrayView<APReal> recv_buf) =0;
229 virtual void allGather(ConstArrayView<Real2> send_buf,ArrayView<Real2> recv_buf) =0;
230 virtual void allGather(ConstArrayView<Real3> send_buf,ArrayView<Real3> recv_buf) =0;
231 virtual void allGather(ConstArrayView<Real2x2> send_buf,ArrayView<Real2x2> recv_buf) =0;
232 virtual void allGather(ConstArrayView<Real3x3> send_buf,ArrayView<Real3x3> recv_buf) =0;
233 virtual void allGather(ConstArrayView<HPReal> send_buf,ArrayView<HPReal> recv_buf) =0;
234 virtual void allGather(ISerializer* send_serializer,ISerializer* recv_serializer) =0;
236
238
239
247 virtual void gather(ConstArrayView<char> send_buf,ArrayView<char> recv_buf,Int32 rank) =0;
248 virtual void gather(ConstArrayView<unsigned char> send_buf,ArrayView<unsigned char> recv_buf,Int32 rank) =0;
249 virtual void gather(ConstArrayView<signed char> send_buf,ArrayView<signed char> recv_buf,Int32 rank) =0;
250 virtual void gather(ConstArrayView<short> send_buf,ArrayView<short> recv_buf,Int32 rank) =0;
251 virtual void gather(ConstArrayView<unsigned short> send_buf,ArrayView<unsigned short> recv_buf,Int32 rank) =0;
252 virtual void gather(ConstArrayView<int> send_buf,ArrayView<int> recv_buf,Int32 rank) =0;
253 virtual void gather(ConstArrayView<unsigned int> send_buf,ArrayView<unsigned int> recv_buf,Int32 rank) =0;
254 virtual void gather(ConstArrayView<long> send_buf,ArrayView<long> recv_buf,Int32 rank) =0;
255 virtual void gather(ConstArrayView<unsigned long> send_buf,ArrayView<unsigned long> recv_buf,Int32 rank) =0;
256 virtual void gather(ConstArrayView<long long> send_buf,ArrayView<long long> recv_buf,Int32 rank) =0;
258 virtual void gather(ConstArrayView<float> send_buf,ArrayView<float> recv_buf,Int32 rank) =0;
259 virtual void gather(ConstArrayView<double> send_buf,ArrayView<double> recv_buf,Int32 rank) =0;
260 virtual void gather(ConstArrayView<long double> send_buf,ArrayView<long double> recv_buf,Int32 rank) =0;
261 virtual void gather(ConstArrayView<APReal> send_buf,ArrayView<APReal> recv_buf,Int32 rank) =0;
262 virtual void gather(ConstArrayView<Real2> send_buf,ArrayView<Real2> recv_buf,Int32 rank) =0;
263 virtual void gather(ConstArrayView<Real3> send_buf,ArrayView<Real3> recv_buf,Int32 rank) =0;
264 virtual void gather(ConstArrayView<Real2x2> send_buf,ArrayView<Real2x2> recv_buf,Int32 rank) =0;
265 virtual void gather(ConstArrayView<Real3x3> send_buf,ArrayView<Real3x3> recv_buf,Int32 rank) =0;
266 virtual void gather(ConstArrayView<HPReal> send_buf,ArrayView<HPReal> recv_buf,Int32 rank) =0;
268
270
271
282 Array<char>& recv_buf,Int32 rank) =0;
283 virtual void gatherVariable(ConstArrayView<signed char> send_buf,
284 Array<signed char>& recv_buf,Int32 rank) =0;
285 virtual void gatherVariable(ConstArrayView<unsigned char> send_buf,
286 Array<unsigned char>& recv_buf,Int32 rank) =0;
287 virtual void gatherVariable(ConstArrayView<short> send_buf,
288 Array<short>& recv_buf,Int32 rank) =0;
290 Array<unsigned short>& recv_buf,Int32 rank) =0;
291 virtual void gatherVariable(ConstArrayView<int> send_buf,
292 Array<int>& recv_buf,Int32 rank) =0;
293 virtual void gatherVariable(ConstArrayView<unsigned int> send_buf,
294 Array<unsigned int>& recv_buf,Int32 rank) =0;
295 virtual void gatherVariable(ConstArrayView<long> send_buf,
296 Array<long>& recv_buf,Int32 rank) =0;
297 virtual void gatherVariable(ConstArrayView<unsigned long> send_buf,
298 Array<unsigned long>& recv_buf,Int32 rank) =0;
299 virtual void gatherVariable(ConstArrayView<long long> send_buf,
300 Array<long long>& recv_buf,Int32 rank) =0;
302 Array<unsigned long long>& recv_buf,Int32 rank) =0;
303 virtual void gatherVariable(ConstArrayView<float> send_buf,
304 Array<float>& recv_buf,Int32 rank) =0;
305 virtual void gatherVariable(ConstArrayView<double> send_buf,
306 Array<double>& recv_buf,Int32 rank) =0;
307 virtual void gatherVariable(ConstArrayView<long double> send_buf,
308 Array<long double>& recv_buf,Int32 rank) =0;
309 virtual void gatherVariable(ConstArrayView<APReal> send_buf,
310 Array<APReal>& recv_buf,Int32 rank) =0;
311 virtual void gatherVariable(ConstArrayView<Real2> send_buf,
312 Array<Real2>& recv_buf,Int32 rank) =0;
313 virtual void gatherVariable(ConstArrayView<Real3> send_buf,
314 Array<Real3>& recv_buf,Int32 rank) =0;
315 virtual void gatherVariable(ConstArrayView<Real2x2> send_buf,
316 Array<Real2x2>& recv_buf,Int32 rank) =0;
317 virtual void gatherVariable(ConstArrayView<Real3x3> send_buf,
318 Array<Real3x3>& recv_buf,Int32 rank) =0;
319 virtual void gatherVariable(ConstArrayView<HPReal> send_buf,
320 Array<HPReal>& recv_buf,Int32 rank) =0;
322
324
325
335 Array<char>& recv_buf) =0;
337 Array<signed char>& recv_buf) =0;
339 Array<unsigned char>& recv_buf) =0;
340 virtual void allGatherVariable(ConstArrayView<short> send_buf,
341 Array<short>& recv_buf) =0;
343 Array<unsigned short>& recv_buf) =0;
344 virtual void allGatherVariable(ConstArrayView<int> send_buf,
345 Array<int>& recv_buf) =0;
347 Array<unsigned int>& recv_buf) =0;
348 virtual void allGatherVariable(ConstArrayView<long> send_buf,
349 Array<long>& recv_buf) =0;
351 Array<unsigned long>& recv_buf) =0;
352 virtual void allGatherVariable(ConstArrayView<long long> send_buf,
353 Array<long long>& recv_buf) =0;
355 Array<unsigned long long>& recv_buf) =0;
356 virtual void allGatherVariable(ConstArrayView<float> send_buf,
357 Array<float>& recv_buf) =0;
358 virtual void allGatherVariable(ConstArrayView<double> send_buf,
359 Array<double>& recv_buf) =0;
361 Array<long double>& recv_buf) =0;
362 virtual void allGatherVariable(ConstArrayView<APReal> send_buf,
363 Array<APReal>& recv_buf) =0;
364 virtual void allGatherVariable(ConstArrayView<Real2> send_buf,
365 Array<Real2>& recv_buf) =0;
366 virtual void allGatherVariable(ConstArrayView<Real3> send_buf,
367 Array<Real3>& recv_buf) =0;
368 virtual void allGatherVariable(ConstArrayView<Real2x2> send_buf,
369 Array<Real2x2>& recv_buf) =0;
370 virtual void allGatherVariable(ConstArrayView<Real3x3> send_buf,
371 Array<Real3x3>& recv_buf) =0;
372 virtual void allGatherVariable(ConstArrayView<HPReal> send_buf,
373 Array<HPReal>& recv_buf) =0;
375
377
378
382 ArrayView<char> recv_buf,Integer root) =0;
383 virtual void scatterVariable(ConstArrayView<signed char> send_buf,
384 ArrayView<signed char> recv_buf,Integer root) =0;
386 ArrayView<unsigned char> recv_buf,Integer root) =0;
387 virtual void scatterVariable(ConstArrayView<short> send_buf,
388 ArrayView<short> recv_buf,Integer root) =0;
390 ArrayView<unsigned short> recv_buf,Integer root) =0;
391 virtual void scatterVariable(ConstArrayView<int> send_buf,
392 ArrayView<int> recv_buf,Integer root) =0;
393 virtual void scatterVariable(ConstArrayView<unsigned int> send_buf,
394 ArrayView<unsigned int> recv_buf,Integer root) =0;
395 virtual void scatterVariable(ConstArrayView<long> send_buf,
396 ArrayView<long> recv_buf,Integer root) =0;
398 ArrayView<unsigned long> recv_buf,Integer root) =0;
399 virtual void scatterVariable(ConstArrayView<long long> send_buf,
400 ArrayView<long long> recv_buf,Integer root) =0;
402 ArrayView<unsigned long long> recv_buf,Integer root) =0;
403 virtual void scatterVariable(ConstArrayView<float> send_buf,
404 ArrayView<float> recv_buf,Integer root) =0;
405 virtual void scatterVariable(ConstArrayView<double> send_buf,
406 ArrayView<double> recv_buf,Integer root) =0;
407 virtual void scatterVariable(ConstArrayView<long double> send_buf,
408 ArrayView<long double> recv_buf,Integer root) =0;
409 virtual void scatterVariable(ConstArrayView<APReal> send_buf,
410 ArrayView<APReal> recv_buf,Integer root) =0;
411 virtual void scatterVariable(ConstArrayView<Real2> send_buf,
412 ArrayView<Real2> recv_buf,Integer root) =0;
413 virtual void scatterVariable(ConstArrayView<Real3> send_buf,
414 ArrayView<Real3> recv_buf,Integer root) =0;
415 virtual void scatterVariable(ConstArrayView<Real2x2> send_buf,
416 ArrayView<Real2x2> recv_buf,Integer root) =0;
417 virtual void scatterVariable(ConstArrayView<Real3x3> send_buf,
418 ArrayView<Real3x3> recv_buf,Integer root) =0;
419 virtual void scatterVariable(ConstArrayView<HPReal> send_buf,
420 ArrayView<HPReal> recv_buf,Integer root) =0;
422
424
425
428 virtual char reduce(eReduceType rt,char v) =0;
429 virtual signed char reduce(eReduceType rt,signed char v) =0;
430 virtual unsigned char reduce(eReduceType rt,unsigned char v) =0;
431 virtual short reduce(eReduceType rt,short v) =0;
432 virtual unsigned short reduce(eReduceType rt,unsigned short v) =0;
433 virtual int reduce(eReduceType rt,int v) =0;
434 virtual unsigned int reduce(eReduceType rt,unsigned int v) =0;
435 virtual long reduce(eReduceType rt,long v) =0;
436 virtual unsigned long reduce(eReduceType rt,unsigned long v) =0;
437 virtual long long reduce(eReduceType rt,long long v) =0;
438 virtual unsigned long long reduce(eReduceType rt,unsigned long long v) =0;
439 virtual float reduce(eReduceType rt,float v) =0;
440 virtual double reduce(eReduceType rt,double v) =0;
441 virtual long double reduce(eReduceType rt,long double v) =0;
442 virtual APReal reduce(eReduceType rt,APReal v) =0;
443 virtual Real2 reduce(eReduceType rt,Real2 v) =0;
444 virtual Real3 reduce(eReduceType rt,Real3 v) =0;
445 virtual Real2x2 reduce(eReduceType rt,Real2x2 v) =0;
446 virtual Real3x3 reduce(eReduceType rt,Real3x3 v) =0;
447 virtual HPReal reduce(eReduceType rt,HPReal v) =0;
449
451
452
463 virtual void computeMinMaxSum(char val,char& min_val,
464 char& max_val,char& sum_val,
465 Int32& min_rank,Int32& max_rank) =0;
466 virtual void computeMinMaxSum(signed char val,signed char& min_val,
467 signed char& max_val,signed char& sum_val,
468 Int32& min_rank,Int32& max_rank) =0;
469 virtual void computeMinMaxSum(unsigned char val,unsigned char& min_val,
470 unsigned char& max_val,unsigned char& sum_val,
471 Int32& min_rank,Int32& max_rank) =0;
472 virtual void computeMinMaxSum(short val,short& min_val,
473 short& max_val,short& sum_val,
474 Int32& min_rank,Int32& max_rank) =0;
475 virtual void computeMinMaxSum(unsigned short val,unsigned short& min_val,
476 unsigned short& max_val,unsigned short& sum_val,
477 Int32& min_rank,Int32& max_rank) =0;
478 virtual void computeMinMaxSum(int val,int& min_val,
479 int& max_val,int& sum_val,
480 Int32& min_rank,Int32& max_rank) =0;
481 virtual void computeMinMaxSum(unsigned int val,unsigned int& min_val,
482 unsigned int& max_val,unsigned int& sum_val,
483 Int32& min_rank,Int32& max_rank) =0;
484 virtual void computeMinMaxSum(long val,long& min_val,
485 long& max_val,long& sum_val,
486 Int32& min_rank,Int32& max_rank) =0;
487 virtual void computeMinMaxSum(unsigned long val,unsigned long& min_val,
488 unsigned long& max_val,unsigned long& sum_val,
489 Int32& min_rank,Int32& max_rank) =0;
490 virtual void computeMinMaxSum(long long val,long long& min_val,
491 long long& max_val,long long& sum_val,
492 Int32& min_rank,Int32& max_rank) =0;
493 virtual void computeMinMaxSum(unsigned long long val,unsigned long long& min_val,
494 unsigned long long& max_val,unsigned long long& sum_val,
495 Int32& min_rank,Int32& max_rank) =0;
496 virtual void computeMinMaxSum(float val,float& min_val,
497 float& max_val,float& sum_val,
498 Int32& min_rank,Int32& max_rank) =0;
499 virtual void computeMinMaxSum(double val,double& min_val,
500 double& max_val,double& sum_val,
501 Int32& min_rank,Int32& max_rank) =0;
502 virtual void computeMinMaxSum(long double val,long double& min_val,
503 long double& max_val,long double& sum_val,
504 Int32& min_rank,Int32& max_rank) =0;
505 virtual void computeMinMaxSum(APReal val,APReal& min_val,
506 APReal& max_val,APReal& sum_val,
507 Int32& min_rank,Int32& max_rank) =0;
508 virtual void computeMinMaxSum(Real2 val,Real2& min_val,
509 Real2& max_val,Real2& sum_val,
510 Int32& min_rank,Int32& max_rank) =0;
511 virtual void computeMinMaxSum(Real3 val,Real3& min_val,
512 Real3& max_val,Real3& sum_val,
513 Int32& min_rank,Int32& max_rank) =0;
514 virtual void computeMinMaxSum(Real2x2 val,Real2x2& min_val,
515 Real2x2& max_val,Real2x2& sum_val,
516 Int32& min_rank,Int32& max_rank) =0;
517 virtual void computeMinMaxSum(Real3x3 val,Real3x3& min_val,
518 Real3x3& max_val,Real3x3& sum_val,
519 Int32& min_rank,Int32& max_rank) =0;
520 virtual void computeMinMaxSum(HPReal val,HPReal& min_val,
521 HPReal& max_val,HPReal& sum_val,
522 Int32& min_rank,Int32& max_rank) =0;
524
526
527
539 ArrayView<char> max_values, ArrayView<char> sum_values,
540 ArrayView<Int32> min_ranks, ArrayView<Int32> max_ranks) =0;
542 ArrayView<signed char> max_values, ArrayView<signed char> sum_values,
543 ArrayView<Int32> min_ranks, ArrayView<Int32> max_ranks) =0;
546 ArrayView<Int32> min_ranks, ArrayView<Int32> max_ranks) =0;
547 virtual void computeMinMaxSum(ConstArrayView<short> values, ArrayView<short> min_values,
548 ArrayView<short> max_values, ArrayView<short> sum_values,
549 ArrayView<Int32> min_ranks, ArrayView<Int32> max_ranks) =0;
552 ArrayView<Int32> min_ranks, ArrayView<Int32> max_ranks) =0;
553 virtual void computeMinMaxSum(ConstArrayView<int> values, ArrayView<int> min_values,
554 ArrayView<int> max_values, ArrayView<int> sum_values,
555 ArrayView<Int32> min_ranks, ArrayView<Int32> max_ranks) =0;
558 ArrayView<Int32> min_ranks, ArrayView<Int32> max_ranks) =0;
559 virtual void computeMinMaxSum(ConstArrayView<long> values, ArrayView<long> min_values,
560 ArrayView<long> max_values, ArrayView<long> sum_values,
561 ArrayView<Int32> min_ranks, ArrayView<Int32> max_ranks) =0;
564 ArrayView<Int32> min_ranks, ArrayView<Int32> max_ranks) =0;
566 ArrayView<long long> max_values, ArrayView<long long> sum_values,
567 ArrayView<Int32> min_ranks, ArrayView<Int32> max_ranks) =0;
570 ArrayView<Int32> min_ranks, ArrayView<Int32> max_ranks) =0;
571 virtual void computeMinMaxSum(ConstArrayView<float> values, ArrayView<float> min_values,
572 ArrayView<float> max_values, ArrayView<float> sum_values,
573 ArrayView<Int32> min_ranks, ArrayView<Int32> max_ranks) =0;
574 virtual void computeMinMaxSum(ConstArrayView<double> values, ArrayView<double> min_values,
575 ArrayView<double> max_values, ArrayView<double> sum_values,
576 ArrayView<Int32> min_ranks, ArrayView<Int32> max_ranks) =0;
578 ArrayView<long double> max_values, ArrayView<long double> sum_values,
579 ArrayView<Int32> min_ranks, ArrayView<Int32> max_ranks) =0;
580 virtual void computeMinMaxSum(ConstArrayView<APReal> values, ArrayView<APReal> min_values,
581 ArrayView<APReal> max_values, ArrayView<APReal> sum_values,
582 ArrayView<Int32> min_ranks, ArrayView<Int32> max_ranks) =0;
583 virtual void computeMinMaxSum(ConstArrayView<Real2> values, ArrayView<Real2> min_values,
584 ArrayView<Real2> max_values, ArrayView<Real2> sum_values,
585 ArrayView<Int32> min_ranks, ArrayView<Int32> max_ranks) =0;
586 virtual void computeMinMaxSum(ConstArrayView<Real3> values, ArrayView<Real3> min_values,
587 ArrayView<Real3> max_values, ArrayView<Real3> sum_values,
588 ArrayView<Int32> min_ranks, ArrayView<Int32> max_ranks) =0;
589 virtual void computeMinMaxSum(ConstArrayView<Real2x2> values, ArrayView<Real2x2> min_values,
590 ArrayView<Real2x2> max_values, ArrayView<Real2x2> sum_values,
591 ArrayView<Int32> min_ranks, ArrayView<Int32> max_ranks) =0;
592 virtual void computeMinMaxSum(ConstArrayView<Real3x3> values, ArrayView<Real3x3> min_values,
593 ArrayView<Real3x3> max_values, ArrayView<Real3x3> sum_values,
594 ArrayView<Int32> min_ranks, ArrayView<Int32> max_ranks) =0;
595 virtual void computeMinMaxSum(ConstArrayView<HPReal> values, ArrayView<HPReal> min_values,
596 ArrayView<HPReal> max_values, ArrayView<HPReal> sum_values,
597 ArrayView<Int32> min_ranks, ArrayView<Int32> max_ranks) =0;
599
600
602
603
606 virtual void reduce(eReduceType rt,ArrayView<char> v) =0;
607 virtual void reduce(eReduceType rt,ArrayView<signed char> v) =0;
608 virtual void reduce(eReduceType rt,ArrayView<unsigned char> v) =0;
609 virtual void reduce(eReduceType rt,ArrayView<short> v) =0;
610 virtual void reduce(eReduceType rt,ArrayView<unsigned short> v) =0;
611 virtual void reduce(eReduceType rt,ArrayView<int> v) =0;
612 virtual void reduce(eReduceType rt,ArrayView<unsigned int> v) =0;
613 virtual void reduce(eReduceType rt,ArrayView<long> v) =0;
614 virtual void reduce(eReduceType rt,ArrayView<unsigned long> v) =0;
615 virtual void reduce(eReduceType rt,ArrayView<long long> v) =0;
616 virtual void reduce(eReduceType rt,ArrayView<unsigned long long> v) =0;
617 virtual void reduce(eReduceType rt,ArrayView<float> v) =0;
618 virtual void reduce(eReduceType rt,ArrayView<double> v) =0;
619 virtual void reduce(eReduceType rt,ArrayView<long double> v) =0;
620 virtual void reduce(eReduceType rt,ArrayView<APReal> v) =0;
621 virtual void reduce(eReduceType rt,ArrayView<Real2> v) =0;
622 virtual void reduce(eReduceType rt,ArrayView<Real3> v) =0;
623 virtual void reduce(eReduceType rt,ArrayView<Real2x2> v) =0;
624 virtual void reduce(eReduceType rt,ArrayView<Real3x3> v) =0;
625 virtual void reduce(eReduceType rt,ArrayView<HPReal> v) =0;
627
640 virtual void broadcast(ArrayView<char> send_buf,Int32 rank) =0;
641 virtual void broadcast(ArrayView<signed char> send_buf,Int32 rank) =0;
642 virtual void broadcast(ArrayView<unsigned char> send_buf,Int32 rank) =0;
643 virtual void broadcast(ArrayView<short> send_buf,Int32 rank) =0;
644 virtual void broadcast(ArrayView<unsigned short> send_buf,Int32 rank) =0;
645 virtual void broadcast(ArrayView<int> send_buf,Int32 rank) =0;
646 virtual void broadcast(ArrayView<unsigned int> send_buf,Int32 rank) =0;
647 virtual void broadcast(ArrayView<long> send_buf,Int32 rank) =0;
648 virtual void broadcast(ArrayView<unsigned long> send_buf,Int32 rank) =0;
649 virtual void broadcast(ArrayView<long long> send_buf,Int32 rank) =0;
650 virtual void broadcast(ArrayView<unsigned long long> send_buf,Int32 rank) =0;
651 virtual void broadcast(ArrayView<float> send_buf,Int32 rank) =0;
652 virtual void broadcast(ArrayView<double> send_buf,Int32 rank) =0;
653 virtual void broadcast(ArrayView<long double> send_buf,Int32 rank) =0;
654 virtual void broadcast(ArrayView<APReal> send_buf,Int32 rank) =0;
655 virtual void broadcast(ArrayView<Real2> send_buf,Int32 rank) =0;
656 virtual void broadcast(ArrayView<Real3> send_buf,Int32 rank) =0;
657 virtual void broadcast(ArrayView<Real2x2> send_buf,Int32 rank) =0;
658 virtual void broadcast(ArrayView<Real3x3> send_buf,Int32 rank) =0;
659 virtual void broadcast(ArrayView<HPReal> send_buf,Int32 rank) =0;
660 virtual void broadcastString(String& str,Int32 rank) =0;
661
662 virtual void broadcastSerializer(ISerializer* values,Int32 rank) =0;
671 virtual void broadcastMemoryBuffer(ByteArray& bytes,Int32 rank) =0;
673
686 virtual void send(ConstArrayView<char> values,Int32 rank) =0;
687 virtual void send(ConstArrayView<signed char> values,Int32 rank) =0;
688 virtual void send(ConstArrayView<unsigned char> values,Int32 rank) =0;
689 virtual void send(ConstArrayView<short> values,Int32 rank) =0;
690 virtual void send(ConstArrayView<unsigned short> values,Int32 rank) =0;
691 virtual void send(ConstArrayView<int> values,Int32 rank) =0;
692 virtual void send(ConstArrayView<unsigned int> values,Int32 rank) =0;
693 virtual void send(ConstArrayView<long> values,Int32 rank) =0;
694 virtual void send(ConstArrayView<unsigned long> values,Int32 rank) =0;
695 virtual void send(ConstArrayView<long long> values,Int32 rank) =0;
696 virtual void send(ConstArrayView<unsigned long long> values,Int32 rank) =0;
697 virtual void send(ConstArrayView<float> values,Int32 rank) =0;
698 virtual void send(ConstArrayView<double> values,Int32 rank) =0;
699 virtual void send(ConstArrayView<long double> values,Int32 rank) =0;
700 virtual void send(ConstArrayView<APReal> values,Int32 rank) =0;
701 virtual void send(ConstArrayView<Real2> values,Int32 rank) =0;
702 virtual void send(ConstArrayView<Real3> values,Int32 rank) =0;
703 virtual void send(ConstArrayView<Real2x2> values,Int32 rank) =0;
704 virtual void send(ConstArrayView<Real3x3> values,Int32 rank) =0;
705 virtual void send(ConstArrayView<HPReal> values,Int32 rank) =0;
706
707 virtual void sendSerializer(ISerializer* values,Int32 rank) =0;
712 ARCCORE_DEPRECATED_2019("Use createSendSerializer(Int32 rank) instead")
713 virtual Parallel::Request sendSerializer(ISerializer* values,Int32 rank,ByteArray& bytes) =0;
714
722
724
725
726 virtual void recv(ArrayView<char> values,Int32 rank) =0;
727 virtual void recv(ArrayView<signed char> values,Int32 rank) =0;
728 virtual void recv(ArrayView<unsigned char> values,Int32 rank) =0;
729 virtual void recv(ArrayView<short> values,Int32 rank) =0;
730 virtual void recv(ArrayView<unsigned short> values,Int32 rank) =0;
731 virtual void recv(ArrayView<int> values,Int32 rank) =0;
732 virtual void recv(ArrayView<unsigned int> values,Int32 rank) =0;
733 virtual void recv(ArrayView<long> values,Int32 rank) =0;
734 virtual void recv(ArrayView<unsigned long> values,Int32 rank) =0;
735 virtual void recv(ArrayView<long long> values,Int32 rank) =0;
736 virtual void recv(ArrayView<unsigned long long> values,Int32 rank) =0;
737 virtual void recv(ArrayView<float> values,Int32 rank) =0;
738 virtual void recv(ArrayView<double> values,Int32 rank) =0;
739 virtual void recv(ArrayView<long double> values,Int32 rank) =0;
740 virtual void recv(ArrayView<APReal> values,Int32 rank) =0;
741 virtual void recv(ArrayView<Real2> values,Int32 rank) =0;
742 virtual void recv(ArrayView<Real3> values,Int32 rank) =0;
743 virtual void recv(ArrayView<Real2x2> values,Int32 rank) =0;
744 virtual void recv(ArrayView<Real3x3> values,Int32 rank) =0;
745 virtual void recv(ArrayView<HPReal> values,Int32 rank) =0;
746 virtual void recvSerializer(ISerializer* values,Int32 rank) =0;
748
755
760
765
769 virtual void freeRequests(ArrayView<Parallel::Request> requests) =0;
770
784 virtual Request send(ConstArrayView<char> values,Int32 rank,bool is_blocking) =0;
785 virtual Request send(ConstArrayView<signed char> values,Int32 rank,bool is_blocking) =0;
786 virtual Request send(ConstArrayView<unsigned char> values,Int32 rank,bool is_blocking) =0;
787 virtual Request send(ConstArrayView<short> values,Int32 rank,bool is_blocking) =0;
788 virtual Request send(ConstArrayView<unsigned short> values,Int32 rank,bool is_blocking) =0;
789 virtual Request send(ConstArrayView<int> values,Int32 rank,bool is_blocking) =0;
790 virtual Request send(ConstArrayView<unsigned int> values,Int32 rank,bool is_blocking) =0;
791 virtual Request send(ConstArrayView<long> values,Int32 rank,bool is_blocking) =0;
792 virtual Request send(ConstArrayView<unsigned long> values,Int32 rank,bool is_blocking) =0;
793 virtual Request send(ConstArrayView<long long> values,Int32 rank,bool is_blocking) =0;
794 virtual Request send(ConstArrayView<unsigned long long> values,Int32 rank,bool is_blocking) =0;
795 virtual Request send(ConstArrayView<float> values,Int32 rank,bool is_blocking) =0;
796 virtual Request send(ConstArrayView<double> values,Int32 rank,bool is_blocking) =0;
797 virtual Request send(ConstArrayView<long double> values,Int32 rank,bool is_blocking) =0;
798 virtual Request send(ConstArrayView<APReal> values,Int32 rank,bool is_blocking) =0;
799 virtual Request send(ConstArrayView<Real2> values,Int32 rank,bool is_blocking) =0;
800 virtual Request send(ConstArrayView<Real3> values,Int32 rank,bool is_blocking) =0;
801 virtual Request send(ConstArrayView<Real2x2> values,Int32 rank,bool is_blocking) =0;
802 virtual Request send(ConstArrayView<Real3x3> values,Int32 rank,bool is_blocking) =0;
803 virtual Request send(ConstArrayView<HPReal> values,Int32 rank,bool is_blocking) =0;
805
807
808
809 virtual Request recv(ArrayView<char> values,Int32 rank,bool is_blocking) =0;
810 virtual Request recv(ArrayView<signed char> values,Int32 rank,bool is_blocking) =0;
811 virtual Request recv(ArrayView<unsigned char> values,Int32 rank,bool is_blocking) =0;
812 virtual Request recv(ArrayView<short> values,Int32 rank,bool is_blocking) =0;
813 virtual Request recv(ArrayView<unsigned short> values,Int32 rank,bool is_blocking) =0;
814 virtual Request recv(ArrayView<int> values,Int32 rank,bool is_blocking) =0;
815 virtual Request recv(ArrayView<unsigned int> values,Int32 rank,bool is_blocking) =0;
816 virtual Request recv(ArrayView<long> values,Int32 rank,bool is_blocking) =0;
817 virtual Request recv(ArrayView<unsigned long> values,Int32 rank,bool is_blocking) =0;
818 virtual Request recv(ArrayView<long long > values,Int32 rank,bool is_blocking) =0;
819 virtual Request recv(ArrayView<unsigned long long> values,Int32 rank,bool is_blocking) =0;
820 virtual Request recv(ArrayView<float> values,Int32 rank,bool is_blocking) =0;
821 virtual Request recv(ArrayView<double> values,Int32 rank,bool is_blocking) =0;
822 virtual Request recv(ArrayView<long double> values,Int32 rank,bool is_blocking) =0;
823 virtual Request recv(ArrayView<APReal> values,Int32 rank,bool is_blocking) =0;
824 virtual Request recv(ArrayView<Real2> values,Int32 rank,bool is_blocking) =0;
825 virtual Request recv(ArrayView<Real3> values,Int32 rank,bool is_blocking) =0;
826 virtual Request recv(ArrayView<Real2x2> values,Int32 rank,bool is_blocking) =0;
827 virtual Request recv(ArrayView<Real3x3> values,Int32 rank,bool is_blocking) =0;
828 virtual Request recv(ArrayView<HPReal> values,Int32 rank,bool is_blocking) =0;
830
832
833
834 virtual Request receive(Span<char> values,const PointToPointMessageInfo& message) =0;
835 virtual Request receive(Span<signed char> values,const PointToPointMessageInfo& message) =0;
836 virtual Request receive(Span<unsigned char> values,const PointToPointMessageInfo& message) =0;
837 virtual Request receive(Span<short> values,const PointToPointMessageInfo& message) =0;
838 virtual Request receive(Span<unsigned short> values,const PointToPointMessageInfo& message) =0;
839 virtual Request receive(Span<int> values,const PointToPointMessageInfo& message) =0;
840 virtual Request receive(Span<unsigned int> values,const PointToPointMessageInfo& message) =0;
841 virtual Request receive(Span<long> values,const PointToPointMessageInfo& message) =0;
842 virtual Request receive(Span<unsigned long> values,const PointToPointMessageInfo& message) =0;
843 virtual Request receive(Span<long long> values,const PointToPointMessageInfo& message) =0;
844 virtual Request receive(Span<unsigned long long> values,const PointToPointMessageInfo& message) =0;
845 virtual Request receive(Span<float> values,const PointToPointMessageInfo& message) =0;
846 virtual Request receive(Span<double> values,const PointToPointMessageInfo& message) =0;
847 virtual Request receive(Span<long double> values,const PointToPointMessageInfo& message) =0;
848 virtual Request receive(Span<APReal> values,const PointToPointMessageInfo& message) =0;
849 virtual Request receive(Span<Real2> values,const PointToPointMessageInfo& message) =0;
850 virtual Request receive(Span<Real3> values,const PointToPointMessageInfo& message) =0;
851 virtual Request receive(Span<Real2x2> values,const PointToPointMessageInfo& message) =0;
852 virtual Request receive(Span<Real3x3> values,const PointToPointMessageInfo& message) =0;
853 virtual Request receive(Span<HPReal> values,const PointToPointMessageInfo& message) =0;
854 virtual Request receiveSerializer(ISerializer* values,const PointToPointMessageInfo& message) =0;
856
858
859
860 virtual Request send(Span<const char> values,const PointToPointMessageInfo& message) =0;
861 virtual Request send(Span<const signed char> values,const PointToPointMessageInfo& message) =0;
862 virtual Request send(Span<const unsigned char> values,const PointToPointMessageInfo& message) =0;
863 virtual Request send(Span<const short> values,const PointToPointMessageInfo& message) =0;
864 virtual Request send(Span<const unsigned short> values,const PointToPointMessageInfo& message) =0;
865 virtual Request send(Span<const int> values,const PointToPointMessageInfo& message) =0;
866 virtual Request send(Span<const unsigned int> values,const PointToPointMessageInfo& message) =0;
867 virtual Request send(Span<const long> values,const PointToPointMessageInfo& message) =0;
868 virtual Request send(Span<const unsigned long> values,const PointToPointMessageInfo& message) =0;
869 virtual Request send(Span<const long long> values,const PointToPointMessageInfo& message) =0;
870 virtual Request send(Span<const unsigned long long> values,const PointToPointMessageInfo& message) =0;
871 virtual Request send(Span<const float> values,const PointToPointMessageInfo& message) =0;
872 virtual Request send(Span<const double> values,const PointToPointMessageInfo& message) =0;
873 virtual Request send(Span<const long double> values,const PointToPointMessageInfo& message) =0;
874 virtual Request send(Span<const APReal> values,const PointToPointMessageInfo& message) =0;
875 virtual Request send(Span<const Real2> values,const PointToPointMessageInfo& message) =0;
876 virtual Request send(Span<const Real3> values,const PointToPointMessageInfo& message) =0;
877 virtual Request send(Span<const Real2x2> values,const PointToPointMessageInfo& message) =0;
878 virtual Request send(Span<const Real3x3> values,const PointToPointMessageInfo& message) =0;
879 virtual Request send(Span<const HPReal> values,const PointToPointMessageInfo& message) =0;
880 virtual Request sendSerializer(const ISerializer* values,const PointToPointMessageInfo& message) =0;
882
888 virtual MessageId probe(const PointToPointMessageInfo& message) =0;
889
895 virtual MessageSourceInfo legacyProbe(const PointToPointMessageInfo& message) =0;
896
897 virtual void sendRecv(ConstArrayView<char> send_buf,
898 ArrayView<char> recv_buf,Int32 rank) =0;
899 virtual void sendRecv(ConstArrayView<signed char> send_buf,
900 ArrayView<signed char> recv_buf,Int32 rank) =0;
901 virtual void sendRecv(ConstArrayView<unsigned char> send_buf,
902 ArrayView<unsigned char> recv_buf,Int32 rank) =0;
903 virtual void sendRecv(ConstArrayView<short> send_buf,
904 ArrayView<short> recv_buf,Int32 rank) =0;
905 virtual void sendRecv(ConstArrayView<unsigned short> send_buf,
906 ArrayView<unsigned short> recv_buf,Int32 rank) =0;
907 virtual void sendRecv(ConstArrayView<int> send_buf,
908 ArrayView<int> recv_buf,Int32 rank) =0;
909 virtual void sendRecv(ConstArrayView<unsigned int> send_buf,
910 ArrayView<unsigned int> recv_buf,Int32 rank) =0;
911 virtual void sendRecv(ConstArrayView<long> send_buf,
912 ArrayView<long> recv_buf,Int32 rank) =0;
913 virtual void sendRecv(ConstArrayView<unsigned long> send_buf,
914 ArrayView<unsigned long> recv_buf,Int32 rank) =0;
915 virtual void sendRecv(ConstArrayView<long long> send_buf,
916 ArrayView<long long> recv_buf,Int32 rank) =0;
917 virtual void sendRecv(ConstArrayView<unsigned long long> send_buf,
918 ArrayView<unsigned long long> recv_buf,Int32 rank) =0;
919 virtual void sendRecv(ConstArrayView<float> send_buf,
920 ArrayView<float> recv_buf,Int32 rank) =0;
921 virtual void sendRecv(ConstArrayView<double> send_buf,
922 ArrayView<double> recv_buf,Int32 rank) =0;
923 virtual void sendRecv(ConstArrayView<long double> send_buf,
924 ArrayView<long double> recv_buf,Int32 rank) =0;
925 virtual void sendRecv(ConstArrayView<APReal> send_buf,
926 ArrayView<APReal> recv_buf,Int32 rank) =0;
927 virtual void sendRecv(ConstArrayView<Real2> send_buf,
928 ArrayView<Real2> recv_buf,Int32 rank) =0;
929 virtual void sendRecv(ConstArrayView<Real3> send_buf,
930 ArrayView<Real3> recv_buf,Int32 rank) =0;
931 virtual void sendRecv(ConstArrayView<Real2x2> send_buf,
932 ArrayView<Real2x2> recv_buf,Int32 rank) =0;
933 virtual void sendRecv(ConstArrayView<Real3x3> send_buf,
934 ArrayView<Real3x3> recv_buf,Int32 rank) =0;
935 virtual void sendRecv(ConstArrayView<HPReal> send_buf,
936 ArrayView<HPReal> recv_buf,Int32 rank) =0;
937
938 virtual void allToAll(ConstArrayView<char> send_buf,ArrayView<char> recv_buf,
939 Integer count) =0;
940 virtual void allToAll(ConstArrayView<signed char> send_buf,ArrayView<signed char> recv_buf,
941 Integer count) =0;
942 virtual void allToAll(ConstArrayView<unsigned char> send_buf,ArrayView<unsigned char> recv_buf,
943 Integer count) =0;
944 virtual void allToAll(ConstArrayView<short> send_buf,ArrayView<short> recv_buf,Integer count) =0;
945 virtual void allToAll(ConstArrayView<unsigned short> send_buf,ArrayView<unsigned short> recv_buf,
946 Integer count) =0;
947 virtual void allToAll(ConstArrayView<int> send_buf,ArrayView<int> recv_buf,Integer count) =0;
948 virtual void allToAll(ConstArrayView<unsigned int> send_buf,ArrayView<unsigned int> recv_buf,
949 Integer count) =0;
950 virtual void allToAll(ConstArrayView<long> send_buf,ArrayView<long> recv_buf,Integer count) =0;
951 virtual void allToAll(ConstArrayView<unsigned long> send_buf,ArrayView<unsigned long> recv_buf,
952 Integer count) =0;
953 virtual void allToAll(ConstArrayView<long long> send_buf,ArrayView<long long> recv_buf,
954 Integer count) =0;
955 virtual void allToAll(ConstArrayView<unsigned long long> send_buf,
956 ArrayView<unsigned long long> recv_buf,Integer count) =0;
957 virtual void allToAll(ConstArrayView<float> send_buf,ArrayView<float> recv_buf,
958 Integer count) =0;
959 virtual void allToAll(ConstArrayView<double> send_buf,ArrayView<double> recv_buf,
960 Integer count) =0;
961 virtual void allToAll(ConstArrayView<long double> send_buf,ArrayView<long double> recv_buf,
962 Integer count) =0;
963 virtual void allToAll(ConstArrayView<APReal> send_buf,ArrayView<APReal> recv_buf,
964 Integer count) =0;
965 virtual void allToAll(ConstArrayView<Real2> send_buf,ArrayView<Real2> recv_buf,
966 Integer count) =0;
967 virtual void allToAll(ConstArrayView<Real3> send_buf,ArrayView<Real3> recv_buf,
968 Integer count) =0;
969 virtual void allToAll(ConstArrayView<Real2x2> send_buf,ArrayView<Real2x2> recv_buf,
970 Integer count) =0;
971 virtual void allToAll(ConstArrayView<Real3x3> send_buf,ArrayView<Real3x3> recv_buf,
972 Integer count) =0;
973 virtual void allToAll(ConstArrayView<HPReal> send_buf,ArrayView<HPReal> recv_buf,
974 Integer count) =0;
975
976
982 virtual void allToAllVariable(ConstArrayView<char> send_buf,Int32ConstArrayView send_count,
983 Int32ConstArrayView send_index,ArrayView<char> recv_buf,
984 Int32ConstArrayView recv_count,Int32ConstArrayView recv_index) =0;
985 virtual void allToAllVariable(ConstArrayView<signed char> send_buf,Int32ConstArrayView send_count,
986 Int32ConstArrayView send_index,ArrayView<signed char> recv_buf,
987 Int32ConstArrayView recv_count,Int32ConstArrayView recv_index) =0;
988 virtual void allToAllVariable(ConstArrayView<unsigned char> send_buf,Int32ConstArrayView send_count,
989 Int32ConstArrayView send_index,ArrayView<unsigned char> recv_buf,
990 Int32ConstArrayView recv_count,Int32ConstArrayView recv_index) =0;
991 virtual void allToAllVariable(ConstArrayView<short> send_buf,Int32ConstArrayView send_count,
992 Int32ConstArrayView send_index,ArrayView<short> recv_buf,
993 Int32ConstArrayView recv_count,Int32ConstArrayView recv_index) =0;
994 virtual void allToAllVariable(ConstArrayView<unsigned short> send_buf,Int32ConstArrayView send_count,
995 Int32ConstArrayView send_index,ArrayView<unsigned short> recv_buf,
996 Int32ConstArrayView recv_count,Int32ConstArrayView recv_index) =0;
997 virtual void allToAllVariable(ConstArrayView<int> send_buf,Int32ConstArrayView send_count,
998 Int32ConstArrayView send_index,ArrayView<int> recv_buf,
999 Int32ConstArrayView recv_count,Int32ConstArrayView recv_index) =0;
1000 virtual void allToAllVariable(ConstArrayView<unsigned int> send_buf,Int32ConstArrayView send_count,
1001 Int32ConstArrayView send_index,ArrayView<unsigned int> recv_buf,
1002 Int32ConstArrayView recv_count,Int32ConstArrayView recv_index) =0;
1003 virtual void allToAllVariable(ConstArrayView<long> send_buf,Int32ConstArrayView send_count,
1004 Int32ConstArrayView send_index,ArrayView<long> recv_buf,
1005 Int32ConstArrayView recv_count,Int32ConstArrayView recv_index) =0;
1006 virtual void allToAllVariable(ConstArrayView<unsigned long> send_buf,Int32ConstArrayView send_count,
1007 Int32ConstArrayView send_index,ArrayView<unsigned long> recv_buf,
1008 Int32ConstArrayView recv_count,Int32ConstArrayView recv_index) =0;
1009 virtual void allToAllVariable(ConstArrayView<long long> send_buf,Int32ConstArrayView send_count,
1010 Int32ConstArrayView send_index,ArrayView<long long> recv_buf,
1011 Int32ConstArrayView recv_count,Int32ConstArrayView recv_index) =0;
1012 virtual void allToAllVariable(ConstArrayView<unsigned long long> send_buf,Int32ConstArrayView send_count,
1013 Int32ConstArrayView send_index,ArrayView<unsigned long long> recv_buf,
1014 Int32ConstArrayView recv_count,Int32ConstArrayView recv_index) =0;
1015 virtual void allToAllVariable(ConstArrayView<float> send_buf,Int32ConstArrayView send_count,
1016 Int32ConstArrayView send_index,ArrayView<float> recv_buf,
1017 Int32ConstArrayView recv_count,Int32ConstArrayView recv_index) =0;
1018 virtual void allToAllVariable(ConstArrayView<double> send_buf,Int32ConstArrayView send_count,
1019 Int32ConstArrayView send_index,ArrayView<double> recv_buf,
1020 Int32ConstArrayView recv_count,Int32ConstArrayView recv_index) =0;
1021 virtual void allToAllVariable(ConstArrayView<long double> send_buf,Int32ConstArrayView send_count,
1022 Int32ConstArrayView send_index,ArrayView<long double> recv_buf,
1023 Int32ConstArrayView recv_count,Int32ConstArrayView recv_index) =0;
1024 virtual void allToAllVariable(ConstArrayView<APReal> send_buf,Int32ConstArrayView send_count,
1025 Int32ConstArrayView send_index,ArrayView<APReal> recv_buf,
1026 Int32ConstArrayView recv_count,Int32ConstArrayView recv_index) =0;
1027 virtual void allToAllVariable(ConstArrayView<Real2> send_buf,Int32ConstArrayView send_count,
1028 Int32ConstArrayView send_index,ArrayView<Real2> recv_buf,
1029 Int32ConstArrayView recv_count,Int32ConstArrayView recv_index) =0;
1030 virtual void allToAllVariable(ConstArrayView<Real3> send_buf,Int32ConstArrayView send_count,
1031 Int32ConstArrayView send_index,ArrayView<Real3> recv_buf,
1032 Int32ConstArrayView recv_count,Int32ConstArrayView recv_index) =0;
1033 virtual void allToAllVariable(ConstArrayView<Real2x2> send_buf,Int32ConstArrayView send_count,
1034 Int32ConstArrayView send_index,ArrayView<Real2x2> recv_buf,
1035 Int32ConstArrayView recv_count,Int32ConstArrayView recv_index) =0;
1036 virtual void allToAllVariable(ConstArrayView<Real3x3> send_buf,Int32ConstArrayView send_count,
1037 Int32ConstArrayView send_index,ArrayView<Real3x3> recv_buf,
1038 Int32ConstArrayView recv_count,Int32ConstArrayView recv_index) =0;
1039 virtual void allToAllVariable(ConstArrayView<HPReal> send_buf,Int32ConstArrayView send_count,
1040 Int32ConstArrayView send_index,ArrayView<HPReal> recv_buf,
1041 Int32ConstArrayView recv_count,Int32ConstArrayView recv_index) =0;
1043
1049
1050 virtual void scan(eReduceType rt,ArrayView<char> v) =0;
1051 virtual void scan(eReduceType rt,ArrayView<signed char> v) =0;
1052 virtual void scan(eReduceType rt,ArrayView<unsigned char> v) =0;
1053 virtual void scan(eReduceType rt,ArrayView<short> v) =0;
1054 virtual void scan(eReduceType rt,ArrayView<unsigned short> v) =0;
1055 virtual void scan(eReduceType rt,ArrayView<int> v) =0;
1056 virtual void scan(eReduceType rt,ArrayView<unsigned int> v) =0;
1057 virtual void scan(eReduceType rt,ArrayView<long> v) =0;
1058 virtual void scan(eReduceType rt,ArrayView<unsigned long> v) =0;
1059 virtual void scan(eReduceType rt,ArrayView<long long> v) =0;
1060 virtual void scan(eReduceType rt,ArrayView<unsigned long long> v) =0;
1061 virtual void scan(eReduceType rt,ArrayView<float> v) =0;
1062 virtual void scan(eReduceType rt,ArrayView<double> v) =0;
1063 virtual void scan(eReduceType rt,ArrayView<long double> v) =0;
1064 virtual void scan(eReduceType rt,ArrayView<APReal> v) =0;
1065 virtual void scan(eReduceType rt,ArrayView<Real2> v) =0;
1066 virtual void scan(eReduceType rt,ArrayView<Real3> v) =0;
1067 virtual void scan(eReduceType rt,ArrayView<Real2x2> v) =0;
1068 virtual void scan(eReduceType rt,ArrayView<Real3x3> v) =0;
1069 virtual void scan(eReduceType rt,ArrayView<HPReal> v) =0;
1071
1077 ARCCORE_DEPRECATED_2020("Use createSerializeMessageListRef() instead")
1079
1082
1084
1085
1086 virtual void barrier() =0;
1087
1089 virtual void waitAllRequests(ArrayView<Request> rvalues) =0;
1090
1096 virtual UniqueArray<Integer> waitSomeRequests(ArrayView<Request> rvalues) =0;
1097
1103 virtual UniqueArray<Integer> testSomeRequests(ArrayView<Request> rvalues) =0;
1104
1106
1107
1109
1110
1119 virtual Ref<IParallelMng> sequentialParallelMngRef() =0;
1120
1122
1129 [[deprecated("Y2021: Use Arcane::ParallelMngUtils;:createGetVariablesValuesOperationRef() instead")]]
1131
1138 [[deprecated("Y2021: Use Arcane::ParallelMngUtils;:createTransferValuesOperationRef() instead")]]
1140
1147 [[deprecated("Y2021: Use Arcane::ParallelMngUtils;:createExchangerRef() instead")]]
1149
1156 [[deprecated("Y2021: Use Arcane::ParallelMngUtils;:createSynchronizerRef() instead")]]
1158
1165 [[deprecated("Y2021: Use Arcane::ParallelMngUtils;:createSynchronizerRef() instead")]]
1167
1175 [[deprecated("Y2021: Use Arcane::ParallelMngUtils;:createTopologyRef() instead")]]
1177
1185
1193
1200 ARCCORE_DEPRECATED_2020("Use createSubParallelMngRef() instead")
1202
1218
1223
1225 virtual IStat* stat() =0;
1226
1228 virtual void printStats() =0;
1229
1232
1235
1236 public:
1237
1240
1241 private:
1242
1248};
1249
1250/*---------------------------------------------------------------------------*/
1251/*---------------------------------------------------------------------------*/
1261class ARCANE_CORE_EXPORT IParallelMngContainer
1262{
1264 protected:
1265 virtual ~IParallelMngContainer() = default;
1266 public:
1269};
1270
1271/*---------------------------------------------------------------------------*/
1272/*---------------------------------------------------------------------------*/
1278class ARCANE_CORE_EXPORT IParallelMngContainerFactory
1279{
1280 public:
1281 virtual ~IParallelMngContainerFactory() = default;
1282 public:
1297 Parallel::Communicator machine_communicator) =0;
1298};
1299
1300/*---------------------------------------------------------------------------*/
1301/*---------------------------------------------------------------------------*/
1302
1303} // End namepsace Arcane
1304
1305/*---------------------------------------------------------------------------*/
1306/*---------------------------------------------------------------------------*/
1307
1308#endif
Fichier contenant les déclarations concernant le modèle de programmation par échange de message.
#define ARCCORE_DECLARE_REFERENCE_COUNTED_INCLASS_METHODS()
Macro pour déclarer les méthodes virtuelles gérant les compteurs de référence.
Déclarations des types utilisés dans Arcane.
Emulation de réel en précision arbitraire.
Vue modifiable d'un tableau d'un type T.
Tableau d'items de types quelconques.
Vue constante d'un tableau de type T.
Classe implémentant un réel Haute Précision.
Definition HPReal.h:161
Opérations pour accéder aux valeurs de variables d'un autre sous-domaine.
Interface du gestionnaire des entrées sorties.
Definition IIOMng.h:36
Interface d'une famille d'entités.
Definition IItemFamily.h:84
Échange d'informations entre processeurs.
Interface d'une fabrique de conteneur de 'IParallelMng'.
virtual Ref< IParallelMngContainer > _createParallelMngBuilder(Int32 nb_local_rank, Parallel::Communicator communicator, Parallel::Communicator machine_communicator)=0
Créé un conteneur pour nb_local_rank rangs locaux et avec comme communicateur communicator.
Interface d'un conteneur de 'IParallelMng'.
virtual Ref< IParallelMng > _createParallelMng(Int32 local_rank, ITraceMng *tm)=0
Créé le IParallelMng pour le rang local local_rank.
Partie interne de IParallelMng.
Interface d'une fabrique pour les fonctions utilitaires de IParallelMng.
Interface du gestionnaire de parallélisme pour un sous-domaine.
virtual void gatherVariable(ConstArrayView< char > send_buf, Array< char > &recv_buf, Int32 rank)=0
Effectue un regroupement sur tous les processeurs.
virtual bool isThreadImplementation() const =0
Indique si l'implémentation utilise les threads.
virtual ITraceMng * traceMng() const =0
Gestionnaire de traces.
virtual void printStats()=0
Affiche des statistiques liées à ce gestionnaire du parallélisme.
virtual void computeMinMaxSum(char val, char &min_val, char &max_val, char &sum_val, Int32 &min_rank, Int32 &max_rank)=0
Calcule en une opération la somme, le min, le max d'une valeur.
virtual Int32 commRank() const =0
Rang de cette instance dans le communicateur.
virtual Ref< Parallel::IRequestList > createRequestListRef()=0
Créé une liste de requêtes pour ce gestionnaire.
virtual IParallelReplication * replication() const =0
Informations sur la réplication.
virtual ISerializeMessage * createSendSerializer(Int32 rank)=0
Créé un message non bloquant pour envoyer des données sérialisées au rang rank.
virtual void computeMinMaxSum(ConstArrayView< char > values, ArrayView< char > min_values, ArrayView< char > max_values, ArrayView< char > sum_values, ArrayView< Int32 > min_ranks, ArrayView< Int32 > max_ranks)=0
Calcule en une opération la somme, le min, le max d'une valeur.
virtual IParallelMng * sequentialParallelMng()=0
Retourne un gestionnaire de parallélisme séquentiel.
virtual ITimeStats * timeStats() const =0
Gestionnaire de statistiques associé (peut être nul)
virtual ISerializeMessageList * createSerializeMessageList()=0
Créé une liste pour gérer les 'ISerializeMessage'.
virtual IStat * stat()=0
Gestionnaire des statistiques.
virtual MessageSourceInfo legacyProbe(const PointToPointMessageInfo &message)=0
Sonde si des messages sont disponibles.
virtual UniqueArray< Integer > waitSomeRequests(ArrayView< Request > rvalues)=0
Bloque en attendant qu'une des requêtes rvalues soit terminée.
virtual ~IParallelMng()=default
Libère les ressources.
virtual ISerializeMessage * createReceiveSerializer(Int32 rank)=0
Créé un message non bloquant pour recevoir des données sérialisées du rang rank.
virtual void processMessages(ConstArrayView< ISerializeMessage * > messages)=0
Exécute les opérations des messages messages.
virtual void broadcastMemoryBuffer(ByteArray &bytes, Int32 rank)=0
Effectue un broadcast d'une zone mémoire.
virtual Ref< ISerializeMessageList > createSerializeMessageListRef()=0
Créé une liste pour gérer les 'ISerializeMessage'.
virtual void reduce(eReduceType rt, ArrayView< char > v)=0
Effectue la réduction de type rt sur le tableau v.
virtual ITimeMetricCollector * timeMetricCollector() const =0
Collecteur Arccore des statistiques temporelles (peut être nul)
virtual void recv(ArrayView< char > values, Int32 rank)=0
virtual void scan(eReduceType rt, ArrayView< char > v)=0
Applique un algorithme de prefix-um sur les valeurs de v via l'opération rt.
virtual IParallelTopology * createTopology()=0
Créé une instance contenant les infos sur la topologie des rangs de ce gestionnnaire.
virtual void allGatherVariable(ConstArrayView< char > send_buf, Array< char > &recv_buf)=0
Effectue un regroupement sur tous les processeurs.
virtual bool isMasterIO() const =0
true si l'instance est un gestionnaire maître des entrées/sorties.
virtual Int32 commSize() const =0
Nombre d'instance dans le communicateur.
virtual void scatterVariable(ConstArrayView< char > send_buf, ArrayView< char > recv_buf, Integer root)=0
Scinde un tableau sur plusieurs processeurs.
virtual bool isHybridImplementation() const =0
Indique si l'implémentation utilise le mode hybride.
virtual void allGather(ConstArrayView< char > send_buf, ArrayView< char > recv_buf)=0
Effectue un regroupement sur tous les processeurs. Il s'agit d'une opération collective....
virtual IIOMng * ioMng() const =0
Gestionnaire des entrées/sorties.
virtual IVariableSynchronizer * createSynchronizer(IItemFamily *family)=0
Retourne une interface pour synchroniser des variables sur le groupe de la famille family.
virtual IThreadMng * threadMng() const =0
Gestionnaire de threads.
virtual void waitAllRequests(ArrayView< Request > rvalues)=0
Bloque en attendant que les requêtes rvalues soient terminées.
virtual MessageId probe(const PointToPointMessageInfo &message)=0
Sonde si des messages sont disponibles.
virtual void build()=0
Construit l'instance.
virtual ARCANE_DEPRECATED Integer subDomainId() const final
Numéro du sous-domaine associé à ce gestionnaire.
virtual void initialize()=0
Initialise le gestionnaire du parallélisme.
virtual Parallel::Communicator communicator() const =0
Communicateur MPI associé à ce gestionnaire.
virtual void setReplication(IParallelReplication *v)=0
Positionne les Informations sur la réplication.
virtual ITransferValuesParallelOperation * createTransferValuesOperation()=0
Retourne une opération pour transférer des valeurs entre sous-domaine.
virtual ARCANE_DEPRECATED Integer nbSubDomain() const final
Nombre total de sous-domaines.
virtual IParallelMng * worldParallelMng() const =0
Gestionnaire de parallélisme sur l'ensemble des ressources allouées.
virtual void gather(ConstArrayView< char > send_buf, ArrayView< char > recv_buf, Int32 rank)=0
Effectue un regroupement sur un processeurs. Il s'agit d'une opération collective....
virtual IParallelNonBlockingCollective * nonBlockingCollective() const =0
Interface des opérations collectives non blocantes.
virtual ITimerMng * timerMng() const =0
Gestionnaire de timers.
virtual IParallelMng * createSubParallelMng(Int32ConstArrayView kept_ranks)=0
Créé un nouveau gestionnaire de parallélisme pour un sous-ensemble des rangs.
virtual IMessagePassingMng * messagePassingMng() const =0
Gestionnaire de message de Arccore associé
virtual IGetVariablesValuesParallelOperation * createGetVariablesValuesOperation()=0
Retourne une opération pour récupérer les valeurs d'une variable sur les entités d'un autre sous-doma...
virtual Ref< IParallelMng > createSubParallelMngRef(Int32ConstArrayView kept_ranks)=0
Créé un nouveau gestionnaire de parallélisme pour un sous-ensemble des rangs.
virtual UniqueArray< Integer > testSomeRequests(ArrayView< Request > rvalues)=0
Test si une des requêtes rvalues est terminée.
virtual IParallelExchanger * createExchanger()=0
Retourne une interface pour transférer des messages entre processeurs.
virtual Integer masterIORank() const =0
Rang de l'instance gérant les entrées/sorties (pour laquelle isMasterIO() est vrai)
virtual IParallelMngInternal * _internalApi()=0
API interne à Arcane.
virtual Request receive(Span< char > values, const PointToPointMessageInfo &message)=0
virtual Parallel::Communicator machineCommunicator() const
Communicateur MPI issus du communicateur communicator() réunissant tous les processus du noeud de cal...
virtual ARCANE_DEPRECATED_120 void * mpiCommunicator()
Adresse du communicateur MPI associé à ce gestionnaire.
Definition Parallel.cc:51
virtual bool isParallel() const =0
Retourne true si l'exécution est parallèle.
virtual Ref< IParallelMngUtilsFactory > _internalUtilsFactory() const =0
Fabrique des fonctions utilitaires.
virtual void freeRequests(ArrayView< Parallel::Request > requests)=0
Libère les requêtes.
virtual void * getMPICommunicator()=0
Adresse du communicateur MPI associé à ce gestionnaire.
virtual void setTimeStats(ITimeStats *time_stats)=0
Positionne le gestionnaire de statistiques.
virtual char reduce(eReduceType rt, char v)=0
Effectue la réduction de type rt sur le réel v et retourne la valeur.
virtual void barrier()=0
Effectue une barière.
Interface des opérations parallèles collectives non bloquantes.
Informations sur la réplication des sous-domaines en parallèle.
Informations sur la topologie d'allocation des coeurs de calcul.
Interface d'un gestionnaire de thread.
Definition IThreadMng.h:30
Interface gérant les statistiques sur l'exécution.
Interface gérant les statistiques sur les temps d'exécution.
Definition ITimeStats.h:43
Interface d'un gestionnaire de timer.
Definition ITimerMng.h:49
Interface du gestionnaire de traces.
Envoie de valeurs sur différents processeurs.
Interface d'un service de synchronisation de variable.
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Communicateur pour l'échange de message.
Interface du gestionnaire des échanges de messages.
Interface d'un message de sérialisation entre IMessagePassingMng.
Informations sur la source d'un message.
Informations pour envoyer/recevoir un message point à point.
Requête d'un message.
Definition Request.h:77
Statistiques sur le parallélisme.
Classe gérant un vecteur de réel de dimension 2.
Definition Real2.h:121
Classe gérant une matrice de réel de dimension 2x2.
Definition Real2x2.h:53
Classe gérant un vecteur de réel de dimension 3.
Definition Real3.h:132
Classe gérant une matrice de réel de dimension 3x3.
Definition Real3x3.h:66
Référence à une instance.
Vue d'un tableau d'éléments de type T.
Definition Span.h:633
Chaîne de caractères unicode.
Vecteur 1D de données avec sémantique par valeur (style STL).
eReduceType
Types des réductions supportées.
Implémentation de la concurrence.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
Array< Byte > ByteArray
Tableau dynamique à une dimension de caractères.
Definition UtilsTypes.h:137
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:498
std::int32_t Int32
Type entier signé sur 32 bits.