Arcane  v3.16.7.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;
94class IMachineMemoryWindowBaseInternal;
95
96/*!
97 * \brief Types des réductions supportées.
98 */
100{
101 ReduceMin, //!< Minimum des valeurs
102 ReduceMax, //!< Maximum des valeurs
103 ReduceSum //!< Somme des valeurs
104};
105
106/*!
107 * \brief Type d'attente.
108 */
110{
111 WaitAll = 0, //! Attend que tous les messages de la liste soient traités
112 WaitSome = 1, //! Attend que au moins un message de la liste soit traité
113 TestSome = 2, //! Traite uniquement les messages qui peuvent l'être sans attendre.
114 //! \deprecated Utiliser TestSome à la place
116};
117/*!
118 * \brief Type indiquant si un message est bloquant ou non.
119 */
121{
122 Blocking = 0,
123 NonBlocking
124};
125
126/*---------------------------------------------------------------------------*/
127/*---------------------------------------------------------------------------*/
128/*!
129 * \brief Type de message point à point.
130 */
132{
133 MsgSend = 0,
134 MsgReceive
135};
136
137/*---------------------------------------------------------------------------*/
138/*---------------------------------------------------------------------------*/
139
140} // End namespace Arcane::MessagePassing
141
142/*---------------------------------------------------------------------------*/
143/*---------------------------------------------------------------------------*/
144
145namespace Arcane::MessagePassing::internal
146{
149}
150
151namespace Arccore::MessagePassing::internal
152{
153using Arcane::MessagePassing::internal::BasicSerializeMessage;
154using Arcane::MessagePassing::internal::SerializeMessageList;
155}
156
157/*---------------------------------------------------------------------------*/
158/*---------------------------------------------------------------------------*/
159
161
162/*---------------------------------------------------------------------------*/
163/*---------------------------------------------------------------------------*/
164
165namespace Arcane
166{
167using Arcane::MessagePassing::IControlDispatcher;
168using Arcane::MessagePassing::IMessagePassingMng;
169using Arcane::MessagePassing::ISerializeMessage;
170using Arcane::MessagePassing::ISerializeMessageList;
171using Arcane::MessagePassing::ITypeDispatcher;
172}
173
174/*---------------------------------------------------------------------------*/
175/*---------------------------------------------------------------------------*/
176
178{
183
186using Arcane::MessagePassing::WaitAll;
189
190using Arcane::MessagePassing::Blocking;
192using Arcane::MessagePassing::NonBlocking;
193
195using Arcane::MessagePassing::MsgReceive;
196using Arcane::MessagePassing::MsgSend;
197
198using Arcane::MessagePassing::IRequestCreator;
199using Arcane::MessagePassing::IRequestList;
200using Arcane::MessagePassing::ISubRequest;
201using Arcane::MessagePassing::MessageId;
202using Arcane::MessagePassing::MessageRank;
203using Arcane::MessagePassing::MessageSourceInfo;
204using Arcane::MessagePassing::MessageTag;
205using Arcane::MessagePassing::PointToPointMessageInfo;
206using Arcane::MessagePassing::Request;
207using Arcane::MessagePassing::MessagePassingMng;
208using Arcane::MessagePassing::SubRequestCompletionInfo;
209
210using Arcane::MessagePassing::Communicator;
211using Arcane::MessagePassing::IProfiler;
212using Arcane::MessagePassing::IStat;
213using Arcane::MessagePassing::Stat;
214using Arcane::MessagePassing::ISerializeDispatcher;
215using Arcane::MessagePassing::IDispatchers;
216using Arcane::MessagePassing::Dispatchers;
217
218using Arcane::MessagePassing::A_NULL_RANK;
219using Arcane::MessagePassing::A_NULL_TAG_VALUE;
220using Arcane::MessagePassing::A_ANY_SOURCE_RANK;
221using Arcane::MessagePassing::A_PROC_NULL_RANK;
222
223using Arcane::MessagePassing::GatherMessageInfoBase;
224using Arcane::MessagePassing::GatherMessageInfo;
225
226using Arcane::MessagePassing::OneStat;
227using Arcane::MessagePassing::StatData;
228using Arcane::MessagePassing::IControlDispatcher;
229using Arcane::MessagePassing::IMessagePassingMng;
230using Arcane::MessagePassing::PointToPointSerializerMng;
231using Arcane::MessagePassing::ISerializeMessage;
232using Arcane::MessagePassing::ISerializeMessageList;
233}
234
235/*---------------------------------------------------------------------------*/
236/*---------------------------------------------------------------------------*/
237
238// TODO: rendre obsolète et utiliser Arcane::MessagePassing à la place
239namespace Arcane::Parallel
240{
245
248using Arcane::MessagePassing::WaitAll;
251
252using Arcane::MessagePassing::Blocking;
254using Arcane::MessagePassing::NonBlocking;
255
257using Arcane::MessagePassing::MsgReceive;
258using Arcane::MessagePassing::MsgSend;
259
269
271}
272
273/*---------------------------------------------------------------------------*/
274/*---------------------------------------------------------------------------*/
275
276#endif
277
#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.
@ 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.