mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-01 12:33:12 +08:00
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:
committed by
Compute-Runtime-Automation
parent
7e6e0da978
commit
3d33366ff6
@@ -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();
|
||||
}
|
||||
|
||||
@@ -137,7 +137,7 @@ struct CommandQueueImp : public CommandQueue {
|
||||
NEO::LinearStream firstCmdListStream{};
|
||||
NEO::HeapContainer heapContainer;
|
||||
ze_command_queue_desc_t desc;
|
||||
std::vector<Kernel *> printfKernelContainer;
|
||||
std::vector<std::weak_ptr<Kernel>> printfKernelContainer;
|
||||
|
||||
Device *device = nullptr;
|
||||
NEO::CommandStreamReceiver *csr = nullptr;
|
||||
|
||||
Reference in New Issue
Block a user