|
Hedgehog
3.1.0
A library to generate hybrid pipeline workflow systems
|
Abstract Task specialized for CUDA computation. More...
#include "abstract_cuda_task.h"


Public Member Functions | |
| AbstractCUDATask (std::string const &name, size_t numberThreads, bool enablePeerAccess, bool automaticStart=false) | |
| AbstractCUDATask full constructor. | |
| AbstractCUDATask (std::string const name="CudaTask", size_t numberThreads=1) | |
| Main constructor for a AbstractCUDATask. | |
| AbstractCUDATask (std::shared_ptr< hh::core::CoreTask< Separator, AllTypes... > > coreTask, bool enablePeerAccess) | |
| Custom core task constructor. | |
| ~AbstractCUDATask () override | |
| Default destructor. | |
| void | initialize () final |
| Initialize an AbstractCUDATask to bind it to a CUDA device, and do the peer access if enabled. At the end will call AbstractCUDATask::initializeCuda. | |
| void | shutdown () final |
| Shutdown an AbstractCUDATask to destroy the task's CUDA stream created during AbstractCUDATask::initialize. First calls AbstractCUDATask::shutdownCuda. | |
| virtual void | initializeCuda () |
| Virtual initialization step, where user defined data structure can be initialized. | |
| virtual void | shutdownCuda () |
| Virtual shutdown step, where user defined data structure can be destroyed. | |
| bool | enablePeerAccess () const |
| Accessor for peer access choice. | |
| cudaStream_t | stream () const |
| Getter for CUDA task's stream. | |
| bool | hasPeerAccess (int peerDeviceId) |
| Accessor for peer access enabled for a specific device id. | |
Public Member Functions inherited from hh::AbstractTask< Separator, AllTypes... > | |
| AbstractTask () | |
| Default constructor (Task with one thread named "Task") | |
| AbstractTask (std::string const &name, size_t const numberThreads=1, bool const automaticStart=false) | |
| AbstractTask main constructor. | |
| AbstractTask (std::shared_ptr< hh::core::CoreTask< Separator, AllTypes... > > coreTask) | |
| Construct a task from a user-defined core. | |
| ~AbstractTask () override=default | |
| Default task destructor. | |
| size_t | graphId () const |
| Belonging graph id accessor. | |
| bool | canTerminate () const override |
| Default termination rule, it terminates if there is no predecessor connection and there is no input data. | |
Public Member Functions inherited from hh::behavior::TaskNode | |
| TaskNode (std::shared_ptr< hh::core::abstraction::TaskNodeAbstraction > core) | |
| Constructor using a core. | |
| ~TaskNode () override=default | |
| Default destructor. | |
| std::shared_ptr< AbstractMemoryManager > const & | memoryManager () const |
| Memory manager accessor. | |
| void | connectMemoryManager (std::shared_ptr< AbstractMemoryManager > mm) |
| Connect a memory manager to a task. | |
| std::shared_ptr< ManagedMemory > | getManagedMemory () |
| Get a managed memory for the memory manager attached to the task, can block if none are available at the time of the call. | |
| virtual void | initialize () |
| initialize step for the task | |
| virtual void | shutdown () |
| shutdown step for the task | |
| virtual std::string | extraPrintingInformation () const |
| Print extra information for the task. | |
Public Member Functions inherited from hh::behavior::Node | |
| Node (std::shared_ptr< hh::core::abstraction::NodeAbstraction > core) | |
| Constructor's node. | |
| virtual | ~Node ()=default |
| Default destructor. | |
| std::shared_ptr< hh::core::abstraction::NodeAbstraction > const & | core () const |
| Core accessor. | |
| std::string | name () const |
| Node's name accessor. | |
Public Member Functions inherited from hh::behavior::CanTerminate | |
| CanTerminate ()=default | |
| Default constructor. | |
| virtual | ~CanTerminate ()=default |
| Default destructor. | |
| virtual bool | canTerminate () const =0 |
| Termination condition. | |
Public Member Functions inherited from hh::behavior::Cleanable | |
| Cleanable ()=default | |
| Default constructor. | |
| ~Cleanable ()=default | |
| Default destructor. | |
| virtual void | clean () |
| Clean a node. | |
Public Member Functions inherited from hh::behavior::Copyable< AbstractTask< Separator, AllTypes... > > | |
| Copyable (size_t const numberThreads) | |
| Copyable constructor, set the number of threads for a node. | |
| virtual | ~Copyable ()=default |
| Default destructor. | |
| size_t | numberThreads () const |
| Number of threads accessor. | |
| std::vector< AbstractTask< Separator, AllTypes... > const * > | group () const |
| Get the group of nodes that hold the current nodes. | |
| virtual std::shared_ptr< AbstractTask< Separator, AllTypes... > > | copy () |
| Copy method called to either create a group of node or duplicate a node when an execution pipeline is created. | |
Private Attributes | |
| bool | enablePeerAccess_ = false |
| Enable CUDA Peer Access through all CUDA devices available. | |
| std::unordered_set< int > | peerDeviceIds_ = {} |
| Sparse matrix of linked CUDA devices. | |
| cudaStream_t | stream_ = {} |
| CUDA stream linked to the task. | |
Additional Inherited Members | |
Protected Member Functions inherited from hh::AbstractTask< Separator, AllTypes... > | |
| std::shared_ptr< hh::core::CoreTask< Separator, AllTypes... > > const & | coreTask () const |
| Accessor to the core task. | |
| int | deviceId () |
| Accessor to device id linked to the task (default 0 for CPU task) | |
Abstract Task specialized for CUDA computation.
At initialization, the device is set to the task (cudaSetDevice), and a stream is created and bound to the task (cudaStreamCreate). During shutdown, the stream is destroyed (cudaStreamDestroy).
| Separator | Separator position between input types and output types |
| AllTypes | List of input and output types |
Definition at line 46 of file abstract_cuda_task.h.
|
inline |
AbstractCUDATask full constructor.
| name | Task name |
| numberThreads | Number of threads for the task |
| enablePeerAccess | Enable peer access for NVIDIA GPUs |
| automaticStart | Flag for automatic start (Cf. AbstractTask) |
Definition at line 58 of file abstract_cuda_task.h.

|
inlineexplicit |
Main constructor for a AbstractCUDATask.
| name | Name of the AbstractCUDATask |
| numberThreads | Number of thread for this task (default 1) |
Definition at line 68 of file abstract_cuda_task.h.
|
inline |
Custom core task constructor.
| coreTask | Custom core to use |
| enablePeerAccess | Enable per access for NVIDIA GPUs |
Definition at line 74 of file abstract_cuda_task.h.

|
inlineoverride |
Default destructor.
Definition at line 82 of file abstract_cuda_task.h.

|
inline |
Accessor for peer access choice.
Definition at line 136 of file abstract_cuda_task.h.
|
inline |
Accessor for peer access enabled for a specific device id.
| peerDeviceId | Device id to test |
Definition at line 145 of file abstract_cuda_task.h.
|
inlinefinalvirtual |
Initialize an AbstractCUDATask to bind it to a CUDA device, and do the peer access if enabled. At the end will call AbstractCUDATask::initializeCuda.
Reimplemented from hh::behavior::TaskNode.
Definition at line 90 of file abstract_cuda_task.h.

|
inlinevirtual |
Virtual initialization step, where user defined data structure can be initialized.
Definition at line 129 of file abstract_cuda_task.h.

|
inlinefinalvirtual |
Shutdown an AbstractCUDATask to destroy the task's CUDA stream created during AbstractCUDATask::initialize. First calls AbstractCUDATask::shutdownCuda.
Reimplemented from hh::behavior::TaskNode.
Definition at line 123 of file abstract_cuda_task.h.

|
inlinevirtual |
Virtual shutdown step, where user defined data structure can be destroyed.
Definition at line 132 of file abstract_cuda_task.h.

|
inline |
Getter for CUDA task's stream.
Definition at line 140 of file abstract_cuda_task.h.
|
private |
Enable CUDA Peer Access through all CUDA devices available.
Definition at line 48 of file abstract_cuda_task.h.
|
private |
Sparse matrix of linked CUDA devices.
Definition at line 49 of file abstract_cuda_task.h.
|
private |
CUDA stream linked to the task.
Definition at line 50 of file abstract_cuda_task.h.