Arcane  v3.16.0.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
MessagePassingGlobal.h
Aller à la documentation de ce fichier.
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/* MessagePassingGlobal.h (C) 2000-2025 */
9/* */
10/* Définitions globales de la composante 'MessagePassing' de 'Arccore'. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCCORE_MESSAGEPASSING_MESSAGEPASSINGGLOBAL_H
13#define ARCCORE_MESSAGEPASSING_MESSAGEPASSINGGLOBAL_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22#if defined(ARCCORE_COMPONENT_arccore_message_passing)
23#define ARCCORE_MESSAGEPASSING_EXPORT ARCCORE_EXPORT
24#define ARCCORE_MESSAGEPASSING_EXTERN_TPL
25#else
26#define ARCCORE_MESSAGEPASSING_EXPORT ARCCORE_IMPORT
27#define ARCCORE_MESSAGEPASSING_EXTERN_TPL extern
28#endif
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32
33namespace Arcane
34{
35class ISerializer;
37}
38namespace Arccore
39{
40using Arcane::ISerializer;
41using Arcane::ITimeMetricCollector;
42}
43
45{
46/*!
47 * \brief Numéro correspondant à un rang nul.
48 *
49 * La signification du rang nul dépend de la situation.
50 *
51 * \sa MessageRank.
52 */
53static const Int32 A_NULL_RANK = static_cast<Int32>(-1);
54
55//! Numéro correspondant à un rang nul
56static const Int32 A_NULL_TAG_VALUE = static_cast<Int32>(-1);
57
58//! Numéro correspondant à MPI_ANY_SOURCE
59static const Int32 A_ANY_SOURCE_RANK = static_cast<Int32>(-2);
60
61//! Numéro correspondant à MPI_PROC_NULL
62static const Int32 A_PROC_NULL_RANK = static_cast<Int32>(-3);
63
64class Communicator;
65class SubRequestCompletionInfo;
66class IRequestCreator;
67class IRequestList;
71class Request;
72class MessageId;
73class MessageTag;
74class MessageRank;
77class IStat;
78class Stat;
79class OneStat;
80class StatData;
83class IDispatchers;
84class Dispatchers;
85class IProfiler;
86class ISubRequest;
88template<typename DataType> class ITypeDispatcher;
90template<typename DataType> class GatherMessageInfo;
94
95/*!
96 * \brief Types des réductions supportées.
97 */
99{
100 ReduceMin, //!< Minimum des valeurs
101 ReduceMax, //!< Maximum des valeurs
102 ReduceSum //!< Somme des valeurs
103};
104
105/*!
106 * \brief Type d'attente.
107 */
109{
110 WaitAll = 0, //! Attend que tous les messages de la liste soient traités
111 WaitSome = 1, //! Attend que au moins un message de la liste soit traité
112 TestSome = 2, //! Traite uniquement les messages qui peuvent l'être sans attendre.
113 //! \deprecated Utiliser TestSome à la place
115};
116/*!
117 * \brief Type indiquant si un message est bloquant ou non.
118 */
120{
121 Blocking = 0,
122 NonBlocking
123};
124
125/*---------------------------------------------------------------------------*/
126/*---------------------------------------------------------------------------*/
127/*!
128 * \brief Type de message point à point.
129 */
131{
132 MsgSend = 0,
133 MsgReceive
134};
135
136/*---------------------------------------------------------------------------*/
137/*---------------------------------------------------------------------------*/
138
139} // End namespace Arcane::MessagePassing
140
141/*---------------------------------------------------------------------------*/
142/*---------------------------------------------------------------------------*/
143
144namespace Arcane::MessagePassing::internal
145{
148}
149
150namespace Arccore::MessagePassing::internal
151{
152using Arcane::MessagePassing::internal::BasicSerializeMessage;
153using Arcane::MessagePassing::internal::SerializeMessageList;
154}
155
156/*---------------------------------------------------------------------------*/
157/*---------------------------------------------------------------------------*/
158
160
161/*---------------------------------------------------------------------------*/
162/*---------------------------------------------------------------------------*/
163
164namespace Arcane
165{
166using Arcane::MessagePassing::IControlDispatcher;
167using Arcane::MessagePassing::IMessagePassingMng;
168using Arcane::MessagePassing::ISerializeMessage;
169using Arcane::MessagePassing::ISerializeMessageList;
170using Arcane::MessagePassing::ITypeDispatcher;
171}
172
173/*---------------------------------------------------------------------------*/
174/*---------------------------------------------------------------------------*/
175
177{
182
185using Arcane::MessagePassing::WaitAll;
188
189using Arcane::MessagePassing::Blocking;
191using Arcane::MessagePassing::NonBlocking;
192
194using Arcane::MessagePassing::MsgReceive;
195using Arcane::MessagePassing::MsgSend;
196
197using Arcane::MessagePassing::IRequestCreator;
198using Arcane::MessagePassing::IRequestList;
199using Arcane::MessagePassing::ISubRequest;
200using Arcane::MessagePassing::MessageId;
201using Arcane::MessagePassing::MessageRank;
202using Arcane::MessagePassing::MessageSourceInfo;
203using Arcane::MessagePassing::MessageTag;
204using Arcane::MessagePassing::PointToPointMessageInfo;
205using Arcane::MessagePassing::Request;
206using Arcane::MessagePassing::MessagePassingMng;
207using Arcane::MessagePassing::SubRequestCompletionInfo;
208
209using Arcane::MessagePassing::Communicator;
210using Arcane::MessagePassing::IProfiler;
211using Arcane::MessagePassing::IStat;
212using Arcane::MessagePassing::Stat;
213using Arcane::MessagePassing::ISerializeDispatcher;
214using Arcane::MessagePassing::IDispatchers;
215using Arcane::MessagePassing::Dispatchers;
216
217using Arcane::MessagePassing::A_NULL_RANK;
218using Arcane::MessagePassing::A_NULL_TAG_VALUE;
219using Arcane::MessagePassing::A_ANY_SOURCE_RANK;
220using Arcane::MessagePassing::A_PROC_NULL_RANK;
221
222using Arcane::MessagePassing::GatherMessageInfoBase;
223using Arcane::MessagePassing::GatherMessageInfo;
224
225using Arcane::MessagePassing::OneStat;
226using Arcane::MessagePassing::StatData;
227using Arcane::MessagePassing::IControlDispatcher;
228using Arcane::MessagePassing::IMessagePassingMng;
229using Arcane::MessagePassing::PointToPointSerializerMng;
230using Arcane::MessagePassing::ISerializeMessage;
231using Arcane::MessagePassing::ISerializeMessageList;
232}
233
234/*---------------------------------------------------------------------------*/
235/*---------------------------------------------------------------------------*/
236
237// TODO: rendre obsolète et utiliser Arcane::MessagePassing à la place
238namespace Arcane::Parallel
239{
244
247using Arcane::MessagePassing::WaitAll;
250
251using Arcane::MessagePassing::Blocking;
253using Arcane::MessagePassing::NonBlocking;
254
256using Arcane::MessagePassing::MsgReceive;
257using Arcane::MessagePassing::MsgSend;
258
268
270}
271
272/*---------------------------------------------------------------------------*/
273/*---------------------------------------------------------------------------*/
274
275#endif
276
#define ARCCORE_DECLARE_REFERENCE_COUNTED_CLASS(class_name)
Macro pour déclarer qu'une classe utilise un compteur de référence.
Interface gérant les statistiques sur l'exécution.
Communicateur pour l'échange de message.
Interface du conteneur des dispatchers.
Definition Dispatchers.h:34
Informations pour un message 'gather'.
Informations pour un message 'gather' pour le type de données DataType.
Interface du conteneur des dispatchers.
Interface du gestionnaire des échanges de messages.
Interface d'un profiler pour les échanges de messages.
Definition IProfiler.h:31
Interface d'un créateur de requête.
Definition Request.h:52
Interface des messages de sérialisation.
Gestionnaire des échanges de messages.
Informations sur la source d'un message.
Informations pour envoyer/recevoir un message point à point.
Communications point à point par des 'ISerializer'.
Requête d'un message.
Definition Request.h:77
Déclarations des types et méthodes utilisés par les mécanismes d'échange de messages.
Definition Parallel.h:50
@ WaitSome
Attend que tous les messages de la liste soient traités.
@ TestSome
Attend que au moins un message de la liste soit traité
eBlockingType
Type indiquant si un message est bloquant ou non.
ePointToPointMessageType
Type de message point à point.
eReduceType
Types des réductions supportées.
@ ReduceSum
Somme des valeurs.
@ ReduceMin
Minimum des valeurs.
@ ReduceMax
Maximum des valeurs.
Implémentation de la concurrence.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int32_t Int32
Type entier signé sur 32 bits.
Espace de nommage contenant les types et déclarations qui gèrent le mécanisme de parallélisme par éch...
Espace de nom de Arccore.