Arcane
v3.15.3.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
MpiSerializeDispatcher.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
/* MpiSerializeDispatcher.h (C) 2000-2025 */
9
/* */
10
/* Gestion des messages de sérialisation avec MPI. */
11
/*---------------------------------------------------------------------------*/
12
#ifndef ARCCORE_MESSAGEPASSINGMPI_MPISERIALIZEDISPATCHER_H
13
#define ARCCORE_MESSAGEPASSINGMPI_MPISERIALIZEDISPATCHER_H
14
/*---------------------------------------------------------------------------*/
15
/*---------------------------------------------------------------------------*/
16
17
#include "arccore/message_passing_mpi/MessagePassingMpiGlobal.h"
18
#include "arccore/message_passing/ISerializeDispatcher.h"
19
#include "arccore/message_passing/Request.h"
20
#include "arccore/collections/Array.h"
21
#include "arccore/serialize/SerializeGlobal.h"
22
#include "
arccore/base/BaseTypes.h
"
23
24
/*---------------------------------------------------------------------------*/
25
/*---------------------------------------------------------------------------*/
26
27
namespace
Arcane::MessagePassing::Mpi
28
{
29
class
ARCCORE_MESSAGEPASSINGMPI_EXPORT
MpiSerializeDispatcher
30
:
public
ISerializeDispatcher
31
{
32
friend
MpiSerializeMessageList
;
33
class
ReceiveSerializerSubRequest
;
34
class
SendSerializerSubRequest
;
35
36
public
:
37
38
class
SerializeSubRequest
39
{
40
public
:
41
static
const
int
MAX_REQUEST_SIZE = 256;
42
public
:
43
Byte m_bytes[MAX_REQUEST_SIZE];
44
Request
m_request;
45
};
46
47
public
:
48
49
explicit
MpiSerializeDispatcher
(
MpiAdapter
* adapter);
50
~MpiSerializeDispatcher
()
override
;
51
52
public
:
53
54
Ref<ISerializeMessageList>
createSerializeMessageListRef()
override
;
55
Request
sendSerializer(
const
ISerializer
* s,
const
PointToPointMessageInfo
& message)
override
;
56
Request
receiveSerializer(
ISerializer
* s,
const
PointToPointMessageInfo
& message)
override
;
57
58
public
:
59
60
// Ces méthodes sont spécifiques à la version MPI.
62
Int64 serializeBufferSize()
const
{
return
m_serialize_buffer_size; }
63
Request
legacySendSerializer(
ISerializer
* values,
const
PointToPointMessageInfo
& message);
64
Request
sendSerializer(
const
ISerializer
* s,
const
PointToPointMessageInfo
& message,
bool
force_one_message
);
65
void
legacyReceiveSerializer(
ISerializer
* values,
MessageRank
rank,
MessageTag
mpi_tag
);
66
void
checkFinishedSubRequests();
67
MpiAdapter
* adapter()
const
{
return
m_adapter; }
68
static
MessageTag
nextSerializeTag(
MessageTag
tag);
70
71
void
broadcastSerializer(
ISerializer
* values,
MessageRank
rank);
72
ITraceMng
* traceMng()
const
{
return
m_trace; }
73
74
protected
:
75
76
// Ceux deux méthodes sont utilisés aussi par 'MpiSerializeMessageList'
77
Request
_recvSerializerBytes(
Span<Byte>
bytes,
MessageRank
rank,
MessageTag
tag,
bool
is_blocking
);
78
Request
_recvSerializerBytes(
Span<Byte>
bytes,
MessageId
message_id
,
bool
is_blocking
);
79
80
private
:
81
82
MpiAdapter
* m_adapter =
nullptr
;
83
ITraceMng
* m_trace =
nullptr
;
84
Int64 m_serialize_buffer_size;
85
Int64 m_max_serialize_buffer_size;
86
UniqueArray<SerializeSubRequest*>
m_sub_requests;
87
bool
m_is_trace_serializer =
false
;
88
MPI_Datatype
m_byte_serializer_datatype;
89
90
private
:
91
92
BasicSerializer
* _castSerializer(
ISerializer
* serializer);
93
const
BasicSerializer
* _castSerializer(
const
ISerializer
* serializer);
94
void
_checkBigMessage(Int64
message_size
);
95
Request
_sendSerializerWithTag(
ISerializer
* values,
MessageRank
rank,
96
MessageTag
mpi_tag
,
bool
is_blocking
);
97
Request
_sendSerializerBytes(
Span<const Byte>
bytes,
MessageRank
rank,
98
MessageTag
tag,
bool
is_blocking
);
99
void
_init();
100
};
101
102
/*---------------------------------------------------------------------------*/
103
/*---------------------------------------------------------------------------*/
104
105
}
// namespace Arccore::MessagePassing::Mpi
106
107
/*---------------------------------------------------------------------------*/
108
/*---------------------------------------------------------------------------*/
109
110
#endif
BaseTypes.h
Déclarations des types de la composante 'base' de Arccore.
Arcane::LimaWrapper
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition
Lima.cc:149
Arcane::MessagePassing::Mpi::MpiAdapter
Adapteur pour MPI.
Definition
arccore/src/message_passing_mpi/arccore/message_passing_mpi/MpiAdapter.h:50
Arcane::MessagePassing::Mpi::MpiSerializeDispatcher::ReceiveSerializerSubRequest
Definition
MpiSerializeDispatcher.cc:138
Arcane::MessagePassing::Mpi::MpiSerializeDispatcher::SendSerializerSubRequest
Sous-requête d'envoi.
Definition
MpiSerializeDispatcher.cc:94
Arcane::MessagePassing::Mpi::MpiSerializeDispatcher::SerializeSubRequest
Definition
MpiSerializeDispatcher.h:39
Arcane::MessagePassing::Mpi::MpiSerializeDispatcher
Definition
MpiSerializeDispatcher.h:31
Arcane::MessagePassing::Mpi::MpiSerializeMessageList
Implémentation MPI de la gestion des 'ISerializeMessage'.
Definition
arccore/src/message_passing_mpi/arccore/message_passing_mpi/MpiSerializeMessageList.h:59
Arccore::BasicSerializer
Implémentation basique de 'ISerializer'.
Definition
BasicSerializer.h:89
Arccore::ISerializer
Interface d'un sérialiseur.
Definition
arccore/src/serialize/arccore/serialize/ISerializer.h:58
Arccore::ITraceMng
Interface du gestionnaire de traces.
Definition
arccore/src/trace/arccore/trace/ITraceMng.h:156
Arccore::MessagePassing::ISerializeDispatcher
Interface des messages de sérialisation.
Definition
ISerializeDispatcher.h:31
Arccore::MessagePassing::MessageId
MessageId.
Definition
MessageId.h:42
Arccore::MessagePassing::MessageRank
Rang d'un message.
Definition
MessageRank.h:41
Arccore::MessagePassing::MessageTag
Tag d'un message.
Definition
MessageTag.h:42
Arccore::MessagePassing::PointToPointMessageInfo
Informations pour envoyer/recevoir un message point à point.
Definition
PointToPointMessageInfo.h:52
Arccore::MessagePassing::Request
Requête d'un message.
Definition
Request.h:77
arccore
src
message_passing_mpi
arccore
message_passing_mpi
MpiSerializeDispatcher.h
Généré le Lundi 10 Février 2025 02:52:10 pour Arcane par
1.9.8