Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
Arcane::IParallelSuperMng Class Referenceabstract

Abstract class of the parallelism supervisor. More...

#include <arcane/core/IParallelSuperMng.h>

Inheritance diagram for Arcane::IParallelSuperMng:
Collaboration diagram for Arcane::IParallelSuperMng:

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 IApplicationapplication () const =0
 Returns the main manager.
virtual IThreadMngthreadMng () 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< IParallelMnginternalCreateWorldParallelMng (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

Detailed Description

Abstract class of the parallelism supervisor.

Definition at line 41 of file IParallelSuperMng.h.

Member Typedef Documentation

◆ eReduceType

◆ Request

typedef Parallel::Request Arcane::IParallelSuperMng::Request

Definition at line 45 of file IParallelSuperMng.h.

Constructor & Destructor Documentation

◆ ~IParallelSuperMng()

virtual Arcane::IParallelSuperMng::~IParallelSuperMng ( )
inlinevirtual

Frees resources.

Definition at line 50 of file IParallelSuperMng.h.

Member Function Documentation

◆ application()

virtual IApplication * Arcane::IParallelSuperMng::application ( ) const
pure virtual

◆ barrier()

virtual void Arcane::IParallelSuperMng::barrier ( )
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().

Here is the caller graph for this function:

◆ broadcast()

virtual void Arcane::IParallelSuperMng::broadcast ( ByteArrayView send_buf,
Integer process_id )
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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ build()

virtual void Arcane::IParallelSuperMng::build ( )
pure virtual

Constructs the instance members.

The instance is not usable until this method has been called. This method must be called before initialize().

Warning
This method must only be called once.

Implemented in Arcane::MessagePassing::HybridParallelSuperMng, Arcane::MessagePassing::MpiSharedMemoryParallelSuperMng, Arcane::MessagePassing::SharedMemoryParallelSuperMng, Arcane::MpiParallelSuperMng, Arcane::MpiSequentialParallelSuperMng, and Arcane::SequentialParallelSuperMng.

◆ commRank()

virtual Int32 Arcane::IParallelSuperMng::commRank ( ) const
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().

Here is the caller graph for this function:

◆ commSize()

virtual Int32 Arcane::IParallelSuperMng::commSize ( ) const
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().

Here is the caller graph for this function:

◆ communicator()

virtual Parallel::Communicator Arcane::IParallelSuperMng::communicator ( ) const
pure virtual

◆ getMPICommunicator()

virtual void * Arcane::IParallelSuperMng::getMPICommunicator ( )
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.

◆ initialize()

virtual void Arcane::IParallelSuperMng::initialize ( )
pure virtual

Initializes the instance.

The instance is not usable until this method has been called.

Warning
This method must only be called once.

Implemented in Arcane::MessagePassing::HybridParallelSuperMng, Arcane::MessagePassing::SharedMemoryParallelSuperMng, Arcane::MpiParallelSuperMng, and Arcane::SequentialParallelSuperMng.

Referenced by Arcane::Application::build().

Here is the caller graph for this function:

◆ internalCreateWorldParallelMng()

virtual Ref< IParallelMng > Arcane::IParallelSuperMng::internalCreateWorldParallelMng ( Int32 local_rank)
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().

Here is the caller graph for this function:

◆ isMasterIO()

virtual bool Arcane::IParallelSuperMng::isMasterIO ( ) const
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().

Here is the caller graph for this function:

◆ isParallel()

virtual bool Arcane::IParallelSuperMng::isParallel ( ) const
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().

Here is the caller graph for this function:

◆ masterIORank()

virtual Int32 Arcane::IParallelSuperMng::masterIORank ( ) const
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.

◆ nbLocalSubDomain()

virtual Int32 Arcane::IParallelSuperMng::nbLocalSubDomain ( )
pure virtual

Number of subdomains to create locally.

  • 1 if sequential.
  • 1 if pure MPI
  • n if THREAD or THREAD/MPI

Implemented in Arcane::MessagePassing::HybridParallelSuperMng, Arcane::MessagePassing::SharedMemoryParallelSuperMng, Arcane::MpiParallelSuperMng, and Arcane::SequentialParallelSuperMng.

Referenced by Arcane::ArcaneMainBatch::execute().

Here is the caller graph for this function:

◆ threadMng()

virtual IThreadMng * Arcane::IParallelSuperMng::threadMng ( ) const
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().

Here is the caller graph for this function:

◆ traceRank()

virtual Int32 Arcane::IParallelSuperMng::traceRank ( ) const
pure virtual

◆ tryAbort()

virtual void Arcane::IParallelSuperMng::tryAbort ( )
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().

Here is the caller graph for this function:

The documentation for this class was generated from the following file: