1 #ifndef HOPS_OPENCLINTERFACE_DEF
2 #define HOPS_OPENCLINTERFACE_DEF
4 #include "MHO_OpenCLConfig.hh"
6 #ifdef HOPS_USE_CL_VECTOR
7 #define __NO_STD_VECTOR
8 #define CL_VECTOR_TYPE cl::vector
10 #define CL_VECTOR_TYPE std::vector
13 #define __CL_ENABLE_EXCEPTIONS
31 #ifdef HOPS_USE_DOUBLE_PRECISION
33 #define CL_TYPE cl_double
34 #define CL_TYPE2 cl_double2
35 #define CL_TYPE4 cl_double4
36 #define CL_TYPE8 cl_double8
37 #define CL_TYPE16 cl_double16
52 TODO_FIXME_MSG(
"Warning : MHO_OpenCLPlugin is being built with float precision!")
53 #define CL_TYPE cl_float
54 #define CL_TYPE2 cl_float2
55 #define CL_TYPE4 cl_float4
56 #define CL_TYPE8 cl_float8
57 #define CL_TYPE16 cl_float16
73 #define ENFORCE_CL_FINISH
81 #define USE_CL_ERROR_TRY_CATCH
83 #ifdef USE_CL_ERROR_TRY_CATCH
85 #define CL_ERROR_TRY \
92 #ifdef USE_CL_ERROR_TRY_CATCH
93 #define CL_ERROR_CATCH \
95 catch(cl::Error error) \
97 std::cout << "OpenCL Exception caught: " << std::endl; \
98 std::cout << __FILE__ << ":" << __LINE__ << std::endl; \
99 std::cout << error.what() << "(" << error.err() \
100 << ") = " << MHO_OpenCLInterface::GetInstance()->GetErrorMessage(error.err()) << std::endl; \
104 #define CL_ERROR_CATCH
121 cl::CommandQueue&
GetQueue(
int i = -1)
const;
125 CL_VECTOR_TYPE< cl::Device > availableDevices =
fContext->getInfo< CL_CONTEXT_DEVICES >();
126 return availableDevices.size();
129 void SetGPU(
unsigned int i);
152 mutable std::vector< cl::CommandQueue* >
fQueues;
#define TODO_FIXME_MSG(x)
Definition: MHO_Message.hh:35
XValueType mapped_type
Definition: MHO_OpenCLInterface.hh:28
CL_TYPE mapped_type
Definition: MHO_OpenCLInterface.hh:62
CL_TYPE2 mapped_type
Definition: MHO_OpenCLInterface.hh:67
#define CL_TYPE
Definition: MHO_OpenCLInterface.hh:53
#define CL_TYPE2
Definition: MHO_OpenCLInterface.hh:54
Definition: MHO_OpenCLInterface.hh:27
Definition: MHO_OpenCLInterface.hh:111
std::map< int, std::string > fOpenCLCode2ErrorMap
Definition: MHO_OpenCLInterface.hh:155
unsigned int GetNumberOfDevices() const
Definition: MHO_OpenCLInterface.hh:123
CL_VECTOR_TYPE< cl::Device > fDevices
Definition: MHO_OpenCLInterface.hh:149
void SetKernelPath(std::string s)
Definition: MHO_OpenCLInterface.hh:131
std::string fKernelPath
Definition: MHO_OpenCLInterface.hh:146
CL_VECTOR_TYPE< cl::Device > GetDevices() const
Definition: MHO_OpenCLInterface.hh:117
CL_VECTOR_TYPE< cl::Platform > fPlatforms
Definition: MHO_OpenCLInterface.hh:148
unsigned int fCLDeviceID
Definition: MHO_OpenCLInterface.hh:150
std::map< std::string, int > fOpenCLError2CodeMap
Definition: MHO_OpenCLInterface.hh:154
MHO_OpenCLInterface()
Definition: MHO_OpenCLInterface.cc:17
std::string GetKernelPath() const
Definition: MHO_OpenCLInterface.hh:133
cl::Device GetDevice() const
Definition: MHO_OpenCLInterface.hh:119
cl::Context * fContext
Definition: MHO_OpenCLInterface.hh:151
void InitializeOpenCL()
Definition: MHO_OpenCLInterface.cc:44
cl::CommandQueue & GetQueue(int i=-1) const
Definition: MHO_OpenCLInterface.cc:125
virtual ~MHO_OpenCLInterface()
Definition: MHO_OpenCLInterface.cc:22
static MHO_OpenCLInterface * GetInstance()
Definition: MHO_OpenCLInterface.cc:32
void FillErrorCodeMaps()
Definition: MHO_OpenCLInterface.cc:133
std::vector< cl::CommandQueue * > fQueues
Definition: MHO_OpenCLInterface.hh:152
cl::Context GetContext() const
Definition: MHO_OpenCLInterface.hh:115
static MHO_OpenCLInterface * fOpenCLInterface
Definition: MHO_OpenCLInterface.hh:144
std::string GetErrorMessage(int code)
Definition: MHO_OpenCLInterface.hh:135
void SetGPU(unsigned int i)
Definition: MHO_OpenCLInterface.cc:89
Definition: MHO_ChannelLabeler.hh:17