| 88 | } |
| 89 | |
| 90 | void OpenCLWrapper::init_kernels() { |
| 91 | m_kernels.clear(); |
| 92 | cl_uint num_kernels; |
| 93 | CALL_CL_GUARDED(clCreateKernelsInProgram, (m_program, 0, NULL, &num_kernels)); |
| 94 | std::vector<cl_kernel> kernels(num_kernels); |
| 95 | CALL_CL_GUARDED(clCreateKernelsInProgram, (m_program, num_kernels, kernels.data(), NULL)); |
| 96 | for (std::vector<cl_kernel>::iterator itr = kernels.begin(); |
| 97 | itr != kernels.end(); itr++) { |
| 98 | size_t name_len; |
| 99 | CALL_CL_GUARDED(clGetKernelInfo, (*itr, CL_KERNEL_FUNCTION_NAME, 0, NULL, &name_len)); |
| 100 | char* name = new char[name_len]; |
| 101 | CALL_CL_GUARDED(clGetKernelInfo, (*itr, CL_KERNEL_FUNCTION_NAME, name_len, name, NULL)); |
| 102 | m_kernels[std::string(name)] = *itr; |
| 103 | delete [] name; |
| 104 | } |
| 105 | } |
| 106 | |
| 107 | void OpenCLWrapper::set_kernel(const std::string& kernel_name) { |
| 108 | cl_int err; |