Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitk::OclFilter Class Referenceabstract

Superclass for all OpenCL based filter. More...

#include <mitkOclFilter.h>

Inheritance diagram for mitk::OclFilter:
Collaboration diagram for mitk::OclFilter:

Public Member Functions

void AddSourceFile (const char *filename)
 Add a source file from the resource files to the OpenCL shader file list. Multiple files can be added to the list. More...
 
void SetCompilerFlags (const char *flags)
 Set specific compilerflags to compile the CL source. Default is set to nullptr; example: "-cl-fast-relaxed-math -cl-mad-enable -cl-strict-aliasing". More...
 
virtual bool IsInitialized ()
 Returns true if the initialization was successfull. More...
 
virtual unsigned long GetDeviceMemory ()
 Returns the amount of global memory of the used device in bytes. More...
 
virtual ~OclFilter ()
 Destructor. More...
 

Protected Types

typedef std::vector< const char * > CStringList
 
typedef std::vector< vcl_size_t > ClSizeList
 

Protected Member Functions

 OclFilter ()
 Constructor. More...
 
 OclFilter (const char *filename)
 Constructor ( overloaded ) More...
 
void SetWorkingSize (unsigned int locx, unsigned int dimx, unsigned int locy=1, unsigned int dimy=1, unsigned int locz=1, unsigned int dimz=1)
 Set the working size for the following OpenCL kernel call. More...
 
bool ExecuteKernel (cl_kernel kernel, unsigned int workSizeDim)
 Execute the given kernel on the OpenCL Index-Space defined by the local and global work sizes. More...
 
bool ExecuteKernelChunks (cl_kernel kernel, unsigned int workSizeDim, vcl_size_t *chunksDim)
 Execute the given kernel on the OpenCL Index-Space defined by the local and global work sizes, but divide it into chunks of dimension chunksDim. More...
 
bool ExecuteKernelChunksInBatches (cl_kernel kernel, unsigned int workSizeDim, vcl_size_t *chunksDim, vcl_size_t batchSize, int waitTimems)
 Execute the given kernel on the OpenCL Index-Space defined by the local and global work sizes, but divide it into chunks of dimension chunksDim and wait between batches of batchSize chunks a time of waitTimems milliseconds. More...
 
bool Initialize ()
 Initialize all necessary parts of the filter. More...
 
void CompileSource ()
 Compile the program source. More...
 
void SetSourcePreambel (const char *preambel)
 Add some source code on the beginning of the loaded source. More...
 
virtual us::ModuleGetModule ()=0
 Get the Module of the filter. Needs to be implemented by every subclass. The filter will load the OpenCL sourcefiles from this module context. More...
 
void LoadSourceFiles (CStringList &SourceCodeList, ClSizeList &SourceCodeSizeList)
 Helper functions that load sourcefiles from the module context in the Initialize function. More...
 

Protected Attributes

const char * m_ClCompilerFlags
 String that contains the compiler flags. More...
 
cl_program m_ClProgram
 The compiled OpenCL program. More...
 
cl_command_queue m_CommandQue
 Command queue for the filter. More...
 
std::string m_FilterID
 Unique ID of the filter, needs to be specified in the constructor of the derived class. More...
 
const char * m_Preambel
 source preambel for e.g. #define commands to be inserted into the OpenCL source More...
 
CStringList m_ClFiles
 List of sourcefiles that will be compiled for this filter. More...
 
bool m_Initialized
 status of the filter More...
 
vcl_size_t m_LocalWorkSize [3]
 The local work size fo the filter. More...
 
vcl_size_t m_GlobalWorkSize [3]
 The global work size of the filter. More...
 

Detailed Description

Superclass for all OpenCL based filter.

This class takes care of loading and compiling the external GPU program code.

Definition at line 33 of file mitkOclFilter.h.

Member Typedef Documentation

◆ ClSizeList

typedef std::vector<vcl_size_t> mitk::OclFilter::ClSizeList
protected

Definition at line 68 of file mitkOclFilter.h.

◆ CStringList

typedef std::vector<const char*> mitk::OclFilter::CStringList
protected

Definition at line 67 of file mitkOclFilter.h.

Constructor & Destructor Documentation

◆ ~OclFilter()

◆ OclFilter() [1/2]

mitk::OclFilter::OclFilter ( )
protected

Constructor.

Definition at line 35 of file mitkOclFilter.cpp.

◆ OclFilter() [2/2]

mitk::OclFilter::OclFilter ( const char *  filename)
protected

Constructor ( overloaded )

Definition at line 45 of file mitkOclFilter.cpp.

References m_ClFiles.

Member Function Documentation

◆ AddSourceFile()

void mitk::OclFilter::AddSourceFile ( const char *  filename)

Add a source file from the resource files to the OpenCL shader file list. Multiple files can be added to the list.

Parameters
nameof the file in the resource system

Definition at line 330 of file mitkOclFilter.cpp.

References m_ClFiles.

Referenced by mitk::OclBinaryThresholdImageFilter::OclBinaryThresholdImageFilter().

◆ CompileSource()

void mitk::OclFilter::CompileSource ( )
protected

◆ ExecuteKernel()

bool mitk::OclFilter::ExecuteKernel ( cl_kernel  kernel,
unsigned int  workSizeDim 
)
protected

Execute the given kernel on the OpenCL Index-Space defined by the local and global work sizes.

Definition at line 71 of file mitkOclFilter.cpp.

References CHECK_OCL_ERR, m_CommandQue, m_GlobalWorkSize, and m_LocalWorkSize.

Referenced by mitk::OclBinaryThresholdImageFilter::Execute().

◆ ExecuteKernelChunks()

bool mitk::OclFilter::ExecuteKernelChunks ( cl_kernel  kernel,
unsigned int  workSizeDim,
vcl_size_t *  chunksDim 
)
protected

Execute the given kernel on the OpenCL Index-Space defined by the local and global work sizes, but divide it into chunks of dimension chunksDim.

Definition at line 83 of file mitkOclFilter.cpp.

References CHECK_OCL_ERR, m_CommandQue, m_GlobalWorkSize, m_LocalWorkSize, and offset.

◆ ExecuteKernelChunksInBatches()

bool mitk::OclFilter::ExecuteKernelChunksInBatches ( cl_kernel  kernel,
unsigned int  workSizeDim,
vcl_size_t *  chunksDim,
vcl_size_t  batchSize,
int  waitTimems 
)
protected

Execute the given kernel on the OpenCL Index-Space defined by the local and global work sizes, but divide it into chunks of dimension chunksDim and wait between batches of batchSize chunks a time of waitTimems milliseconds.

Definition at line 119 of file mitkOclFilter.cpp.

References CHECK_OCL_ERR, m_CommandQue, m_GlobalWorkSize, m_LocalWorkSize, and offset.

◆ GetDeviceMemory()

unsigned long mitk::OclFilter::GetDeviceMemory ( )
virtual

Returns the amount of global memory of the used device in bytes.

Definition at line 346 of file mitkOclFilter.cpp.

References OclResourceService::GetCurrentDevice(), us::GetModuleContext(), ModuleContext::GetService(), ModuleContext::GetServiceReference(), and oclGetGlobalMemSize().

◆ GetModule()

virtual us::Module* mitk::OclFilter::GetModule ( )
protectedpure virtual

Get the Module of the filter. Needs to be implemented by every subclass. The filter will load the OpenCL sourcefiles from this module context.

Implemented in mitk::OclBinaryThresholdImageFilter.

Referenced by LoadSourceFiles().

◆ Initialize()

bool mitk::OclFilter::Initialize ( )
protected

Initialize all necessary parts of the filter.

The Initialize() method creates the command queue and the m_clProgram. The program is either compiled from the given source or taken from the OclResourceManager if the program was compiled already.

Definition at line 180 of file mitkOclFilter.cpp.

References CHECK_OCL_ERR, CompileSource(), us::GetModuleContext(), ModuleContext::GetService(), ModuleContext::GetServiceReference(), m_ClFiles, m_ClProgram, m_CommandQue, m_FilterID, m_Initialized, MITK_ERROR, and MITK_INFO.

Referenced by mitk::OclBinaryThresholdImageFilter::Initialize().

◆ IsInitialized()

bool mitk::OclFilter::IsInitialized ( )
virtual

Returns true if the initialization was successfull.

Definition at line 341 of file mitkOclFilter.cpp.

References m_Initialized.

Referenced by mitk::OclBinaryThresholdImageFilter::Initialize().

◆ LoadSourceFiles()

void mitk::OclFilter::LoadSourceFiles ( CStringList SourceCodeList,
ClSizeList SourceCodeSizeList 
)
protected

Helper functions that load sourcefiles from the module context in the Initialize function.

Parameters
SourceCodeListholds the sourcecode for every file as string, the SourceCodeSizeList holst the size of every file in bytes.

Definition at line 212 of file mitkOclFilter.cpp.

References GetModule(), us::ModuleResource::GetName(), us::Module::GetResource(), us::ModuleResource::IsValid(), m_ClFiles, m_Preambel, MITK_DEBUG, and MITK_WARN.

Referenced by CompileSource().

◆ SetCompilerFlags()

void mitk::OclFilter::SetCompilerFlags ( const char *  flags)

Set specific compilerflags to compile the CL source. Default is set to nullptr; example: "-cl-fast-relaxed-math -cl-mad-enable -cl-strict-aliasing".

Parameters
flagsto the modulefolder that contains the gpuSource

Definition at line 335 of file mitkOclFilter.cpp.

References m_ClCompilerFlags.

◆ SetSourcePreambel()

void mitk::OclFilter::SetSourcePreambel ( const char *  preambel)
protected

Add some source code on the beginning of the loaded source.

In this way, some preprocessor flags for the CL compiler can at the beginning of the filter

Parameters
preambelSource preambel for e.g. #define commands to be inserted into the OpenCL source

Definition at line 325 of file mitkOclFilter.cpp.

References m_Preambel.

◆ SetWorkingSize()

void mitk::OclFilter::SetWorkingSize ( unsigned int  locx,
unsigned int  dimx,
unsigned int  locy = 1,
unsigned int  dimy = 1,
unsigned int  locz = 1,
unsigned int  dimz = 1 
)
protected

Set the working size for the following OpenCL kernel call.

Definition at line 305 of file mitkOclFilter.cpp.

References iDivUp(), m_GlobalWorkSize, and m_LocalWorkSize.

Referenced by mitk::OclDataSetToDataSetFilter::InitExec(), mitk::OclImageToImageFilter::InitExec(), and mitk::OclDataSetToDataSetFilter::InitExecNoInput().

Member Data Documentation

◆ m_ClCompilerFlags

const char* mitk::OclFilter::m_ClCompilerFlags
protected

String that contains the compiler flags.

Definition at line 77 of file mitkOclFilter.h.

Referenced by CompileSource(), and SetCompilerFlags().

◆ m_ClFiles

CStringList mitk::OclFilter::m_ClFiles
protected

List of sourcefiles that will be compiled for this filter.

Definition at line 92 of file mitkOclFilter.h.

Referenced by AddSourceFile(), CompileSource(), Initialize(), LoadSourceFiles(), and OclFilter().

◆ m_ClProgram

cl_program mitk::OclFilter::m_ClProgram
protected

The compiled OpenCL program.

Definition at line 80 of file mitkOclFilter.h.

Referenced by CompileSource(), mitk::OclBinaryThresholdImageFilter::Initialize(), Initialize(), and ~OclFilter().

◆ m_CommandQue

◆ m_FilterID

std::string mitk::OclFilter::m_FilterID
protected

Unique ID of the filter, needs to be specified in the constructor of the derived class.

Definition at line 86 of file mitkOclFilter.h.

Referenced by CompileSource(), Initialize(), mitk::OclBinaryThresholdImageFilter::OclBinaryThresholdImageFilter(), and ~OclFilter().

◆ m_GlobalWorkSize

vcl_size_t mitk::OclFilter::m_GlobalWorkSize[3]
protected

The global work size of the filter.

Definition at line 101 of file mitkOclFilter.h.

Referenced by ExecuteKernel(), ExecuteKernelChunks(), ExecuteKernelChunksInBatches(), and SetWorkingSize().

◆ m_Initialized

bool mitk::OclFilter::m_Initialized
protected

status of the filter

Definition at line 95 of file mitkOclFilter.h.

Referenced by CompileSource(), Initialize(), and IsInitialized().

◆ m_LocalWorkSize

vcl_size_t mitk::OclFilter::m_LocalWorkSize[3]
protected

The local work size fo the filter.

Definition at line 98 of file mitkOclFilter.h.

Referenced by ExecuteKernel(), ExecuteKernelChunks(), ExecuteKernelChunksInBatches(), and SetWorkingSize().

◆ m_Preambel

const char* mitk::OclFilter::m_Preambel
protected

source preambel for e.g. #define commands to be inserted into the OpenCL source

Definition at line 89 of file mitkOclFilter.h.

Referenced by LoadSourceFiles(), and SetSourcePreambel().


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