24 #ifndef ARM_COMPUTE_CLCOMPILECONTEXT_H 25 #define ARM_COMPUTE_CLCOMPILECONTEXT_H 40 using StringSet = std::set<std::string>;
78 const StringSet &
options()
const;
81 StringSet _build_opts;
104 Program(cl::Context context, cl::Device device, std::string name, std::vector<unsigned char> binary);
125 const std::vector<unsigned char> &
binary()
const 133 explicit operator cl::Program()
const;
141 static bool build(
const cl::Program &program,
const std::string &
build_options =
"");
148 cl::Program build(
const std::string &
build_options =
"")
const;
151 cl::Context _context;
156 std::vector<unsigned char> _binary;
178 Kernel(std::string
name,
const cl::Program &program);
191 explicit operator cl::Kernel()
const 204 using StringSet = std::set<std::string>;
220 cl::Context &context();
229 void set_context(cl::Context context);
232 const cl::Device &get_device()
const;
238 void set_device(cl::Device device);
252 const std::string &kernel_path,
const StringSet &build_options_set,
bool is_binary)
const;
256 void clear_programs_cache();
259 const std::map<std::string, cl::Program> &get_built_programs()
const;
266 void add_built_program(
const std::string &built_program_name,
const cl::Program &program)
const;
278 cl_uint get_num_compute_units()
const;
282 size_t max_local_workgroup_size(
const cl::Kernel &kernel)
const;
286 cl::NDRange default_ndrange()
const;
291 std::string get_device_version()
const;
297 bool int64_base_atomics_supported()
const;
303 bool is_wbsm_supported()
const;
312 const Program &load_program(
const std::string &program_name,
const std::string &program_source,
bool is_binary)
const;
321 std::string generate_build_options(
const StringSet &
build_options,
const std::string &kernel_path)
const;
330 std::string stringify_set(
const StringSet &s,
const std::string &kernel_path)
const;
332 cl::Context _context;
334 mutable std::map<std::string, const Program> _programs_map;
335 mutable std::map<std::string, cl::Program> _built_programs_map;
336 bool _is_wbsm_supported;
bool fp16_supported(const cl::Device &device)
Helper function to check whether the cl_khr_fp16 extension is supported.
const StringSet & options() const
Gets the current options list set.
const std::vector< unsigned char > & binary() const
Returns program binary data.
CLBuildOptions()
Default constructor.
Copyright (c) 2017-2021 Arm Limited.
void add_option(std::string option)
Adds option to the existing build option list.
std::string name() const
Returns program name.
void add_options(const StringSet &options)
Appends given build options to the current's objects options.
cl::Kernel create_kernel(const CLCompileContext &ctx, const std::string &kernel_name, const std::set< std::string > &build_opts=std::set< std::string >())
Creates an opencl kernel using a compile context.
std::set< std::string > build_options
OpenCL device type class.
void add_option_if(bool cond, std::string option)
Adds option if a given condition is true;.
Wrapper to configure the Khronos OpenCL C++ header.
std::string name() const
Returns kernel name.
void add_options_if(bool cond, const StringSet &options)
Appends given build options to the current's objects options if a given condition is true...
void add_option_if_else(bool cond, std::string option_true, std::string option_false)
Adds first option if condition is true else the second one.