@@ -1797,8 +1797,11 @@ void ProgramManager::cacheKernelUsesAssertInfo(const RTDeviceBinaryImage &Img) {
17971797 const RTDeviceBinaryImage::PropertyRange &AssertUsedRange =
17981798 Img.getAssertUsed ();
17991799 if (AssertUsedRange.isAvailable ())
1800- for (const auto &Prop : AssertUsedRange)
1801- m_KernelUsesAssert.insert (Prop->Name );
1800+ for (const auto &Prop : AssertUsedRange) {
1801+ auto It = m_DeviceKernelInfoMap.find (Prop->Name );
1802+ assert (It != m_DeviceKernelInfoMap.end ());
1803+ It->second .setUsesAssert ();
1804+ }
18021805}
18031806
18041807void ProgramManager::cacheKernelImplicitLocalArg (
@@ -1807,36 +1810,27 @@ void ProgramManager::cacheKernelImplicitLocalArg(
18071810 Img.getImplicitLocalArg ();
18081811 if (ImplicitLocalArgRange.isAvailable ())
18091812 for (auto Prop : ImplicitLocalArgRange) {
1810- m_KernelImplicitLocalArgPos[Prop->Name ] =
1811- DeviceBinaryProperty (Prop).asUint32 ();
1813+ auto It = m_DeviceKernelInfoMap.find (Prop->Name );
1814+ assert (It != m_DeviceKernelInfoMap.end ());
1815+ It->second .setImplicitLocalArgPos (DeviceBinaryProperty (Prop).asUint32 ());
18121816 }
18131817}
18141818
1815- std::optional<int >
1816- ProgramManager::kernelImplicitLocalArgPos (KernelNameStrRefT KernelName) const {
1817- auto it = m_KernelImplicitLocalArgPos.find (KernelName);
1818- if (it != m_KernelImplicitLocalArgPos.end ())
1819- return it->second ;
1820- return {};
1821- }
1822-
1823- DeviceKernelInfo &ProgramManager::getOrCreateDeviceKernelInfo (
1824- const CompileTimeKernelInfoTy &Info) {
1819+ DeviceKernelInfo &
1820+ ProgramManager::getDeviceKernelInfo (const CompileTimeKernelInfoTy &Info) {
18251821 std::lock_guard<std::mutex> Guard (m_DeviceKernelInfoMapMutex);
1826- auto [Iter, Inserted] =
1827- m_DeviceKernelInfoMap.try_emplace (KernelNameStrT{Info.Name .data ()}, Info);
1828- if (!Inserted)
1829- Iter->second .setCompileTimeInfoIfNeeded (Info);
1830- return Iter->second ;
1822+ auto It = m_DeviceKernelInfoMap.find (KernelNameStrT{Info.Name .data ()});
1823+ assert (It != m_DeviceKernelInfoMap.end ());
1824+ It->second .setCompileTimeInfoIfNeeded (Info);
1825+ return It->second ;
18311826}
18321827
18331828DeviceKernelInfo &
1834- ProgramManager::getOrCreateDeviceKernelInfo (KernelNameStrRefT KernelName) {
1829+ ProgramManager::getDeviceKernelInfo (KernelNameStrRefT KernelName) {
18351830 std::lock_guard<std::mutex> Guard (m_DeviceKernelInfoMapMutex);
1836- CompileTimeKernelInfoTy DefaultCompileTimeInfo{std::string_view (KernelName)};
1837- auto Result =
1838- m_DeviceKernelInfoMap.try_emplace (KernelName, DefaultCompileTimeInfo);
1839- return Result.first ->second ;
1831+ auto It = m_DeviceKernelInfoMap.find (KernelName);
1832+ assert (It != m_DeviceKernelInfoMap.end ());
1833+ return It->second ;
18401834}
18411835
18421836static bool isBfloat16DeviceLibImage (sycl_device_binary RawImg,
@@ -2039,6 +2033,10 @@ void ProgramManager::addImage(sycl_device_binary RawImg,
20392033 m_KernelIDs2BinImage.insert (std::make_pair (It->second , Img.get ()));
20402034 KernelIDs->push_back (It->second );
20412035
2036+ CompileTimeKernelInfoTy DefaultCompileTimeInfo{std::string_view (name)};
2037+ m_DeviceKernelInfoMap.try_emplace (KernelNameStrT (name),
2038+ DefaultCompileTimeInfo);
2039+
20422040 // Keep track of image to kernel name reference count for cleanup.
20432041 m_KernelNameRefCount[name]++;
20442042 }
@@ -2232,8 +2230,6 @@ void ProgramManager::removeImages(sycl_device_binaries DeviceBinary) {
22322230 if (--RefCount == 0 ) {
22332231 // TODO aggregate all these maps into a single one since their entries
22342232 // share lifetime.
2235- m_KernelUsesAssert.erase (Name);
2236- m_KernelImplicitLocalArgPos.erase (Name);
22372233 m_DeviceKernelInfoMap.erase (Name);
22382234 m_KernelNameRefCount.erase (RefCountIt);
22392235 if (Name2IDIt != m_KernelName2KernelIDs.end ())
0 commit comments