From d3fb8eda8b8182ea7305519e92412705c0c11947 Mon Sep 17 00:00:00 2001 From: "Assiouras, Ioannis" Date: Wed, 30 Apr 2025 09:21:11 +0100 Subject: [PATCH] SWDEV-525593, SWDEV-527293 - Acquire active queue after xferQueue is created (#165) For xferQueue VirtualGPU::create is called after ProfilingBegin so the active queue needs to be acquired. --- rocclr/device/rocm/rocdevice.cpp | 3 +++ rocclr/device/rocm/rocvirtual.hpp | 1 + 2 files changed, 4 insertions(+) diff --git a/rocclr/device/rocm/rocdevice.cpp b/rocclr/device/rocm/rocdevice.cpp index 1cf7d96464..6cbf80f743 100644 --- a/rocclr/device/rocm/rocdevice.cpp +++ b/rocclr/device/rocm/rocdevice.cpp @@ -2834,6 +2834,9 @@ VirtualGPU* Device::xferQueue() const { LogError("Couldn't create the device transfer manager!"); return nullptr; } + if (xferQueue_->gpu_queue() == nullptr) { + xferQueue_->set_gpu_queue(thisDevice->AcquireActiveNormalQueue()); + } } xferQueue_->enableSyncBlit(); return xferQueue_; diff --git a/rocclr/device/rocm/rocvirtual.hpp b/rocclr/device/rocm/rocvirtual.hpp index 72027178f2..bc683ecff8 100644 --- a/rocclr/device/rocm/rocvirtual.hpp +++ b/rocclr/device/rocm/rocvirtual.hpp @@ -402,6 +402,7 @@ class VirtualGPU : public device::VirtualDevice { hsa_agent_t gpu_device() const { return gpu_device_; } hsa_queue_t* gpu_queue() { return gpu_queue_; } + void set_gpu_queue(hsa_queue_t* gpu_queue) { gpu_queue_ = gpu_queue; } // Return pointer to PrintfDbg PrintfDbg* printfDbg() const { return printfdbg_; }