24 #ifndef __ARM_COMPUTE_CLKERNELLIBRARY_H__ 25 #define __ARM_COMPUTE_CLKERNELLIBRARY_H__ 48 Program(cl::Context context, std::string
name, std::string source);
56 Program(cl::Context context, cl::Device device, std::string name, std::vector<unsigned char> binary);
77 explicit operator cl::Program()
const;
79 static bool build(
const cl::Program &program,
const std::string &build_options =
"");
86 cl::Program
build(
const std::string &build_options =
"")
const;
94 std::vector<unsigned char> _binary;
116 Kernel(std::string
name,
const cl::Program &program);
129 explicit operator cl::Kernel()
const 142 using StringSet = std::set<std::string>;
163 void init(std::string kernel_path =
".", cl::Context context = cl::Context::getDefault(), cl::Device device = cl::Device::getDefault())
165 _kernel_path = std::move(kernel_path);
166 _context = std::move(context);
167 _device = std::move(device);
175 _kernel_path = kernel_path;
186 _context = std::move(context);
188 const auto cl_devices = _context.getInfo<CL_CONTEXT_DEVICES>();
190 if(cl_devices.empty())
192 _device = cl::Device();
196 _device = cl_devices[0];
205 _device = std::move(device);
214 Kernel create_kernel(
const std::string &kernel_name,
const StringSet &build_options_set = {})
const;
229 const Program &load_program(
const std::string &program_name)
const;
236 std::string stringify_set(
const StringSet &s)
const;
238 cl::Context _context;
240 std::string _kernel_path;
241 mutable std::map<std::string, const Program> _programs_map;
242 mutable std::map<std::string, cl::Program> _built_programs_map;
243 static const std::map<std::string, std::string> _kernel_program_map;
244 static const std::map<std::string, std::string> _program_source_map;
void init(std::string kernel_path=".", cl::Context context=cl::Context::getDefault(), cl::Device device=cl::Device::getDefault())
Initialises the kernel library.
void set_kernel_path(const std::string &kernel_path)
Sets the path that the kernels reside in.
std::string name() const
Returns program name.
void set_context(cl::Context context)
Sets the CL context used to create programs.
void set_device(cl::Device device)
Sets the CL device for which the programs are created.
Program()
Default constructor.
Program & operator=(const Program &)=default
Default copy assignment operator.
std::string name() const
Returns kernel name.
static bool build(const cl::Program &program, const std::string &build_options="")