79 program_impl(std::vector<std::shared_ptr<program_impl>> ProgramList,
110 return MPropList.has_property<propertyT>();
120 return MPropList.get_property<propertyT>();
130 cl_program
get()
const;
140 bool is_host()
const {
return MContext->is_host(); }
156 void compile_with_kernel_name(std::string KernelName,
157 std::string CompileOptions,
173 void compile_with_source(std::string KernelSource,
174 std::string CompileOptions =
"");
191 void build_with_kernel_name(std::string KernelName, std::string BuildOptions,
207 void build_with_source(std::string KernelSource,
208 std::string BuildOptions =
"");
221 void link(std::string LinkOptions =
"");
229 bool has_kernel(std::string KernelName,
bool IsCreatedFromSource)
const;
238 kernel get_kernel(std::string KernelName,
239 std::shared_ptr<program_impl> PtrToSelf,
240 bool IsCreatedFromSource)
const;
250 std::vector<std::vector<char>> get_binaries()
const;
256 return createSyclObjFromImpl<context>(MContext);
261 assert(!is_host() &&
"Plugin is not available for Host.");
262 return MContext->getPlugin();
309 void set_spec_constant_impl(
const char *Name,
const void *ValAddr,
355 template <
typename Param>
356 void check_device_feature_support(
const std::vector<device> &Devices) {
357 for (
const auto &Device : Devices) {
358 if (!Device.get_info<Param>()) {
360 "Online compilation is not supported by this device",
361 PI_ERROR_COMPILER_NOT_AVAILABLE);
374 const std::string &KernelName,
375 bool JITCompilationIsRequired =
false);
380 void create_cl_program_with_source(
const std::string &Source);
385 void compile(
const std::string &Options);
390 void build(
const std::string &Options);
393 std::vector<RT::PiDevice> get_pi_devices()
const;
397 static bool is_cacheable_with_options(
const std::string &Options) {
398 return Options.empty();
403 bool has_cl_kernel(
const std::string &KernelName)
const;
408 RT::PiKernel get_pi_kernel(
const std::string &KernelName)
const;
411 std::vector<device> sort_devices_by_cl_device_id(std::vector<device> Devices);
429 bool MLinkable =
false;
430 std::vector<device> MDevices;
431 property_list MPropList;
432 std::string MCompileOptions;
433 std::string MLinkOptions;
434 std::string MBuildOptions;
446 bool MProgramAndKernelCachingAllowed =
false;
448 bool MIsInterop =
false;