Arcane  v3.16.4.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
ParallelSuperMngDispatcher.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/* ParallelSuperMngDispatcher.h (C) 2000-2025 */
9/* */
10/* Interface du gestionnaire du parallélisme sur un domaine. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_PARALLELSUPERMNGDISPATCHER_H
13#define ARCANE_CORE_PARALLELSUPERMNGDISPATCHER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/core/IParallelSuperMng.h"
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24template <class T> class IParallelDispatchT;
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28/*!
29 * \internal
30 * \brief Redirige la gestion des messages des sous-domaines
31 * suivant le type de l'argument.
32 */
33class ARCANE_CORE_EXPORT ParallelSuperMngDispatcher
34: public IParallelSuperMng
35{
36 public:
37
38 ParallelSuperMngDispatcher();
39 ~ParallelSuperMngDispatcher() override;
40
41 protected:
42
43 void _setDispatchers(IParallelDispatchT<Byte>* b, IParallelDispatchT<Int32>* i32,
45 void _finalize();
46
47 public:
48
49 virtual void allGather(ByteConstArrayView send_buf, ByteArrayView recv_buf);
50 virtual void allGather(Int32ConstArrayView send_buf, Int32ArrayView recv_buf);
51 virtual void allGather(Int64ConstArrayView send_buf, Int64ArrayView recv_buf);
52 virtual void allGather(RealConstArrayView send_buf, RealArrayView recv_buf);
53
54 virtual Int32 reduce(eReduceType rt, Int32 v);
55 virtual Int64 reduce(eReduceType rt, Int64 v);
56 virtual Real reduce(eReduceType rt, Real v);
57
58 virtual void reduce(eReduceType rt, Int32ArrayView v);
59 virtual void reduce(eReduceType rt, Int64ArrayView v);
60 virtual void reduce(eReduceType rt, RealArrayView v);
61
62 void broadcast(ByteArrayView send_buf, Integer id) override;
63 void broadcast(Int32ArrayView send_buf, Integer id) override;
64 void broadcast(Int64ArrayView send_buf, Integer id) override;
65 void broadcast(RealArrayView send_buf, Integer id) override;
66
67 virtual void send(ByteConstArrayView values, Integer id);
68 virtual void send(Int32ConstArrayView values, Integer id);
69 virtual void send(Int64ConstArrayView values, Integer id);
70 virtual void send(RealConstArrayView values, Integer id);
71
72 virtual void recv(ByteArrayView values, Integer id);
73 virtual void recv(Int32ArrayView values, Integer id);
74 virtual void recv(Int64ArrayView values, Integer id);
75 virtual void recv(RealArrayView values, Integer id);
76
77 virtual Request send(ByteConstArrayView values, Integer id, bool is_blocked);
78 virtual Request send(Int32ConstArrayView values, Integer id, bool is_blocked);
79 virtual Request send(Int64ConstArrayView values, Integer id, bool is_blocked);
80 virtual Request send(RealConstArrayView values, Integer id, bool is_blocked);
81
82 virtual Request recv(ByteArrayView values, Integer id, bool is_blocked);
83 virtual Request recv(Int32ArrayView values, Integer id, bool is_blocked);
84 virtual Request recv(Int64ArrayView values, Integer id, bool is_blocked);
85 virtual Request recv(RealArrayView values, Integer id, bool is_blocked);
86
87 virtual void sendRecv(ByteConstArrayView send_buf, ByteArrayView recv_buf, Integer id);
88 virtual void sendRecv(Int32ConstArrayView send_buf, Int32ArrayView recv_buf, Integer id);
89 virtual void sendRecv(Int64ConstArrayView send_buf, Int64ArrayView recv_buf, Integer id);
90 virtual void sendRecv(RealConstArrayView send_buf, RealArrayView recv_buf, Integer id);
91
92 virtual void allToAll(ByteConstArrayView send_buf, ByteArrayView recv_buf, Integer count);
93 virtual void allToAll(Int32ConstArrayView send_buf, Int32ArrayView recv_buf, Integer count);
94 virtual void allToAll(Int64ConstArrayView send_buf, Int64ArrayView recv_buf, Integer count);
95 virtual void allToAll(RealConstArrayView send_buf, RealArrayView recv_buf, Integer count);
96
97 virtual Int32 scan(eReduceType rt, Int32 v);
98 virtual Int64 scan(eReduceType rt, Int64 v);
99 virtual Real scan(eReduceType rt, Real v);
100
101 virtual void scan(eReduceType rt, Int32ArrayView v);
102 virtual void scan(eReduceType rt, Int64ArrayView v);
103 virtual void scan(eReduceType rt, RealArrayView v);
104
105 private:
106
107 IParallelDispatchT<Byte>* m_byte = nullptr;
108 IParallelDispatchT<Int32>* m_int32 = nullptr;
109 IParallelDispatchT<Int64>* m_int64 = nullptr;
110 IParallelDispatchT<Real>* m_real = nullptr;
111};
112
113/*---------------------------------------------------------------------------*/
114/*---------------------------------------------------------------------------*/
115
116} // namespace Arcane
117
118/*---------------------------------------------------------------------------*/
119/*---------------------------------------------------------------------------*/
120
121#endif
void broadcast(ByteArrayView send_buf, Integer id) override
Envoie un tableau de valeurs sur tous les processus Cette opération synchronise le tableau de valeur ...
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
ArrayView< Int64 > Int64ArrayView
Equivalent C d'un tableau à une dimension d'entiers 64 bits.
Definition UtilsTypes.h:538
ArrayView< Byte > ByteArrayView
Equivalent C d'un tableau à une dimension de caractères.
Definition UtilsTypes.h:534
std::int64_t Int64
Type entier signé sur 64 bits.
Int32 Integer
Type représentant un entier.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:569
ConstArrayView< Int64 > Int64ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 64 bits.
Definition UtilsTypes.h:567
ArrayView< Int32 > Int32ArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:540
double Real
Type représentant un réel.
ConstArrayView< Byte > ByteConstArrayView
Equivalent C d'un tableau à une dimension de caractères.
Definition UtilsTypes.h:563
ArrayView< Real > RealArrayView
Equivalent C d'un tableau à une dimension de réels.
Definition UtilsTypes.h:546
std::int32_t Int32
Type entier signé sur 32 bits.
ConstArrayView< Real > RealConstArrayView
Equivalent C d'un tableau à une dimension de réels.
Definition UtilsTypes.h:575