2 std::string TaskItem::FakeKernelTemplating( std::string kernel_source ) {
4 std::string type_str = get_type_name<T>();
5 boost::replace_all( kernel_source, "TYPE", type_str );
11 void TaskItem::LoadCLKernel( std::string kernel_scr, std::string kernel_name ) {
15 std::string local_kernel = FakeKernelTemplating<T>( kernel_scr );
17 sources.push_back({local_kernel.c_str(),local_kernel.length()});
19 program = cl::Program (context,sources);
21 if( program.build({current_device}) != CL_SUCCESS ) {
23 std::string err_str = __func__;
24 err_str += "\nError Building OpenCL Program\n ";
25 err_str += "Compilier Output:\n ";
26 err_str += program.getBuildInfo<CL_PROGRAM_BUILD_LOG>(current_device);
28 throw std::runtime_error( err_str );
32 kernel = cl::Kernel(program, kernel_name.c_str() );