12#ifndef ARCANE_PARALLEL_MPI_MPIPARALLELMNG_H
13#define ARCANE_PARALLEL_MPI_MPIPARALLELMNG_H
17#include "arcane/utils/Array.h"
18#include "arcane/utils/Ref.h"
20#include "arcane/core/ParallelMngDispatcher.h"
22#include "arcane/parallel/mpi/ArcaneMpi.h"
36class ArcaneMpiSerializeMessageList;
43struct ARCANE_MPI_EXPORT MpiParallelMngBuildInfo
47 MpiParallelMngBuildInfo(MPI_Comm comm, MPI_Comm machine_comm);
51 Int32 commRank()
const {
return comm_rank; }
52 Int32 commSize()
const {
return comm_nb_rank; }
53 MPI_Comm mpiComm()
const {
return mpi_comm; }
54 MPI_Comm mpiMachineComm()
const {
return mpi_machine_comm; }
78 MPI_Comm mpi_machine_comm;
82 bool is_mpi_comm_owned;
97class ARCANE_MPI_EXPORT MpiParallelMng
98:
public ParallelMngDispatcher
102 friend ArcaneMpiSerializeMessageList;
109 ~MpiParallelMng()
override;
122 void initialize()
override;
143 void printStats()
override;
146 void barrier()
override;
152 Real rv = reduce(rt, v);
160 void build()
override;
168 MpiLock* mpiLock()
const {
return m_mpi_lock; }
170 MpiDatatypeList* datatypes() {
return m_datatype_list; }
172 MpiSerializeDispatcher* serializeDispatcher()
const {
return m_mpi_serialize_dispatcher; }
182 bool _isAcceleratorAware()
const override;
204 IIOMng* m_io_mng =
nullptr;
208 bool m_is_timer_owned =
false;
211 bool m_is_parallel =
false;
216 MPI_Comm m_communicator = MPI_COMM_NULL;
217 MPI_Comm m_machine_communicator = MPI_COMM_NULL;
218 bool m_is_communicator_owned =
false;
227 void _checkFinishedSubRequests();
229 IParallelMng* _createSubParallelMng(MPI_Comm sub_communicator);
Modifiable view of an array of type T.
Operations to access variable values from another subdomain.
Interface of the input/output manager.
Interface of an entity family.
Information exchange between processors.
Internal part of IParallelMng.
Interface of the parallelism manager for a subdomain.
Interface for non-blocking collective parallel operations.
Brief information on parallel subdomain replication.
Information on the computing core allocation topology.
Interface of a thread manager.
Interface of a timer manager.
Sends values across different processors.
Interface of a variable synchronization service.
Communicator for message exchange.
Interface for a serialization message list.
Interface for a serialization message between IMessagePassingMng.
Information about the source of a message.
Information for sending/receiving a point-to-point message.
Manages the MPI_Datatypes associated with Arcane types.
Specialization of MpiRequestList for MpiParallelMng.
IParallelMng * worldParallelMng() const override
Parallelism manager over all allocated resources.
bool m_is_initialized
true if already initialized
Int32 commRank() const override
Rank of this instance in the communicator.
Communicator machineCommunicator() const override
MPI communicator derived from the communicator communicator() gathering all processes of the compute ...
IThreadMng * threadMng() const override
Thread manager.
IIOMng * ioMng() const override
I/O manager.
bool isThreadImplementation() const override
Indicates if the implementation uses threads.
void * getMPICommunicator() override
Address of the MPI communicator associated with this manager.
ITimerMng * timerMng() const override
Timer manager.
IParallelNonBlockingCollective * nonBlockingCollective() const override
Interface for non-blocking collective operations.
Int32 m_comm_size
Number of subdomains.
bool isParallel() const override
Returns true if the execution is parallel.
ITraceMng * traceMng() const override
Trace manager.
Int32 m_comm_rank
Current processor number.
Communicator communicator() const override
MPI communicator associated with this manager.
Integer masterIORank() const override
Rank of the instance managing I/O (for which isMasterIO() is true).
Parallel::IStat * stat() override
Statistics manager.
bool isMasterIO() const override
true if the instance is a master I/O manager.
bool isHybridImplementation() const override
Indicates if the implementation uses hybrid mode.
IParallelMngInternal * _internalApi() override
Internal Arcane API.
Int32 commSize() const override
Number of instances in the communicator.
Statistics on parallelism.
Reference to an instance.
Implementation of a buffer for serialization.
1D data vector with value semantics (STL style).
eReduceType
Supported reduction types.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Int32 Integer
Type representing an integer.
Array< Byte > ByteArray
Dynamic one-dimensional array of characters.
ConstArrayView< Int32 > Int32ConstArrayView
C equivalent of a 1D array of 32-bit integers.
double Real
Type representing a real number.
std::int32_t Int32
Signed integer type of 32 bits.
Info to construct an MpiParallelMng.