Arcane  4.1.12.0
Developer 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;
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
64static const Int32 A_NULL_RANK = static_cast<Int32>(-1);
65
67static const Int32 A_NULL_TAG_VALUE = static_cast<Int32>(-1);
68
70static const Int32 A_ANY_SOURCE_RANK = static_cast<Int32>(-2);
71
73static const Int32 A_PROC_NULL_RANK = static_cast<Int32>(-3);
74
75class Communicator;
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;
106
116
121{
122 WaitAll = 0,
127};
128
133{
134 Blocking = 0,
135 NonBlocking
136};
137
138/*---------------------------------------------------------------------------*/
139/*---------------------------------------------------------------------------*/
140
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{
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{
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.
Interface managing statistics on execution.
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.
Class allowing the creation of a memory window for a node of computation.
Manage control streams for parallel messages.
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.
Sub-request of a request.
Definition Request.h:39
Parallel message handling for the type Type.
Information about the source of a message.
Information for sending/receiving a point-to-point message.
Point-to-point communications using 'ISerializer'.
Statistical data set for profiling.
Definition Stat.h:37
Statistics manager for parallelism.
Definition Stat.h:74
Completion information for a sub-request.
Serializing message using a BasicSerializer.
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.