fix: serialize printf kernel accesses using device-wise locks

Related-To: LOCI-4114

Signed-off-by: Lu, Wenbin <wenbin.lu@intel.com>
This commit is contained in:
Lu, Wenbin
2023-08-02 00:01:35 +00:00
committed by Compute-Runtime-Automation
parent 7e6e0da978
commit 3d33366ff6
23 changed files with 654 additions and 133 deletions

View File

@@ -189,7 +189,10 @@ ze_result_t CommandQueueImp::synchronizeByPollingForTaskCount(uint64_t timeout)
void CommandQueueImp::printKernelsPrintfOutput(bool hangDetected) {
size_t size = this->printfKernelContainer.size();
for (size_t i = 0; i < size; i++) {
this->printfKernelContainer[i]->printPrintfOutput(hangDetected);
std::lock_guard<std::mutex> lock(static_cast<DeviceImp *>(this->getDevice())->printfKernelMutex);
if (!this->printfKernelContainer[i].expired()) {
this->printfKernelContainer[i].lock()->printPrintfOutput(hangDetected);
}
}
this->printfKernelContainer.clear();
}