12#ifndef ARCANE_PARALLEL_THREAD_SHAREDMEMORYPARALLELMNG_H
13#define ARCANE_PARALLEL_THREAD_SHAREDMEMORYPARALLELMNG_H
17#include "arcane/core/ParallelMngDispatcher.h"
19#include "arcane/utils/TraceInfo.h"
20#include "arcane/utils/NotImplementedException.h"
21#include "arcane/utils/Ref.h"
22#include "arccore/base/ReferenceCounter.h"
45struct ARCANE_THREAD_EXPORT SharedMemoryParallelMngBuildInfo
49 SharedMemoryParallelMngBuildInfo()
54 , message_queue(
nullptr)
55 , thread_barrier(
nullptr)
56 , all_dispatchers(
nullptr)
57 , window_creator(
nullptr)
73 MP::Communicator communicator;
83class ARCANE_THREAD_EXPORT SharedMemoryParallelMng
84:
public ParallelMngDispatcher
94 ~SharedMemoryParallelMng()
override;
96 bool isParallel()
const override {
return m_is_parallel; }
100 MP::Communicator
communicator()
const override {
return m_mpi_communicator; }
106 void initialize()
override;
130 void printStats()
override;
131 void barrier()
override;
136 Real rv = reduce(rt, v);
144 void build()
override;
152 return m_thread_barrier;
180 bool _isAcceleratorAware()
const override {
return true; }
201 MP::Communicator m_mpi_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.
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 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.
Implementation of IRequestList for SharedMemoryParallelMng.
IParallelTopology * createTopology() override
Creates an instance containing information about the rank topology of this manager.
IGetVariablesValuesParallelOperation * createGetVariablesValuesOperation() override
Returns an operation to retrieve the values of a variable on the entities of another subdomain.
bool isThreadImplementation() const override
Indicates if the implementation uses threads.
Int32 m_nb_rank
Number of ranks.
bool isMasterIO() const override
true if the instance is a master I/O manager.
bool m_is_initialized
true if already initialized
Integer masterIORank() const override
Rank of the instance managing I/O (for which isMasterIO() is true).
IParallelNonBlockingCollective * nonBlockingCollective() const override
Interface for non-blocking collective operations.
PointToPointMessageInfo buildMessage(Int32 dest, MP::eBlockingType is_blocking)
Constructs a message with destination dest.
IParallelMng * worldParallelMng() const override
Parallelism manager over all allocated resources.
Parallel::IStat * stat() override
Statistics manager.
IParallelMngInternal * _internalApi() override
Internal Arcane API.
IVariableSynchronizer * createSynchronizer(IItemFamily *family) override
Returns an interface for synchronizing variables on the group of the family.
MP::Communicator communicator() const override
MPI communicator associated with this manager.
IIOMng * ioMng() const override
I/O manager.
ITraceMng * traceMng() const override
Trace manager.
Int32 m_rank
Rank of the instance.
bool isParallel() const override
Returns true if the execution is parallel.
bool isHybridImplementation() const override
Indicates if the implementation uses hybrid mode.
Int32 commSize() const override
Number of instances in the communicator.
MP::Communicator machineCommunicator() const override
MPI communicator derived from the communicator communicator() gathering all processes of the compute ...
Int32 commRank() const override
Rank of this instance in the communicator.
IParallelExchanger * createExchanger() override
Returns an interface for transferring messages between processors.
IThreadMng * threadMng() const override
Thread manager.
void * getMPICommunicator() override
Address of the MPI communicator associated with this manager.
ITransferValuesParallelOperation * createTransferValuesOperation() override
Returns an operation to transfer values between subdomains.
ITimerMng * timerMng() const override
Timer manager.
Statistics on parallelism.
Reference to an instance.
Encapsulation of a pointer with a reference counter.
Implementation of a buffer for serialization.
Declarations of types and methods used by message exchange mechanisms.
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 a SharedMemoryParallelMng.