| 104 | } |
| 105 | |
| 106 | Status CLKernel::CreateFromProgram(const CLProgram& program, |
| 107 | const std::string& function_name) { |
| 108 | int error_code; |
| 109 | function_name_ = function_name; |
| 110 | kernel_ = |
| 111 | clCreateKernel(program.program(), function_name.c_str(), &error_code); |
| 112 | if (!kernel_ || error_code != CL_SUCCESS) { |
| 113 | kernel_ = nullptr; |
| 114 | return UnknownError(absl::StrCat("Failed to create ", function_name, |
| 115 | CLErrorCodeToString(error_code))); |
| 116 | } |
| 117 | |
| 118 | program_ = program.program(); |
| 119 | clRetainProgram(program_); |
| 120 | |
| 121 | RETURN_IF_ERROR(GetKernelPrivateMemorySize(kernel_, program.GetDeviceId(), |
| 122 | &private_memory_size_)); |
| 123 | RETURN_IF_ERROR(GetKernelMaxWorkGroupSize(kernel_, program.GetDeviceId(), |
| 124 | &max_work_group_size_)); |
| 125 | return OkStatus(); |
| 126 | } |
| 127 | |
| 128 | Status CLKernel::SetMemory(int index, cl_mem memory) { |
| 129 | return SetBytes(index, &memory, sizeof(cl_mem)); |
no test coverage detected