Arcane  4.1.12.0
User documentation
Loading...
Searching...
No Matches
MessagePassingGlobal.h
Go to the documentation of this file.
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/* MessagePassingGlobal.h (C) 2000-2026 */
9/* */
10/* Global definitions for the 'MessagePassing' component of '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;
36class ITimeMetricCollector;
37} // namespace Arcane
38
39/*---------------------------------------------------------------------------*/
40/*---------------------------------------------------------------------------*/
41
42namespace Arccore
43{
44using Arcane::ISerializer;
45using Arcane::ITimeMetricCollector;
46} // namespace Arccore
47
48/*---------------------------------------------------------------------------*/
49/*---------------------------------------------------------------------------*/
50
52{
53
54/*---------------------------------------------------------------------------*/
55/*---------------------------------------------------------------------------*/
56
57/*!
58 * \brief Number corresponding to a null rank.
59 *
60 * The meaning of the null rank depends on the situation.
61 *
62 * \sa MessageRank.
63 */
64static const Int32 A_NULL_RANK = static_cast<Int32>(-1);
65
66//! Number corresponding to a null rank
67static const Int32 A_NULL_TAG_VALUE = static_cast<Int32>(-1);
68
69//! Number corresponding to MPI_ANY_SOURCE
70static const Int32 A_ANY_SOURCE_RANK = static_cast<Int32>(-2);
71
72//! Number corresponding to MPI_PROC_NULL
73static const Int32 A_PROC_NULL_RANK = static_cast<Int32>(-3);
74
75class Communicator;
76class SubRequestCompletionInfo;
77class IRequestCreator;
78class IRequestList;
82class Request;
83class MessageId;
84class MessageTag;
85class MessageRank;
88class IStat;
89class Stat;
90class OneStat;
91class StatData;
94class IDispatchers;
95class Dispatchers;
96class IProfiler;
97class ISubRequest;
99template <typename DataType> class ITypeDispatcher;
101template <typename DataType> class GatherMessageInfo;
105class IContigMachineShMemWinBaseInternal;
106
107/*!
108 * \brief Supported reduction types.
109 */
111{
112 ReduceMin, //!< Minimum of values
113 ReduceMax, //!< Maximum of values
114 ReduceSum //!< Sum of values
115};
116
117/*!
118 * \brief Wait type.
119 */
121{
122 WaitAll = 0, //! Wait until all messages in the list are processed
123 WaitSome = 1, //! Wait until at least one message in the list is processed
124 TestSome = 2, //! Process only messages that can be processed without waiting.
125 //! \deprecated Use TestSome instead
127};
128
129/*!
130 * \brief Type indicating whether a message is blocking or not.
131 */
133{
134 Blocking = 0,
135 NonBlocking
136};
137
138/*---------------------------------------------------------------------------*/
139/*---------------------------------------------------------------------------*/
140
141/*!
142 * \brief Point-to-point message type.
143 */
145{
146 MsgSend = 0,
147 MsgReceive
148};
149
150/*---------------------------------------------------------------------------*/
151/*---------------------------------------------------------------------------*/
152
153} // End namespace Arcane::MessagePassing
154
155/*---------------------------------------------------------------------------*/
156/*---------------------------------------------------------------------------*/
157
158namespace Arcane::MessagePassing::internal
159{
161class SerializeMessageList;
162} // namespace Arcane::MessagePassing::internal
163
164namespace Arccore::MessagePassing::internal
165{
166using Arcane::MessagePassing::internal::BasicSerializeMessage;
167using Arcane::MessagePassing::internal::SerializeMessageList;
168} // namespace Arccore::MessagePassing::internal
169
170/*---------------------------------------------------------------------------*/
171/*---------------------------------------------------------------------------*/
172
174
175/*---------------------------------------------------------------------------*/
176/*---------------------------------------------------------------------------*/
177
178namespace Arcane
179{
180using Arcane::MessagePassing::IControlDispatcher;
181using Arcane::MessagePassing::IMessagePassingMng;
182using Arcane::MessagePassing::ISerializeMessage;
183using Arcane::MessagePassing::ISerializeMessageList;
184using Arcane::MessagePassing::ITypeDispatcher;
185} // namespace Arcane
186
187/*---------------------------------------------------------------------------*/
188/*---------------------------------------------------------------------------*/
189
191{
196
199using Arcane::MessagePassing::WaitAll;
202
203using Arcane::MessagePassing::Blocking;
205using Arcane::MessagePassing::NonBlocking;
206
208using Arcane::MessagePassing::MsgReceive;
209using Arcane::MessagePassing::MsgSend;
210
211using Arcane::MessagePassing::IRequestCreator;
212using Arcane::MessagePassing::IRequestList;
213using Arcane::MessagePassing::ISubRequest;
214using Arcane::MessagePassing::MessageId;
215using Arcane::MessagePassing::MessagePassingMng;
216using Arcane::MessagePassing::MessageRank;
217using Arcane::MessagePassing::MessageSourceInfo;
218using Arcane::MessagePassing::MessageTag;
219using Arcane::MessagePassing::PointToPointMessageInfo;
220using Arcane::MessagePassing::Request;
221using Arcane::MessagePassing::SubRequestCompletionInfo;
222
223using Arcane::MessagePassing::Communicator;
224using Arcane::MessagePassing::Dispatchers;
225using Arcane::MessagePassing::IDispatchers;
226using Arcane::MessagePassing::IProfiler;
227using Arcane::MessagePassing::ISerializeDispatcher;
228using Arcane::MessagePassing::IStat;
229using Arcane::MessagePassing::Stat;
230
231using Arcane::MessagePassing::A_ANY_SOURCE_RANK;
232using Arcane::MessagePassing::A_NULL_RANK;
233using Arcane::MessagePassing::A_NULL_TAG_VALUE;
234using Arcane::MessagePassing::A_PROC_NULL_RANK;
235
236using Arcane::MessagePassing::GatherMessageInfo;
237using Arcane::MessagePassing::GatherMessageInfoBase;
238
239using Arcane::MessagePassing::IControlDispatcher;
240using Arcane::MessagePassing::IMessagePassingMng;
241using Arcane::MessagePassing::ISerializeMessage;
242using Arcane::MessagePassing::ISerializeMessageList;
243using Arcane::MessagePassing::OneStat;
244using Arcane::MessagePassing::PointToPointSerializerMng;
245using Arcane::MessagePassing::StatData;
246} // namespace Arccore::MessagePassing
247
248/*---------------------------------------------------------------------------*/
249/*---------------------------------------------------------------------------*/
250
251// TODO: deprecate and use Arcane::MessagePassing instead
252namespace Arcane::Parallel
253{
258
261using Arcane::MessagePassing::WaitAll;
264
265using Arcane::MessagePassing::Blocking;
267using Arcane::MessagePassing::NonBlocking;
268
270using Arcane::MessagePassing::MsgReceive;
271using Arcane::MessagePassing::MsgSend;
272
282
284} // namespace Arcane::Parallel
285
286/*---------------------------------------------------------------------------*/
287/*---------------------------------------------------------------------------*/
288
289#endif
#define ARCCORE_DECLARE_REFERENCE_COUNTED_CLASS(class_name)
Macro to declare that a class uses a reference counter.
Communicator for message exchange.
Interface of the dispatcher container.
Definition Dispatchers.h:35
Brief information for a 'gather' message.
Brief information for a 'gather' message for data type DataType.
Interface of the dispatcher container.
Interface of the message passing manager.
Interface of a profiler for message exchanges.
Definition IProfiler.h:32
Interface for a request creator.
Definition Request.h:57
Interface for serialization messages.
Information about the source of a message.
Information for sending/receiving a point-to-point message.
Point-to-point communications using 'ISerializer'.
Declarations of types and methods used by message exchange mechanisms.
@ WaitSome
Wait until all messages in the list are processed.
@ TestSome
Wait until at least one message in the list is processed.
eBlockingType
Type indicating whether a message is blocking or not.
ePointToPointMessageType
Point-to-point message type.
eReduceType
Supported reduction types.
@ ReduceMin
Minimum of values.
@ ReduceMax
Maximum of values.
Concurrency implementation.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
std::int32_t Int32
Signed integer type of 32 bits.
Namespace containing the types and declarations that manage the message-passing parallelism mechanism...
Namespace of Arccore.