14#include "arccore/message_passing_mpi/StandaloneMpiMessagePassingMng.h"
16#include "arccore/message_passing/Dispatchers.h"
17#include "arccore/message_passing/Stat.h"
18#include "arccore/trace/ITraceMng.h"
19#include "arccore/base/ReferenceCounter.h"
20#include "arccore/base/BFloat16.h"
21#include "arccore/base/Float16.h"
23#include "arccore/message_passing_mpi/MpiAdapter.h"
24#include "arccore/message_passing_mpi/MpiDatatype.h"
25#include "arccore/message_passing_mpi/MpiTypeDispatcher.h"
26#include "arccore/message_passing_mpi/MpiControlDispatcher.h"
27#include "arccore/message_passing_mpi/MpiSerializeDispatcher.h"
32namespace Arccore::MessagePassing::Mpi
39 : m_communicator(mpi_comm), m_clean_comm(
clean_comm)
41 m_trace_mng = Arccore::arccoreCreateDefaultTraceMng();
42 ::MPI_Comm_rank(mpi_comm, &m_comm_rank);
43 ::MPI_Comm_size(mpi_comm, &m_comm_size);
47 m_adapter =
new MpiAdapter(m_trace_mng.get(), m_stat, mpi_comm, mpi_lock);
59 std::cerr <<
"ERROR: msg=" <<
ex <<
"\n";
78 IStat* m_stat =
nullptr;
81 int m_comm_rank = A_NULL_RANK;
82 int m_comm_size = A_NULL_RANK;
84 bool m_clean_comm =
false;
90StandaloneMpiMessagePassingMng::
91StandaloneMpiMessagePassingMng(
Impl*
p)
100StandaloneMpiMessagePassingMng::
101~StandaloneMpiMessagePassingMng()
108 template <
typename DataType>
void
110 MpiAdapter* adapter, MpiDatatype* datatype)
112 auto* x =
new MpiTypeDispatcher<DataType>(mpm, adapter, datatype);
113 x->setDestroyDatatype(
true);
114 dispatchers->setDispatcher(x);
117 template <
typename DataType>
void
118 _createAndSetDispatcher(Dispatchers* dispatchers, IMessagePassingMng* mpm,
121 MPI_Datatype mpi_dt = MpiBuiltIn::datatype(DataType());
122 auto dt =
new MpiDatatype(mpi_dt);
123 _createAndSetCustomDispatcher<DataType>(dispatchers, mpm, adapter, dt);
136 auto adapter =
p->m_adapter;
137 auto dsp =
p->m_dispatchers;
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Classe de base d'une exception.
Interface du conteneur des dispatchers.
void setDeleteDispatchers(bool v)
Indique si lors de la destruction on appelle l'opérateur delete sur les instances (faux par défaut)
Interface du gestionnaire des échanges de messages.
Statistiques sur le parallélisme.
void destroy()
Détruit l'instance. Elle ne doit plus être utilisée par la suite.
Encapsulation d'un MPI_Datatype.
Verrou pour les appels MPI.
Implémentation MPI du gestionnaire des échanges de messages.
Version autonome de MpiMessagePassingMng.
static Ref< IMessagePassingMng > createRef(MPI_Comm comm, bool clean_comm=false)
Créé un gestionnaire associé au communicateur comm.
static MpiMessagePassingMng * create(MPI_Comm comm, bool clean_comm=false)
Créé un gestionnaire associé au communicateur comm.
Gestionnaire de statistiques sur le parallélisme.