Arcane
v3.15.3.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
MpiSerializeMessageList.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
/* MpiSerializeMessageList.h (C) 2000-2025 */
9
/* */
10
/* Implémentation de ISerializeMessageList pour MPI. */
11
/*---------------------------------------------------------------------------*/
12
#ifndef ARCCORE_MESSAGEPASSINGMPI_MPISERIALIZEMESSAGELIST_H
13
#define ARCCORE_MESSAGEPASSINGMPI_MPISERIALIZEMESSAGELIST_H
14
/*---------------------------------------------------------------------------*/
15
/*---------------------------------------------------------------------------*/
16
17
#include "arccore/message_passing_mpi/MessagePassingMpiGlobal.h"
18
#include "arccore/message_passing/ISerializeMessageList.h"
19
#include "arccore/message_passing/Request.h"
20
#include "arccore/trace/TraceGlobal.h"
21
#include "arccore/trace/TimeMetric.h"
22
#include "
arccore/base/BaseTypes.h
"
23
#include "arccore/serialize/SerializeGlobal.h"
24
#include "arccore/collections/Array.h"
25
26
/*---------------------------------------------------------------------------*/
27
/*---------------------------------------------------------------------------*/
28
29
namespace
Arcane::MessagePassing::Mpi
30
{
31
32
/*---------------------------------------------------------------------------*/
33
/*---------------------------------------------------------------------------*/
34
35
class
MyMpiParallelMng;
36
class
MpiSerializeMessage;
37
38
/*---------------------------------------------------------------------------*/
39
/*---------------------------------------------------------------------------*/
40
41
class
ARCCORE_MESSAGEPASSINGMPI_EXPORT
MpiSerializeMessageRequest
42
{
43
public
:
44
MpiSerializeMessageRequest
() =
default
;
45
MpiSerializeMessageRequest
(
internal::BasicSerializeMessage
*
mpi_message
,
Request
request)
46
: m_mpi_message(
mpi_message
), m_request(std::move(request)) {}
47
public
:
48
internal::BasicSerializeMessage
* m_mpi_message =
nullptr
;
49
Request
m_request;
50
};
51
52
/*---------------------------------------------------------------------------*/
53
/*---------------------------------------------------------------------------*/
54
/*!
55
* \brief Implémentation MPI de la gestion des 'ISerializeMessage'.
56
*/
57
class
ARCCORE_MESSAGEPASSINGMPI_EXPORT
MpiSerializeMessageList
58
:
public
ISerializeMessageList
59
{
60
private
:
61
62
class
_SortMessages
;
63
64
public
:
65
66
MpiSerializeMessageList
(
MpiSerializeDispatcher
* dispatcher);
67
68
public
:
69
70
void
addMessage(
ISerializeMessage
*
msg
)
override
;
71
void
processPendingMessages()
override
;
72
Integer waitMessages(
eWaitType
wait_type
)
override
;
73
Ref<ISerializeMessage>
74
createAndAddMessage(
MessageRank
destination,
ePointToPointMessageType
type)
override
;
75
76
Request
_processOneMessageGlobalBuffer(
internal::BasicSerializeMessage
*
msm
,
MessageRank
source,
MessageTag
mpi_tag
);
77
Request
_processOneMessage(
internal::BasicSerializeMessage
*
msm
,
MessageRank
source,
MessageTag
mpi_tag
);
78
79
private
:
80
81
Integer _waitMessages(
eWaitType
wait_type
);
82
Integer _waitMessages2(
eWaitType
wait_type
);
83
84
private
:
85
86
MpiSerializeDispatcher
* m_dispatcher =
nullptr
;
87
MpiAdapter
* m_adapter =
nullptr
;
88
ITraceMng
* m_trace =
nullptr
;
89
UniqueArray<internal::BasicSerializeMessage*>
m_messages_to_process;
90
UniqueArray<MpiSerializeMessageRequest>
m_messages_request;
91
TimeMetricAction m_message_passing_phase;
92
bool
m_is_verbose =
false
;
93
};
94
95
/*---------------------------------------------------------------------------*/
96
/*---------------------------------------------------------------------------*/
97
98
}
// End Namespace Arccore::MessagePassing::Mpi
99
100
/*---------------------------------------------------------------------------*/
101
/*---------------------------------------------------------------------------*/
102
103
#endif
104
BaseTypes.h
Déclarations des types de la composante 'base' de Arccore.
Arcane::MessagePassing::Mpi::MpiAdapter
Definition
MpiAdapter.h:50
Arcane::MessagePassing::Mpi::MpiSerializeDispatcher
Definition
MpiSerializeDispatcher.h:31
Arcane::MessagePassing::Mpi::MpiSerializeMessageList::_SortMessages
Definition
MpiSerializeMessageList.cc:35
Arcane::MessagePassing::Mpi::MpiSerializeMessageList
Implémentation MPI de la gestion des 'ISerializeMessage'.
Definition
MpiSerializeMessageList.h:59
Arcane::MessagePassing::Mpi::MpiSerializeMessageRequest
Definition
MpiSerializeMessageList.h:42
Arccore::ITraceMng
Interface du gestionnaire de traces.
Definition
arccore/src/trace/arccore/trace/ITraceMng.h:156
Arccore::MessagePassing::ISerializeMessageList
Interface d'une liste de messages de sérialisation.
Definition
arccore/src/message_passing/arccore/message_passing/ISerializeMessageList.h:61
Arccore::MessagePassing::ISerializeMessage
Definition
arccore/src/message_passing/arccore/message_passing/ISerializeMessage.h:45
Arccore::MessagePassing::MessageRank
Rang d'un message.
Definition
MessageRank.h:41
Arccore::MessagePassing::MessageTag
Tag d'un message.
Definition
MessageTag.h:42
Arccore::MessagePassing::Request
Requête d'un message.
Definition
Request.h:77
Arccore::MessagePassing::internal::BasicSerializeMessage
Definition
BasicSerializeMessage.h:50
Arccore::Ref
Référence à une instance.
Definition
arccore/src/base/arccore/base/Ref.h:143
Arccore::MessagePassing::ePointToPointMessageType
ePointToPointMessageType
Type de message point à point.
Definition
MessagePassingGlobal.h:121
Arccore::MessagePassing::eWaitType
eWaitType
Type d'attente.
Definition
MessagePassingGlobal.h:99
arccore
message_passing_mpi
MpiSerializeMessageList.h
Généré le Lundi 10 Février 2025 02:47:17 pour Arcane par
1.9.8