12#ifndef ARCANE_PARALLEL_THREAD_HYBRIDPARALLELMNG_H
13#define ARCANE_PARALLEL_THREAD_HYBRIDPARALLELMNG_H
17#include "arcane/utils/NotImplementedException.h"
18#include "arcane/utils/Array.h"
19#include "arcane/utils/Ref.h"
21#include "arcane/core/ParallelMngDispatcher.h"
51 Int32 local_rank = -1;
52 Int32 local_nb_rank = -1;
72class HybridParallelMng
73:
public ParallelMngDispatcher
75 friend HybridSerializeMessageList;
82 ~HybridParallelMng()
override;
84 bool isParallel()
const override {
return m_is_parallel; }
126 void build()
override;
132 MpiParallelMng* mpiParallelMng() {
return m_mpi_parallel_mng; }
157 bool _isAcceleratorAware()
const override;
163 return m_thread_barrier;
Modifiable view of an array of type T.
Base class for 1D data vectors.
Operations to access variable values from another subdomain.
Interface of the input/output manager.
Interface of an entity family.
Information exchange between processors.
Interface for an 'IParallelMng' container factory.
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 barrier between threads.
Interface of a thread manager.
Interface of a timer manager.
Sends values across different processors.
Interface of a variable synchronization service.
Interface for a message queue with threads.
Implementation of IRequestList for HybridParallelMng.
Thread-based parallelism manager.
bool isMasterIO() const override
true if the instance is a master I/O manager.
IParallelMng * worldParallelMng() const override
Parallelism manager over all allocated resources.
IParallelMngInternal * _internalApi() override
Internal Arcane API.
bool isThreadImplementation() const override
Indicates if the implementation uses threads.
Parallel::IStat * stat() override
Statistics manager.
void freeRequests(ArrayView< Request > requests) override
Frees the requests.
IParallelNonBlockingCollective * nonBlockingCollective() const override
Interface for non-blocking collective operations.
void printStats() override
Prints statistics related to this parallelism manager.
IParallelExchanger * createExchanger() override
Returns an interface for transferring messages between processors.
void barrier() override
Performs a barrier.
MP::Communicator communicator() const override
MPI communicator associated with this manager.
bool m_is_initialized
true if already initialized
ISerializeMessage * createReceiveSerializer(Int32 rank) override
Creates a non-blocking message to receive serialized data from rank rank.
Ref< Parallel::IRequestList > createRequestListRef() override
Creates a request list for this manager.
bool isParallel() const override
Returns true if the execution is parallel.
ITimerMng * timerMng() const override
Timer manager.
void build() override
Constructs the instance.
void waitAllRequests(ArrayView< Request > requests) override
Blocks while waiting for the rvalues requests to complete.
void initialize() override
Initializes the parallelism manager.
IThreadMng * threadMng() const override
Thread manager.
Int32 m_global_nb_rank
Total number of global ranks.
MessageSourceInfo legacyProbe(const PointToPointMessageInfo &message) override
Probes if messages are available.
Int32 m_local_rank
Local rank of the current processor.
ITraceMng * traceMng() const override
Trace manager.
IGetVariablesValuesParallelOperation * createGetVariablesValuesOperation() override
Returns an operation to retrieve the values of a variable on the entities of another subdomain.
void * getMPICommunicator() override
Address of the MPI communicator associated with this manager.
IParallelReplication * replication() const override
Replication information.
Ref< IParallelMngUtilsFactory > _internalUtilsFactory() const override
Factory for utility functions.
Int32 masterIORank() const override
Rank of the instance managing I/O (for which isMasterIO() is true).
Ref< IParallelMng > createSubParallelMngRef(Int32ConstArrayView kept_ranks) override
Creates a new parallelism manager for a subset of ranks.
MP::Communicator machineCommunicator() const override
MPI communicator derived from the communicator communicator() gathering all processes of the compute ...
IIOMng * ioMng() const override
I/O manager.
ITransferValuesParallelOperation * createTransferValuesOperation() override
Returns an operation to transfer values between subdomains.
IParallelTopology * createTopology() override
Creates an instance containing information about the rank topology of this manager.
void setReplication(IParallelReplication *v) override
Sets the Replication Information.
IParallelMng * sequentialParallelMng() override
Returns a sequential parallelism manager.
Int32 commSize() const override
Number of instances in the communicator.
bool isHybridImplementation() const override
Indicates if the implementation uses hybrid mode.
IVariableSynchronizer * createSynchronizer(IItemFamily *family) override
Returns an interface for synchronizing variables on the group of the family.
Int32 m_local_nb_rank
Number of local ranks.
MessageId probe(const PointToPointMessageInfo &message) override
Probes if messages are available.
ISerializeMessage * createSendSerializer(Int32 rank) override
Creates a non-blocking message to send serialized data to rank rank.
Int32 commRank() const override
Rank of this instance in the communicator.
Int32 m_global_rank
Current processor number.
PointToPointMessageInfo buildMessage(Int32 dest, MP::eBlockingType is_blocking)
Constructs a message with destination dest.
Interface for a serialization message list.
Interface for a serialization message between IMessagePassingMng.
Interface of a message queue with threads.
Information about the source of a message.
Information for sending/receiving a point-to-point message.
Parallelism manager using MPI.
Statistics on parallelism.
Reference to an instance.
Implementation of a buffer for serialization.
Declarations of types and methods used by message exchange mechanisms.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Array< Byte > ByteArray
Dynamic one-dimensional array of characters.
ConstArrayView< Int32 > Int32ConstArrayView
C equivalent of a 1D array of 32-bit integers.
std::int32_t Int32
Signed integer type of 32 bits.
Info for constructing a HybridParallelMng.