ITK  5.4.0
Insight Toolkit
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
itk::GPUKernelManager Class Reference

#include <itkGPUKernelManager.h>

Detailed Description

GPU kernel manager implemented using OpenCL.

This class is responsible for managing the GPU kernel and command queue.

Definition at line 44 of file itkGPUKernelManager.h.

+ Inheritance diagram for itk::GPUKernelManager:
+ Collaboration diagram for itk::GPUKernelManager:

Classes

struct  KernelArgumentList
 

Public Types

using ConstPointer = SmartPointer< const Self >
 
using Pointer = SmartPointer< Self >
 
using Self = GPUKernelManager
 
using Superclass = LightObject
 
- Public Types inherited from itk::LightObject
using ConstPointer = SmartPointer< const Self >
 
using Pointer = SmartPointer< Self >
 
using Self = LightObject
 

Public Member Functions

int CreateKernel (const char *kernelName)
 
int GetCurrentCommandQueueID () const
 
cl_int GetDeviceInfo (cl_kernel_work_group_info paramName, vcl_size_t argSize, void *argValue)
 
cl_int GetKernelWorkGroupInfo (int kernelIdx, cl_kernel_work_group_info paramName, void *value)
 
 itkOverrideGetNameOfClassMacro (GPUKernelManager)
 
bool LaunchKernel (int kernelIdx, int dim, vcl_size_t *globalWorkSize, vcl_size_t *localWorkSize)
 
bool LaunchKernel1D (int kernelIdx, vcl_size_t globalWorkSize, vcl_size_t localWorkSize)
 
bool LaunchKernel2D (int kernelIdx, vcl_size_t globalWorkSizeX, vcl_size_t globalWorkSizeY, vcl_size_t localWorkSizeX, vcl_size_t localWorkSizeY)
 
bool LaunchKernel3D (int kernelIdx, vcl_size_t globalWorkSizeX, vcl_size_t globalWorkSizeY, vcl_size_t globalWorkSizeZ, vcl_size_t localWorkSizeX, vcl_size_t localWorkSizeY, vcl_size_t localWorkSizeZ)
 
bool LoadProgramFromFile (const char *filename, const char *cPreamble="")
 
bool LoadProgramFromString (const char *cSource, const char *cPreamble="")
 
void SetCurrentCommandQueue (int queueid)
 
bool SetKernelArg (int kernelIdx, cl_uint argIdx, vcl_size_t argSize, const void *argVal)
 
bool SetKernelArgWithChar (int kernelIdx, cl_uint argIdx, char argVal)
 
bool SetKernelArgWithDouble (int kernelIdx, cl_uint argIdx, double argVal)
 
bool SetKernelArgWithFloat (int kernelIdx, cl_uint argIdx, float argVal)
 
bool SetKernelArgWithImage (int kernelIdx, cl_uint argIdx, GPUDataManager *manager)
 
bool SetKernelArgWithInt (int kernelIdx, cl_uint argIdx, int argVal)
 
bool SetKernelArgWithLongLong (int kernelIdx, cl_uint argIdx, long long argVal)
 
bool SetKernelArgWithShort (int kernelIdx, cl_uint argIdx, short argVal)
 
bool SetKernelArgWithUChar (int kernelIdx, cl_uint argIdx, unsigned char argVal)
 
bool SetKernelArgWithUInt (int kernelIdx, cl_uint argIdx, unsigned int argVal)
 
bool SetKernelArgWithULongLong (int kernelIdx, cl_uint argIdx, unsigned long long argVal)
 
bool SetKernelArgWithUShort (int kernelIdx, cl_uint argIdx, unsigned short argVal)
 
template<typename TGPUImageDataManager >
bool SetKernelArgWithImageAndBufferedRegion (int kernelIdx, cl_uint &argIdx, TGPUImageDataManager *manager)
 
- Public Member Functions inherited from itk::LightObject
Pointer Clone () const
 
virtual Pointer CreateAnother () const
 
virtual void Delete ()
 
virtual int GetReferenceCount () const
 
 itkVirtualGetNameOfClassMacro (LightObject)
 
void Print (std::ostream &os, Indent indent=0) const
 
virtual void Register () const
 
virtual void SetReferenceCount (int)
 
virtual void UnRegister () const noexcept
 

Static Public Member Functions

static Pointer New ()
 
- Static Public Member Functions inherited from itk::LightObject
static void BreakOnError ()
 
static Pointer New ()
 

Protected Member Functions

bool CheckArgumentReady (int kernelIdx)
 
 GPUKernelManager ()
 
void ResetArguments (int kernelIdx)
 
 ~GPUKernelManager () override
 
- Protected Member Functions inherited from itk::LightObject
virtual LightObject::Pointer InternalClone () const
 
 LightObject ()
 
virtual void PrintHeader (std::ostream &os, Indent indent) const
 
virtual void PrintSelf (std::ostream &os, Indent indent) const
 
virtual void PrintTrailer (std::ostream &os, Indent indent) const
 
virtual ~LightObject ()
 

Private Member Functions

template<typename TArg >
bool SetTypedKernelArg (int kernelIdx, cl_uint argIdx, TArg argVal)
 

Private Attributes

int m_CommandQueueId {}
 
std::vector< std::vector< KernelArgumentList > > m_KernelArgumentReady {}
 
std::vector< cl_kernel > m_KernelContainer {}
 
GPUContextManagerm_Manager {}
 
cl_program m_Program {}
 

Additional Inherited Members

- Protected Attributes inherited from itk::LightObject
std::atomic< int > m_ReferenceCount {}
 

Member Typedef Documentation

◆ ConstPointer

Definition at line 58 of file itkGPUKernelManager.h.

◆ Pointer

Definition at line 57 of file itkGPUKernelManager.h.

◆ Self

Definition at line 55 of file itkGPUKernelManager.h.

◆ Superclass

Definition at line 56 of file itkGPUKernelManager.h.

Constructor & Destructor Documentation

◆ GPUKernelManager()

itk::GPUKernelManager::GPUKernelManager ( )
protected

◆ ~GPUKernelManager()

itk::GPUKernelManager::~GPUKernelManager ( )
overrideprotected

Member Function Documentation

◆ CheckArgumentReady()

bool itk::GPUKernelManager::CheckArgumentReady ( int  kernelIdx)
protected

◆ CreateKernel()

int itk::GPUKernelManager::CreateKernel ( const char *  kernelName)

◆ GetCurrentCommandQueueID()

int itk::GPUKernelManager::GetCurrentCommandQueueID ( ) const

◆ GetDeviceInfo()

cl_int itk::GPUKernelManager::GetDeviceInfo ( cl_kernel_work_group_info  paramName,
vcl_size_t  argSize,
void *  argValue 
)

◆ GetKernelWorkGroupInfo()

cl_int itk::GPUKernelManager::GetKernelWorkGroupInfo ( int  kernelIdx,
cl_kernel_work_group_info  paramName,
void *  value 
)

◆ itkOverrideGetNameOfClassMacro()

itk::GPUKernelManager::itkOverrideGetNameOfClassMacro ( GPUKernelManager  )

◆ LaunchKernel()

bool itk::GPUKernelManager::LaunchKernel ( int  kernelIdx,
int  dim,
vcl_size_t *  globalWorkSize,
vcl_size_t *  localWorkSize 
)

◆ LaunchKernel1D()

bool itk::GPUKernelManager::LaunchKernel1D ( int  kernelIdx,
vcl_size_t  globalWorkSize,
vcl_size_t  localWorkSize 
)

◆ LaunchKernel2D()

bool itk::GPUKernelManager::LaunchKernel2D ( int  kernelIdx,
vcl_size_t  globalWorkSizeX,
vcl_size_t  globalWorkSizeY,
vcl_size_t  localWorkSizeX,
vcl_size_t  localWorkSizeY 
)

◆ LaunchKernel3D()

bool itk::GPUKernelManager::LaunchKernel3D ( int  kernelIdx,
vcl_size_t  globalWorkSizeX,
vcl_size_t  globalWorkSizeY,
vcl_size_t  globalWorkSizeZ,
vcl_size_t  localWorkSizeX,
vcl_size_t  localWorkSizeY,
vcl_size_t  localWorkSizeZ 
)

◆ LoadProgramFromFile()

bool itk::GPUKernelManager::LoadProgramFromFile ( const char *  filename,
const char *  cPreamble = "" 
)

◆ LoadProgramFromString()

bool itk::GPUKernelManager::LoadProgramFromString ( const char *  cSource,
const char *  cPreamble = "" 
)

◆ New()

static Pointer itk::GPUKernelManager::New ( )
static

◆ ResetArguments()

void itk::GPUKernelManager::ResetArguments ( int  kernelIdx)
protected

◆ SetCurrentCommandQueue()

void itk::GPUKernelManager::SetCurrentCommandQueue ( int  queueid)

◆ SetKernelArg()

bool itk::GPUKernelManager::SetKernelArg ( int  kernelIdx,
cl_uint  argIdx,
vcl_size_t  argSize,
const void *  argVal 
)

◆ SetKernelArgWithChar()

bool itk::GPUKernelManager::SetKernelArgWithChar ( int  kernelIdx,
cl_uint  argIdx,
char  argVal 
)

◆ SetKernelArgWithDouble()

bool itk::GPUKernelManager::SetKernelArgWithDouble ( int  kernelIdx,
cl_uint  argIdx,
double  argVal 
)

◆ SetKernelArgWithFloat()

bool itk::GPUKernelManager::SetKernelArgWithFloat ( int  kernelIdx,
cl_uint  argIdx,
float  argVal 
)

◆ SetKernelArgWithImage()

bool itk::GPUKernelManager::SetKernelArgWithImage ( int  kernelIdx,
cl_uint  argIdx,
GPUDataManager manager 
)

◆ SetKernelArgWithImageAndBufferedRegion()

template<typename TGPUImageDataManager >
bool itk::GPUKernelManager::SetKernelArgWithImageAndBufferedRegion ( int  kernelIdx,
cl_uint &  argIdx,
TGPUImageDataManager *  manager 
)
inline

Pass to GPU both the pixel buffer and the buffered region.

Definition at line 120 of file itkGPUKernelManager.h.

References m_KernelArgumentReady, m_KernelContainer, and itk::OpenCLCheckError().

◆ SetKernelArgWithInt()

bool itk::GPUKernelManager::SetKernelArgWithInt ( int  kernelIdx,
cl_uint  argIdx,
int  argVal 
)

◆ SetKernelArgWithLongLong()

bool itk::GPUKernelManager::SetKernelArgWithLongLong ( int  kernelIdx,
cl_uint  argIdx,
long long  argVal 
)

◆ SetKernelArgWithShort()

bool itk::GPUKernelManager::SetKernelArgWithShort ( int  kernelIdx,
cl_uint  argIdx,
short  argVal 
)

◆ SetKernelArgWithUChar()

bool itk::GPUKernelManager::SetKernelArgWithUChar ( int  kernelIdx,
cl_uint  argIdx,
unsigned char  argVal 
)

◆ SetKernelArgWithUInt()

bool itk::GPUKernelManager::SetKernelArgWithUInt ( int  kernelIdx,
cl_uint  argIdx,
unsigned int  argVal 
)

◆ SetKernelArgWithULongLong()

bool itk::GPUKernelManager::SetKernelArgWithULongLong ( int  kernelIdx,
cl_uint  argIdx,
unsigned long long  argVal 
)

◆ SetKernelArgWithUShort()

bool itk::GPUKernelManager::SetKernelArgWithUShort ( int  kernelIdx,
cl_uint  argIdx,
unsigned short  argVal 
)

◆ SetTypedKernelArg()

template<typename TArg >
bool itk::GPUKernelManager::SetTypedKernelArg ( int  kernelIdx,
cl_uint  argIdx,
TArg  argVal 
)
private

Member Data Documentation

◆ m_CommandQueueId

int itk::GPUKernelManager::m_CommandQueueId {}
private

Definition at line 206 of file itkGPUKernelManager.h.

◆ m_KernelArgumentReady

std::vector<std::vector<KernelArgumentList> > itk::GPUKernelManager::m_KernelArgumentReady {}
private

Definition at line 209 of file itkGPUKernelManager.h.

Referenced by SetKernelArgWithImageAndBufferedRegion().

◆ m_KernelContainer

std::vector<cl_kernel> itk::GPUKernelManager::m_KernelContainer {}
private

Definition at line 208 of file itkGPUKernelManager.h.

Referenced by SetKernelArgWithImageAndBufferedRegion().

◆ m_Manager

GPUContextManager* itk::GPUKernelManager::m_Manager {}
private

Definition at line 205 of file itkGPUKernelManager.h.

◆ m_Program

cl_program itk::GPUKernelManager::m_Program {}
private

Definition at line 203 of file itkGPUKernelManager.h.


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