Accelerated Computation Engine
|
#include <ace_analytic_mpislave.h>
Public Member Functions | |
virtual bool | isFinished () const override final |
MPISlave (quint16 type) | |
virtual | ~MPISlave () override final |
![]() | |
quint16 | analyticType () const |
int | size () const |
EAbstractAnalytic::Input::Type | type (int index) const |
QVariant | data (int index, EAbstractAnalytic::Input::Role role) const |
QList< QString > | commandLineArguments () const |
void | set (int index, const QVariant &value) |
![]() | |
AbstractInput ()=default | |
~AbstractInput () | |
Protected Member Functions | |
virtual void | mpiStart (Type type, int platform, int device) override final |
virtual QFile * | addOutputFile (const QString &path) override final |
virtual Ace::DataObject * | addOutputData (const QString &path, quint16 type, const EMetadata &system) override final |
virtual void | saveResult (std::unique_ptr< EAbstractAnalytic::Block > &&result) override final |
![]() | |
AbstractMPI (quint16 type) | |
![]() | |
AbstractManager (quint16 type) | |
std::unique_ptr< EAbstractAnalytic::Block > | makeWork (int index) |
void | writeResult (std::unique_ptr< EAbstractAnalytic::Block > &&result, int expectedIndex) |
EAbstractAnalytic * | analytic () |
const EAbstractAnalytic * | analytic () const |
![]() | |
virtual int | index () const |
virtual void | writeResult (std::unique_ptr< EAbstractAnalytic::Block > &&result) |
Additional Inherited Members | |
![]() | |
enum | Type { Serial, OpenCL } |
![]() | |
void | initialize () |
void | terminationRequested () |
void | finish () |
![]() | |
void | progressed (int percentComplete) |
void | done () |
void | finished () |
![]() | |
static std::unique_ptr< Ace::Analytic::AbstractManager > | makeManager (quint16 type, int index, int size) |
![]() | |
enum | Code { Terminate = -1, ReadyAsSerial = -2, ReadyAsOpenCL = -3 } |
![]() | |
virtual void | start () override final |
![]() | |
virtual void | start () |
This is the MPI slave manager. This manager is used for an MPI run with any node that is not rank 0 and by definition a slave node. The sole function of this class is to process work blocks given to it by the master node and return the corresponding result blocks until a termination code is received. This class also sends a special code to the master node to signal when it is ready to start processing work blocks and if it is serial or accelerated. This special signal to the master node is not sent until it is given the resource type it will use by having the interface mpi start called from its inherited abstract class.
|
explicit |
Constructs a new MPI slave manager with the given analytic type.
type | The analytic type this manager will use. |
|
finaloverridevirtual |
Properly shuts down the MPI system.
|
finaloverrideprotectedvirtual |
This interface opens a new data object with the given path, erasing any data the file may have contained and returning a pointer to the new data object. This implementation does nothing and returns a null pointer because it is a slave node and does not handle output.
path | Unused path to data object file. |
type | Unused data object type. |
system | Unused system metadata for new data objects. |
Reimplemented from Ace::Analytic::AbstractManager.
|
finaloverrideprotectedvirtual |
Implements the interface that opens a new file set to write only and truncate with the given path. This implementation does nothing and returns a null pointer because it is a slave node and does not handle output.
path | Unused path to file. |
Reimplemented from Ace::Analytic::AbstractManager.
|
finaloverridevirtual |
Implements the interface that tests if this abstract input is finished and received all result blocks for its analytic. This implementation is special because this is a slave node and is finished once it has received the termination signal and no longer has any blocks it is working on.
Implements Ace::Analytic::AbstractInput.
|
finaloverrideprotectedvirtual |
Implements the interface that is called to start this MPI manager as a slave node with the given resource type and optional platform and device index.
type | The resource type this slave node will use for block processing. |
platform | The optional platform index this slave node will use if its resource type is OpenCL. |
device | The optional device index this slave node will use if its resource type is OpenCL. |
Reimplemented from Ace::Analytic::AbstractMPI.
|
finaloverrideprotectedvirtual |
Implements the interface that saves the given result block to its underlying analytic and assumes the order of indexes given is not sorted and random. This implementation simply sends the given result block back to the master node.
result | The result block that is sent to the master node for saving. |
Reimplemented from Ace::Analytic::AbstractInput.