@@ -142,6 +142,9 @@ class ManagedDeviceBinaries {
142142 sycl_device_binaries MBinaries;
143143};
144144
145+ using MangledKernelNameMapT = std::map<std::string, std::string, std::less<>>;
146+ using KernelNameSetT = std::set<std::string, std::less<>>;
147+
145148// Information unique to images compiled at runtime through the
146149// ext_oneapi_kernel_compiler extension.
147150struct KernelCompilerBinaryInfo {
@@ -152,13 +155,12 @@ struct KernelCompilerBinaryInfo {
152155 : MLanguage{Lang}, MIncludePairs{std::move (IncludePairsVec)} {}
153156
154157 KernelCompilerBinaryInfo (syclex::source_language Lang,
155- std::set<std::string> &&KernelNames)
158+ KernelNameSetT &&KernelNames)
156159 : MLanguage{Lang}, MKernelNames{std::move (KernelNames)} {}
157160
158161 KernelCompilerBinaryInfo (
159- syclex::source_language Lang, std::set<std::string> &&KernelNames,
160- std::unordered_map<std::string, std::string> &&MangledKernelNames,
161- std::string &&Prefix,
162+ syclex::source_language Lang, KernelNameSetT &&KernelNames,
163+ MangledKernelNameMapT &&MangledKernelNames, std::string &&Prefix,
162164 std::shared_ptr<ManagedDeviceGlobalsRegistry> &&DeviceGlobalRegistry)
163165 : MLanguage{Lang}, MKernelNames{std::move (KernelNames)},
164166 MMangledKernelNames{std::move (MangledKernelNames)},
@@ -221,8 +223,8 @@ struct KernelCompilerBinaryInfo {
221223 }
222224
223225 syclex::source_language MLanguage;
224- std::set<std::string> MKernelNames;
225- std::unordered_map<std::string, std::string> MMangledKernelNames;
226+ KernelNameSetT MKernelNames;
227+ MangledKernelNameMapT MMangledKernelNames;
226228 std::string MPrefix;
227229 include_pairs_t MIncludePairs;
228230 std::vector<std::shared_ptr<ManagedDeviceGlobalsRegistry>>
@@ -278,7 +280,7 @@ class device_image_impl {
278280 device_image_impl (const RTDeviceBinaryImage *BinImage, const context &Context,
279281 const std::vector<device> &Devices, bundle_state State,
280282 ur_program_handle_t Program, syclex::source_language Lang,
281- std::set<std::string> &&KernelNames)
283+ KernelNameSetT &&KernelNames)
282284 : MBinImage(BinImage), MContext(std::move(Context)),
283285 MDevices(std::move(Devices)), MState(State), MProgram(Program),
284286 MKernelIDs(std::make_shared<std::vector<kernel_id>>()),
@@ -292,9 +294,8 @@ class device_image_impl {
292294 const RTDeviceBinaryImage *BinImage, const context &Context,
293295 const std::vector<device> &Devices, bundle_state State,
294296 std::shared_ptr<std::vector<kernel_id>> &&KernelIDs,
295- syclex::source_language Lang, std::set<std::string> &&KernelNames,
296- std::unordered_map<std::string, std::string> &&MangledKernelNames,
297- std::string &&Prefix,
297+ syclex::source_language Lang, KernelNameSetT &&KernelNames,
298+ MangledKernelNameMapT &&MangledKernelNames, std::string &&Prefix,
298299 std::shared_ptr<ManagedDeviceGlobalsRegistry> &&DeviceGlobalRegistry)
299300 : MBinImage(BinImage), MContext(std::move(Context)),
300301 MDevices(std::move(Devices)), MState(State), MProgram(nullptr ),
@@ -337,8 +338,7 @@ class device_image_impl {
337338
338339 device_image_impl (const context &Context, const std::vector<device> &Devices,
339340 bundle_state State, ur_program_handle_t Program,
340- syclex::source_language Lang,
341- std::set<std::string> &&KernelNames)
341+ syclex::source_language Lang, KernelNameSetT &&KernelNames)
342342 : MBinImage(static_cast <const RTDeviceBinaryImage *>(nullptr )),
343343 MContext(std::move(Context)), MDevices(std::move(Devices)),
344344 MState(State), MProgram(Program),
@@ -594,17 +594,17 @@ class device_image_impl {
594594 }
595595 }
596596
597- std::string adjustKernelName (const std::string & Name) const {
597+ std::string adjustKernelName (std::string_view Name) const {
598598 if (!MRTCBinInfo.has_value ())
599- return Name;
599+ return Name. data () ;
600600
601601 if (MRTCBinInfo->MLanguage == syclex::source_language::sycl) {
602602 auto It = MRTCBinInfo->MMangledKernelNames .find (Name);
603603 if (It != MRTCBinInfo->MMangledKernelNames .end ())
604604 return It->second ;
605605 }
606606
607- return Name;
607+ return Name. data () ;
608608 }
609609
610610 bool hasKernelName (const std::string &Name) const {
@@ -614,7 +614,7 @@ class device_image_impl {
614614 }
615615
616616 std::shared_ptr<kernel_impl> tryGetSourceBasedKernel (
617- const std::string & Name, const context &Context,
617+ std::string_view Name, const context &Context,
618618 const std::shared_ptr<kernel_bundle_impl> &OwnerBundle,
619619 const std::shared_ptr<device_image_impl> &Self) const {
620620 if (!(getOriginMask () & ImageOriginKernelCompiler))
@@ -768,8 +768,8 @@ class device_image_impl {
768768 std::vector<std::shared_ptr<device_image_impl>> Result;
769769 Result.reserve (NewImages.size ());
770770 for (auto &[NewImage, KernelIDs] : NewImages) {
771- std::set<std::string> KernelNames;
772- std::unordered_map<std::string, std::string> MangledKernelNames;
771+ KernelNameSetT KernelNames;
772+ MangledKernelNameMapT MangledKernelNames;
773773 std::unordered_set<std::string> DeviceGlobalIDSet;
774774 std::vector<std::string> DeviceGlobalIDVec;
775775 std::vector<std::string> DeviceGlobalNames;
@@ -970,7 +970,7 @@ class device_image_impl {
970970 &KernelNamesStr[0 ], nullptr );
971971 std::vector<std::string> KernelNames =
972972 detail::split_string (KernelNamesStr, ' ;' );
973- std::set<std::string> KernelNameSet{KernelNames.begin (), KernelNames.end ()};
973+ KernelNameSetT KernelNameSet{KernelNames.begin (), KernelNames.end ()};
974974
975975 // If caching enabled and kernel not fetched from cache, cache.
976976 if (PersistentDeviceCodeCache::isEnabled () && !FetchedFromCache &&
0 commit comments