Improve getDevice methods

Signed-off-by: Bartosz Dunajski <bartosz.dunajski@intel.com>
This commit is contained in:
Bartosz Dunajski
2021-08-25 19:01:44 +00:00
committed by Compute-Runtime-Automation
parent a9226a9113
commit cb91474b1a
23 changed files with 155 additions and 64 deletions

View File

@@ -38,7 +38,7 @@ ClDevice::ClDevice(Device &device, Platform *platform) : device(device), platfor
auto numAvailableDevices = device.getNumAvailableDevices();
if (numAvailableDevices > 1) {
for (uint32_t i = 0; i < numAvailableDevices; i++) {
auto &coreSubDevice = static_cast<SubDevice &>(*device.getDeviceById(i));
auto &coreSubDevice = static_cast<SubDevice &>(*device.getSubDevice(i));
auto pClSubDevice = std::make_unique<ClDevice>(coreSubDevice, platform);
pClSubDevice->incRefInternal();
pClSubDevice->decRefApi();
@@ -118,11 +118,16 @@ const DeviceInfo &ClDevice::getSharedDeviceInfo() const {
return device.getDeviceInfo();
}
ClDevice *ClDevice::getDeviceById(uint32_t deviceId) {
UNRECOVERABLE_IF(deviceId >= getNumAvailableDevices());
if (subDevices.empty()) {
return this;
ClDevice *ClDevice::getSubDevice(uint32_t deviceId) const {
UNRECOVERABLE_IF(deviceId >= subDevices.size());
return subDevices[deviceId].get();
}
ClDevice *ClDevice::getThisOrNextNonRootCsrDevice(uint32_t deviceId) {
if (subDevices.empty() || !getDevice().hasRootCsr()) {
return const_cast<ClDevice *>(this);
}
UNRECOVERABLE_IF(deviceId >= subDevices.size());
return subDevices[deviceId].get();
}

View File

@@ -115,7 +115,8 @@ class ClDevice : public BaseObject<_cl_device_id> {
Device &getDevice() const noexcept { return device; }
const ClDeviceInfo &getDeviceInfo() const { return deviceInfo; }
const DeviceInfo &getSharedDeviceInfo() const;
ClDevice *getDeviceById(uint32_t deviceId);
ClDevice *getSubDevice(uint32_t deviceId) const;
ClDevice *getThisOrNextNonRootCsrDevice(uint32_t deviceId);
const std::string &peekCompilerExtensions() const;
const std::string &peekCompilerExtensionsWithFeatures() const;
DeviceBitfield getDeviceBitfield() const;