Add support for setting CU mask on ROCclr for ROCm backend

Change-Id: I0dbe2eeb33467fc0f24b26929119c10e9b455da7
This commit is contained in:
Aryan Salmanpour
2020-05-12 10:31:07 -04:00
parent 82dc1a6343
commit fed94b8604
6 changed files with 46 additions and 13 deletions
+6 -3
View File
@@ -590,7 +590,8 @@ bool VirtualGPU::releaseGpuMemoryFence() {
return true;
}
VirtualGPU::VirtualGPU(Device& device, bool profiling, bool cooperative)
VirtualGPU::VirtualGPU(Device& device, bool profiling, bool cooperative,
const std::vector<uint32_t>& cuMask)
: device::VirtualDevice(device),
state_(0),
gpu_queue_(nullptr),
@@ -601,7 +602,8 @@ VirtualGPU::VirtualGPU(Device& device, bool profiling, bool cooperative)
schedulerThreads_(0),
schedulerParam_(nullptr),
schedulerQueue_(nullptr),
schedulerSignal_({0})
schedulerSignal_({0}),
cuMask_(cuMask)
{
index_ = device.numOfVgpus_++;
gpu_device_ = device.getBackendDevice();
@@ -643,6 +645,7 @@ VirtualGPU::VirtualGPU(Device& device, bool profiling, bool cooperative)
// Note: Virtual GPU device creation must be a thread safe operation
roc_device_.vgpus_.resize(roc_device_.numOfVgpus_);
roc_device_.vgpus_[index()] = this;
}
VirtualGPU::~VirtualGPU() {
@@ -702,7 +705,7 @@ VirtualGPU::~VirtualGPU() {
bool VirtualGPU::create() {
// Pick a reasonable queue size
uint32_t queue_size = 1024;
gpu_queue_ = roc_device_.acquireQueue(queue_size, cooperative_);
gpu_queue_ = roc_device_.acquireQueue(queue_size, cooperative_, cuMask_);
if (!gpu_queue_) return false;
if (!initPool(dev().settings().kernargPoolSize_, (profiling_) ? queue_size : 0)) {