diff --git a/runtime/device/sub_device.cpp b/runtime/device/sub_device.cpp index 5cdb266554..32790130cf 100644 --- a/runtime/device/sub_device.cpp +++ b/runtime/device/sub_device.cpp @@ -38,6 +38,10 @@ uint32_t SubDevice::getNumAvailableDevices() const { uint32_t SubDevice::getRootDeviceIndex() const { return this->rootDevice.getRootDeviceIndex(); } + +uint32_t SubDevice::getSubDeviceIndex() const { + return subDeviceIndex; +} Device *SubDevice::getDeviceById(uint32_t deviceId) const { UNRECOVERABLE_IF(deviceId >= getNumAvailableDevices()); return const_cast(this); diff --git a/runtime/device/sub_device.h b/runtime/device/sub_device.h index 3b06136bfe..a0a17ef486 100644 --- a/runtime/device/sub_device.h +++ b/runtime/device/sub_device.h @@ -21,6 +21,8 @@ class SubDevice : public Device { uint32_t getRootDeviceIndex() const override; Device *getDeviceById(uint32_t deviceId) const override; + uint32_t getSubDeviceIndex() const; + protected: DeviceBitfield getDeviceBitfieldForOsContext() const override; const uint32_t subDeviceIndex; diff --git a/unit_tests/device/sub_device_tests.cpp b/unit_tests/device/sub_device_tests.cpp index 3aeb33c60a..a167aed894 100644 --- a/unit_tests/device/sub_device_tests.cpp +++ b/unit_tests/device/sub_device_tests.cpp @@ -31,9 +31,13 @@ TEST(SubDevicesTest, givenCreateMultipleSubDevicesFlagSetWhenCreateRootDeviceThe EXPECT_EQ(2u, device->getNumSubDevices()); EXPECT_EQ(0u, device->internalDeviceIndex); EXPECT_EQ(0u, device->getRootDeviceIndex()); + EXPECT_EQ(0u, device->subdevices.at(0)->getRootDeviceIndex()); + EXPECT_EQ(0u, device->subdevices.at(0)->getSubDeviceIndex()); EXPECT_EQ(1u, device->subdevices.at(0)->getInternalDeviceIndex()); + EXPECT_EQ(0u, device->subdevices.at(1)->getRootDeviceIndex()); + EXPECT_EQ(1u, device->subdevices.at(1)->getSubDeviceIndex()); EXPECT_EQ(2u, device->subdevices.at(1)->getInternalDeviceIndex()); }