Abstract class of the parallelism supervisor. More...
#include <arcane/core/IParallelSuperMng.h>
Public Types | |
| typedef Parallel::Request | Request |
| typedef Parallel::eReduceType | eReduceType |
Public Member Functions | |
| virtual | ~IParallelSuperMng () |
| Frees resources. | |
| virtual void | build ()=0 |
| Constructs the instance members. | |
| virtual void | initialize ()=0 |
| Initializes the instance. | |
| virtual IApplication * | application () const =0 |
| Returns the main manager. | |
| virtual IThreadMng * | threadMng () const =0 |
| Thread manager. | |
| virtual bool | isParallel () const =0 |
| Returns true if the execution is parallel. | |
| virtual Int32 | commRank () const =0 |
| Returns the process number (between 0 and nbProcess()-1). | |
| virtual Int32 | commSize () const =0 |
| Returns the total number of processes used. | |
| virtual Int32 | traceRank () const =0 |
| Rank of this instance for traces. | |
| virtual void * | getMPICommunicator ()=0 |
| Address of the MPI communicator associated with this manager. | |
| virtual Parallel::Communicator | communicator () const =0 |
| MPI communicator associated with this manager. | |
| virtual Ref< IParallelMng > | internalCreateWorldParallelMng (Int32 local_rank)=0 |
| Creates a parallelism manager for all allocated cores. | |
| virtual Int32 | nbLocalSubDomain ()=0 |
| Number of subdomains to create locally. | |
| virtual void | tryAbort ()=0 |
| Attempts to abort. | |
| virtual bool | isMasterIO () const =0 |
| Returns true if the instance is a master I/O manager. | |
| virtual Int32 | masterIORank () const =0 |
| Rank of the instance managing input/output (for which isMasterIO() is true). | |
| virtual void | barrier ()=0 |
| Parallelism manager for all allocated resources. | |
broadcast operations | |
| virtual void | broadcast (ByteArrayView send_buf, Integer process_id)=0 |
| Sends an array of values to all processes This operation synchronizes the value array send_buf across all processes. The array used is that of the process whose identifier (processId()) is process_id. All processes must call this method with the same parameter process_id and have a send_buf array containing the same number of elements. | |
| virtual void | broadcast (Int32ArrayView send_buf, Integer process_id)=0 |
| virtual void | broadcast (Int64ArrayView send_buf, Integer process_id)=0 |
| virtual void | broadcast (RealArrayView send_buf, Integer process_id)=0 |
Abstract class of the parallelism supervisor.
Definition at line 41 of file IParallelSuperMng.h.
Definition at line 46 of file IParallelSuperMng.h.
| typedef Parallel::Request Arcane::IParallelSuperMng::Request |
Definition at line 45 of file IParallelSuperMng.h.
|
inlinevirtual |
Frees resources.
Definition at line 50 of file IParallelSuperMng.h.
|
pure virtual |
Returns the main manager.
Implemented in Arcane::MessagePassing::HybridParallelSuperMng, Arcane::MessagePassing::SharedMemoryParallelSuperMng, Arcane::MpiParallelSuperMng, and Arcane::SequentialParallelSuperMng.
|
pure virtual |
Parallelism manager for all allocated resources.
Performs a barrier
Implemented in Arcane::MessagePassing::HybridParallelSuperMng, Arcane::MessagePassing::SharedMemoryParallelSuperMng, Arcane::MpiParallelSuperMng, and Arcane::SequentialParallelSuperMng.
Referenced by Arcane::ArcaneSession::build().
|
pure virtual |
Sends an array of values to all processes This operation synchronizes the value array send_buf across all processes. The array used is that of the process whose identifier (processId()) is process_id. All processes must call this method with the same parameter process_id and have a send_buf array containing the same number of elements.
Implemented in Arcane::MessagePassing::SharedMemoryParallelSuperMng, and Arcane::ParallelSuperMngDispatcher.
References broadcast().
Referenced by Arcane::ItemTypeMng::_readTypes(), and broadcast().
|
pure virtual |
Constructs the instance members.
The instance is not usable until this method has been called. This method must be called before initialize().
Implemented in Arcane::MessagePassing::HybridParallelSuperMng, Arcane::MessagePassing::MpiSharedMemoryParallelSuperMng, Arcane::MessagePassing::SharedMemoryParallelSuperMng, Arcane::MpiParallelSuperMng, Arcane::MpiSequentialParallelSuperMng, and Arcane::SequentialParallelSuperMng.
|
pure virtual |
Returns the process number (between 0 and nbProcess()-1).
Implemented in Arcane::MessagePassing::HybridParallelSuperMng, Arcane::MessagePassing::SharedMemoryParallelSuperMng, Arcane::MpiParallelSuperMng, and Arcane::SequentialParallelSuperMng.
Referenced by Arcane::ItemTypeMng::_readTypes(), and Arcane::FlexLMMng::init().
|
pure virtual |
Returns the total number of processes used.
Implemented in Arcane::MessagePassing::HybridParallelSuperMng, Arcane::MessagePassing::SharedMemoryParallelSuperMng, Arcane::MpiParallelSuperMng, and Arcane::SequentialParallelSuperMng.
Referenced by Arcane::ArcaneMainBatch::execute().
|
pure virtual |
MPI communicator associated with this manager.
Implemented in Arcane::MessagePassing::HybridParallelSuperMng, Arcane::MessagePassing::SharedMemoryParallelSuperMng, Arcane::MpiParallelSuperMng, and Arcane::SequentialParallelSuperMng.
|
pure virtual |
Address of the MPI communicator associated with this manager.
The communicator is only valid if MPI is used. Otherwise, the returned address is 0. The returned value is of type (MPI_Comm*).
Implemented in Arcane::MessagePassing::HybridParallelSuperMng, Arcane::MessagePassing::SharedMemoryParallelSuperMng, Arcane::MpiParallelSuperMng, and Arcane::SequentialParallelSuperMng.
|
pure virtual |
Initializes the instance.
The instance is not usable until this method has been called.
Implemented in Arcane::MessagePassing::HybridParallelSuperMng, Arcane::MessagePassing::SharedMemoryParallelSuperMng, Arcane::MpiParallelSuperMng, and Arcane::SequentialParallelSuperMng.
Referenced by Arcane::Application::build().
|
pure virtual |
Creates a parallelism manager for all allocated cores.
This operation is collective.
This method must only be called once during initialization.
local_rank is the local rank of the caller in the list of ranks. In pure MPI mode, this rank is always 0 because there is only one thread. In Thread or Thread/MPI mode, it is the rank of the thread used during creation.
The returned manager remains the property of this instance and must not be destroyed.
For internal use only.
Implemented in Arcane::MessagePassing::HybridParallelSuperMng, Arcane::MessagePassing::SharedMemoryParallelSuperMng, Arcane::MpiParallelSuperMng, and Arcane::SequentialParallelSuperMng.
Referenced by Arcane::MessagePassing::SharedMemoryParallelMngContainer::_createParallelMng(), Arcane::InternalInfosDumper::dumpArcaneDatabase(), and Arcane::InternalInfosDumper::dumpInternalAllInfos().
|
pure virtual |
Returns true if the instance is a master I/O manager.
Implemented in Arcane::MessagePassing::HybridParallelSuperMng, Arcane::MessagePassing::SharedMemoryParallelSuperMng, Arcane::MpiParallelSuperMng, and Arcane::SequentialParallelSuperMng.
Referenced by Arcane::ArcaneSession::build(), and Arcane::ArcaneMain::callFunctorWithCatchedException().
|
pure virtual |
Returns true if the execution is parallel.
Implemented in Arcane::MessagePassing::HybridParallelSuperMng, Arcane::MessagePassing::SharedMemoryParallelSuperMng, Arcane::MpiParallelSuperMng, and Arcane::SequentialParallelSuperMng.
Referenced by Arcane::Application::build(), and Arcane::ArcaneMain::callFunctorWithCatchedException().
|
pure virtual |
Rank of the instance managing input/output (for which isMasterIO() is true).
In the current implementation, this is always the rank 0 processor.
Implemented in Arcane::MessagePassing::HybridParallelSuperMng, Arcane::MessagePassing::SharedMemoryParallelSuperMng, Arcane::MpiParallelSuperMng, and Arcane::SequentialParallelSuperMng.
|
pure virtual |
Number of subdomains to create locally.
Implemented in Arcane::MessagePassing::HybridParallelSuperMng, Arcane::MessagePassing::SharedMemoryParallelSuperMng, Arcane::MpiParallelSuperMng, and Arcane::SequentialParallelSuperMng.
Referenced by Arcane::ArcaneMainBatch::execute().
|
pure virtual |
Thread manager.
Implemented in Arcane::MessagePassing::HybridParallelSuperMng, Arcane::MessagePassing::SharedMemoryParallelSuperMng, Arcane::MpiParallelSuperMng, and Arcane::SequentialParallelSuperMng.
Referenced by Arcane::Session::createSubDomain(), and Arcane::CaseMng::readCaseDocument().
|
pure virtual |
Rank of this instance for traces.
Implemented in Arcane::MessagePassing::HybridParallelSuperMng, Arcane::MessagePassing::SharedMemoryParallelSuperMng, Arcane::MpiParallelSuperMng, and Arcane::SequentialParallelSuperMng.
|
pure virtual |
Attempts to abort.
This method is called when an exception has been generated and the current execution case must stop. It allows performing cleanup operations on the manager if necessary.
Implemented in Arcane::MessagePassing::HybridParallelSuperMng, Arcane::MessagePassing::SharedMemoryParallelSuperMng, Arcane::MpiParallelSuperMng, and Arcane::SequentialParallelSuperMng.
Referenced by Arcane::ArcaneMainBatch::doAbort(), and Arcane::Session::doAbort().