ITK  6.0.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:


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)
const char * GetNameOfClass () const override
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
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 ( )

◆ ~GPUKernelManager()

itk::GPUKernelManager::~GPUKernelManager ( )

Member Function Documentation

◆ CheckArgumentReady()

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

◆ 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 

◆ GetNameOfClass()

const char* itk::GPUKernelManager::GetNameOfClass ( ) const

Return the name of this class as a string. Used by the object factory (implemented in New()) to instantiate objects of a named type. Also used for debugging and other output information.

Reimplemented from itk::LightObject.

◆ 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 ( )

◆ ResetArguments()

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

◆ 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 

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 

Member Data Documentation

◆ m_CommandQueueId

int itk::GPUKernelManager::m_CommandQueueId {}

Definition at line 206 of file itkGPUKernelManager.h.

◆ m_KernelArgumentReady

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

Definition at line 209 of file itkGPUKernelManager.h.

Referenced by SetKernelArgWithImageAndBufferedRegion().

◆ m_KernelContainer

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

Definition at line 208 of file itkGPUKernelManager.h.

Referenced by SetKernelArgWithImageAndBufferedRegion().

◆ m_Manager

GPUContextManager* itk::GPUKernelManager::m_Manager {}

Definition at line 205 of file itkGPUKernelManager.h.

◆ m_Program

cl_program itk::GPUKernelManager::m_Program {}

Definition at line 203 of file itkGPUKernelManager.h.

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