diff --git a/sycl/source/detail/program_manager/program_manager.cpp b/sycl/source/detail/program_manager/program_manager.cpp index b916039bda9ee..6fa277f8e61a3 100644 --- a/sycl/source/detail/program_manager/program_manager.cpp +++ b/sycl/source/detail/program_manager/program_manager.cpp @@ -1038,7 +1038,6 @@ void ProgramManager::addImages(pi_device_binaries DeviceBinary) { // ... or create the set first if it hasn't been KernelSetId KSId = getNextKernelSetId(); { - std::lock_guard KernelIDsGuard(m_KernelIDsMutex); for (_pi_offload_entry EntriesIt = EntriesB; EntriesIt != EntriesE; ++EntriesIt) { auto Result = KSIdMap.insert(std::make_pair(EntriesIt->name, KSId)); @@ -1259,16 +1258,12 @@ static bool compatibleWithDevice(RTDeviceBinaryImage *BinImage, } kernel_id ProgramManager::getSYCLKernelID(const std::string &KernelName) { - std::lock_guard KernelIDsGuard(m_KernelIDsMutex); - auto KernelID = m_KernelIDs.find(KernelName); assert(KernelID != m_KernelIDs.end() && "Kernel ID missing"); return KernelID->second; } std::vector ProgramManager::getAllSYCLKernelIDs() { - std::lock_guard KernelIDsGuard(m_KernelIDsMutex); - std::vector AllKernelIDs; AllKernelIDs.reserve(m_KernelIDs.size()); for (std::pair KernelID : m_KernelIDs) { @@ -1329,7 +1324,6 @@ ProgramManager::getSYCLDeviceImagesWithCompatibleState( pi_device_binary DevBin = const_cast(&BinImage->getRawData()); { - std::lock_guard KernelIDsGuard(m_KernelIDsMutex); for (_pi_offload_entry EntriesIt = DevBin->EntriesBegin; EntriesIt != DevBin->EntriesEnd; ++EntriesIt) { auto KernelID = m_KernelIDs.find(EntriesIt->name); diff --git a/sycl/source/detail/program_manager/program_manager.hpp b/sycl/source/detail/program_manager/program_manager.hpp index 04c7202499721..b86e1864df77b 100644 --- a/sycl/source/detail/program_manager/program_manager.hpp +++ b/sycl/source/detail/program_manager/program_manager.hpp @@ -275,15 +275,9 @@ class ProgramManager { /// Maps names of kernels to their unique kernel IDs. /// TODO: Use std::unordered_set with transparent hash and equality functions /// when C++20 is enabled for the runtime library. - /// Access must be guarded by the m_KernelIDsMutex mutex + /// Write access is only allowed during start-up (addImages). std::unordered_map m_KernelIDs; - /// Protects kernel ID cache. - /// NOTE: This may be acquired while \ref Sync::getGlobalLock() is held so to - /// avoid deadlocks care must be taken not to acquire - /// \ref Sync::getGlobalLock() while holding this mutex. - std::mutex m_KernelIDsMutex; - // Keeps track of pi_program to image correspondence. Needed for: // - knowing which specialization constants are used in the program and // injecting their current values before compiling the SPIR-V; the binary