26 #include <unordered_map>
27 #include <unordered_set>
80 const std::string &KernelName,
83 bool JITCompilationIsRequired =
false);
104 std::pair<RT::PiProgram, bool>
107 const std::string &CompileAndLinkOptions,
125 const std::string &KernelName,
127 bool JITCompilationIsRequired =
false);
131 const std::string &KernelName,
133 bool JITCompilationIsRequired =
false);
135 std::tuple<RT::PiKernel, std::mutex *, RT::PiProgram>
138 const std::string &KernelName,
const program_impl *Prg);
144 void debugPrintBinaryImages()
const;
145 static std::string getProgramBuildLog(
const RT::PiProgram &Program,
172 const std::string &KernelName);
176 kernel_id getSYCLKernelID(
const std::string &KernelName);
180 std::vector<kernel_id> getAllSYCLKernelIDs();
184 kernel_id getBuiltInKernelID(
const std::string &KernelName);
188 void addOrInitDeviceGlobalEntry(
const void *DeviceGlobalPtr,
189 const char *UniqueId);
193 std::vector<device_image_plain> getSYCLDeviceImagesWithCompatibleState(
194 const context &Ctx,
const std::vector<device> &Devs,
195 bundle_state TargetState,
const std::vector<kernel_id> &KernelIDs = {});
199 bringSYCLDeviceImagesToState(std::vector<device_image_plain> &DeviceImages,
204 std::vector<device_image_plain>
205 getSYCLDeviceImages(
const context &Ctx,
const std::vector<device> &Devs,
211 std::vector<device_image_plain>
212 getSYCLDeviceImages(
const context &Ctx,
const std::vector<device> &Devs,
219 std::vector<device_image_plain>
220 getSYCLDeviceImages(
const context &Ctx,
const std::vector<device> &Devs,
221 const std::vector<kernel_id> &KernelIDs,
227 const std::vector<device> &Devs,
232 std::vector<device_image_plain>
233 link(
const std::vector<device_image_plain> &DeviceImages,
234 const std::vector<device> &Devs,
const property_list &PropList);
239 const std::vector<device> &Devs,
242 std::pair<RT::PiKernel, std::mutex *>
243 getOrCreateKernel(
const context &Context,
const std::string &KernelName,
249 bool kernelUsesAssert(
OSModuleHandle M,
const std::string &KernelName)
const;
258 bool JITCompilationIsRequired =
false);
259 using ProgramPtr = std::unique_ptr<remove_pointer_t<RT::PiProgram>,
262 const std::string &CompileOptions,
263 const std::string &LinkOptions,
const RT::PiDevice &Device,
264 uint32_t DeviceLibReqMask);
270 const std::string &KernelName)
const;
291 using RTDeviceBinaryImageUPtr = std::unique_ptr<RTDeviceBinaryImage>;
298 std::unique_ptr<std::vector<RTDeviceBinaryImageUPtr>>>
301 using StrToKSIdMap = std::unordered_map<std::string, KernelSetId>;
305 std::unordered_map<OSModuleHandle, StrToKSIdMap> m_KernelSets;
310 std::unordered_map<OSModuleHandle, KernelSetId> m_OSModuleKernelSets;
317 std::unordered_map<std::string, kernel_id> m_KernelName2KernelIDs;
322 std::unordered_multimap<kernel_id, RTDeviceBinaryImage *>
323 m_KernelIDs2BinImage;
331 std::shared_ptr<std::vector<kernel_id>>>
338 std::mutex m_KernelIDsMutex;
346 std::unordered_set<std::string> m_ServiceKernels;
351 std::unordered_set<std::string> m_ExportedSymbols;
355 std::unordered_map<std::string, kernel_id> m_BuiltInKernelIDs;
358 std::mutex m_BuiltInKernelIDsMutex;
373 std::unordered_map<pi::PiProgram, const RTDeviceBinaryImage *> NativePrograms;
376 std::mutex MNativeProgramsMutex;
378 using KernelNameToArgMaskMap = std::unordered_map<std::string, KernelArgMask>;
381 std::unordered_map<const RTDeviceBinaryImage *, KernelNameToArgMaskMap>
382 m_EliminatedKernelArgMasks;
385 bool m_UseSpvFile =
false;
387 using KernelNameWithOSModule = std::pair<std::string, OSModuleHandle>;
388 std::set<KernelNameWithOSModule> m_KernelUsesAssert;
391 std::unordered_map<std::string, std::unique_ptr<DeviceGlobalMapEntry>>
393 std::unordered_map<const void *, DeviceGlobalMapEntry *> m_Ptr2DeviceGlobal;
396 std::mutex m_DeviceGlobalsMutex;