mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 06:49:52 +08:00
fix for WSL and for sortNeoDevices
Signed-off-by: John Falkowski <john.falkowski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
99c424b6ff
commit
f35107d3b0
@@ -7,6 +7,7 @@
|
||||
|
||||
#include "shared/source/execution_environment/root_device_environment.h"
|
||||
#include "shared/source/os_interface/device_factory.h"
|
||||
#include "shared/source/os_interface/linux/drm_memory_operations_handler_bind.h"
|
||||
#include "shared/source/os_interface/linux/drm_neo.h"
|
||||
#include "shared/source/os_interface/os_interface.h"
|
||||
#include "shared/test/common/mocks/mock_compilers.h"
|
||||
@@ -37,6 +38,9 @@ class DriverLinuxFixture : public ::testing::Test {
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
executionEnvironment->rootDeviceEnvironments[i]->setHwInfo(&hwInfo);
|
||||
}
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
executionEnvironment->rootDeviceEnvironments[i]->memoryOperationsInterface = std::make_unique<NEO::DrmMemoryOperationsHandlerBind>(*executionEnvironment->rootDeviceEnvironments[i], i);
|
||||
}
|
||||
deviceFactory = std::make_unique<UltDeviceFactory>(numRootDevices, numSubDevices, *executionEnvironment);
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
devices.push_back(std::unique_ptr<NEO::Device>(deviceFactory->rootDevices[i]));
|
||||
@@ -47,6 +51,11 @@ class DriverLinuxFixture : public ::testing::Test {
|
||||
osInterface->setDriverModel(std::make_unique<TestDriverMockDrm>(bdf[i], const_cast<NEO::RootDeviceEnvironment &>(devices[i]->getRootDeviceEnvironment())));
|
||||
}
|
||||
executionEnvironment->sortNeoDevices();
|
||||
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
NEO::DrmMemoryOperationsHandlerBind *drm = static_cast<DrmMemoryOperationsHandlerBind *>(executionEnvironment->rootDeviceEnvironments[i]->memoryOperationsInterface.get());
|
||||
EXPECT_EQ(drm->getRootDeviceIndex(), i);
|
||||
}
|
||||
}
|
||||
void TearDown() override {}
|
||||
|
||||
@@ -131,6 +140,9 @@ class DriverPciOrderWitSimilarBusLinuxFixture : public ::testing::Test {
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
executionEnvironment->rootDeviceEnvironments[i]->setHwInfo(&hwInfo);
|
||||
}
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
executionEnvironment->rootDeviceEnvironments[i]->memoryOperationsInterface = std::make_unique<NEO::DrmMemoryOperationsHandlerBind>(*executionEnvironment->rootDeviceEnvironments[i], i);
|
||||
}
|
||||
deviceFactory = std::make_unique<UltDeviceFactory>(numRootDevices, numSubDevices, *executionEnvironment);
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
devices.push_back(std::unique_ptr<NEO::Device>(deviceFactory->rootDevices[i]));
|
||||
@@ -141,6 +153,11 @@ class DriverPciOrderWitSimilarBusLinuxFixture : public ::testing::Test {
|
||||
osInterface->setDriverModel(std::make_unique<TestDriverMockDrm>(bdf[i], const_cast<NEO::RootDeviceEnvironment &>(devices[i]->getRootDeviceEnvironment())));
|
||||
}
|
||||
executionEnvironment->sortNeoDevices();
|
||||
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
NEO::DrmMemoryOperationsHandlerBind *drm = static_cast<DrmMemoryOperationsHandlerBind *>(executionEnvironment->rootDeviceEnvironments[i]->memoryOperationsInterface.get());
|
||||
EXPECT_EQ(drm->getRootDeviceIndex(), i);
|
||||
}
|
||||
}
|
||||
void TearDown() override {}
|
||||
|
||||
@@ -182,6 +199,9 @@ class DriverPciOrderWitDifferentDeviceLinuxFixture : public ::testing::Test {
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
executionEnvironment->rootDeviceEnvironments[i]->setHwInfo(&hwInfo);
|
||||
}
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
executionEnvironment->rootDeviceEnvironments[i]->memoryOperationsInterface = std::make_unique<NEO::DrmMemoryOperationsHandlerBind>(*executionEnvironment->rootDeviceEnvironments[i], i);
|
||||
}
|
||||
deviceFactory = std::make_unique<UltDeviceFactory>(numRootDevices, numSubDevices, *executionEnvironment);
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
devices.push_back(std::unique_ptr<NEO::Device>(deviceFactory->rootDevices[i]));
|
||||
@@ -192,6 +212,11 @@ class DriverPciOrderWitDifferentDeviceLinuxFixture : public ::testing::Test {
|
||||
osInterface->setDriverModel(std::make_unique<TestDriverMockDrm>(bdf[i], const_cast<NEO::RootDeviceEnvironment &>(devices[i]->getRootDeviceEnvironment())));
|
||||
}
|
||||
executionEnvironment->sortNeoDevices();
|
||||
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
NEO::DrmMemoryOperationsHandlerBind *drm = static_cast<DrmMemoryOperationsHandlerBind *>(executionEnvironment->rootDeviceEnvironments[i]->memoryOperationsInterface.get());
|
||||
EXPECT_EQ(drm->getRootDeviceIndex(), i);
|
||||
}
|
||||
}
|
||||
void TearDown() override {}
|
||||
|
||||
@@ -233,6 +258,9 @@ class DriverPciOrderWitSimilarBusAndDeviceLinuxFixture : public ::testing::Test
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
executionEnvironment->rootDeviceEnvironments[i]->setHwInfo(&hwInfo);
|
||||
}
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
executionEnvironment->rootDeviceEnvironments[i]->memoryOperationsInterface = std::make_unique<NEO::DrmMemoryOperationsHandlerBind>(*executionEnvironment->rootDeviceEnvironments[i], i);
|
||||
}
|
||||
deviceFactory = std::make_unique<UltDeviceFactory>(numRootDevices, numSubDevices, *executionEnvironment);
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
devices.push_back(std::unique_ptr<NEO::Device>(deviceFactory->rootDevices[i]));
|
||||
@@ -243,6 +271,11 @@ class DriverPciOrderWitSimilarBusAndDeviceLinuxFixture : public ::testing::Test
|
||||
osInterface->setDriverModel(std::make_unique<TestDriverMockDrm>(bdf[i], const_cast<NEO::RootDeviceEnvironment &>(devices[i]->getRootDeviceEnvironment())));
|
||||
}
|
||||
executionEnvironment->sortNeoDevices();
|
||||
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
NEO::DrmMemoryOperationsHandlerBind *drm = static_cast<DrmMemoryOperationsHandlerBind *>(executionEnvironment->rootDeviceEnvironments[i]->memoryOperationsInterface.get());
|
||||
EXPECT_EQ(drm->getRootDeviceIndex(), i);
|
||||
}
|
||||
}
|
||||
void TearDown() override {}
|
||||
|
||||
@@ -284,6 +317,9 @@ class DriverPciOrderWitSimilarBDFLinuxFixture : public ::testing::Test {
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
executionEnvironment->rootDeviceEnvironments[i]->setHwInfo(&hwInfo);
|
||||
}
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
executionEnvironment->rootDeviceEnvironments[i]->memoryOperationsInterface = std::make_unique<NEO::DrmMemoryOperationsHandlerBind>(*executionEnvironment->rootDeviceEnvironments[i], i);
|
||||
}
|
||||
deviceFactory = std::make_unique<UltDeviceFactory>(numRootDevices, numSubDevices, *executionEnvironment);
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
devices.push_back(std::unique_ptr<NEO::Device>(deviceFactory->rootDevices[i]));
|
||||
@@ -294,6 +330,11 @@ class DriverPciOrderWitSimilarBDFLinuxFixture : public ::testing::Test {
|
||||
osInterface->setDriverModel(std::make_unique<TestDriverMockDrm>(bdf[i], const_cast<NEO::RootDeviceEnvironment &>(devices[i]->getRootDeviceEnvironment())));
|
||||
}
|
||||
executionEnvironment->sortNeoDevices();
|
||||
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
NEO::DrmMemoryOperationsHandlerBind *drm = static_cast<DrmMemoryOperationsHandlerBind *>(executionEnvironment->rootDeviceEnvironments[i]->memoryOperationsInterface.get());
|
||||
EXPECT_EQ(drm->getRootDeviceIndex(), i);
|
||||
}
|
||||
}
|
||||
void TearDown() override {}
|
||||
|
||||
@@ -322,5 +363,103 @@ TEST_F(DriverPciOrderWitSimilarBDFLinuxFixture, GivenEnvironmentVariableForDevic
|
||||
delete driverHandle;
|
||||
}
|
||||
|
||||
class DriverPciOrderSortDoesNothing : public ::testing::Test {
|
||||
public:
|
||||
void SetUp() override {
|
||||
DebugManagerStateRestore restorer;
|
||||
DebugManager.flags.ZE_ENABLE_PCI_ID_DEVICE_ORDER.set(1);
|
||||
|
||||
NEO::MockCompilerEnableGuard mock(true);
|
||||
auto executionEnvironment = new NEO::ExecutionEnvironment();
|
||||
executionEnvironment->prepareRootDeviceEnvironments(numRootDevices);
|
||||
NEO::HardwareInfo hwInfo = *NEO::defaultHwInfo.get();
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
executionEnvironment->rootDeviceEnvironments[i]->setHwInfo(&hwInfo);
|
||||
}
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
executionEnvironment->rootDeviceEnvironments[i]->memoryOperationsInterface = std::make_unique<NEO::DrmMemoryOperationsHandlerBind>(*executionEnvironment->rootDeviceEnvironments[i], i);
|
||||
}
|
||||
deviceFactory = std::make_unique<UltDeviceFactory>(numRootDevices, numSubDevices, *executionEnvironment);
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
devices.push_back(std::unique_ptr<NEO::Device>(deviceFactory->rootDevices[i]));
|
||||
}
|
||||
for (auto i = 0u; i < devices.size(); i++) {
|
||||
devices[i]->getExecutionEnvironment()->rootDeviceEnvironments[i]->osInterface = std::make_unique<NEO::OSInterface>();
|
||||
auto osInterface = devices[i]->getExecutionEnvironment()->rootDeviceEnvironments[i]->osInterface.get();
|
||||
osInterface->setDriverModel(std::make_unique<TestDriverMockDrm>(bdf[i], const_cast<NEO::RootDeviceEnvironment &>(devices[i]->getRootDeviceEnvironment())));
|
||||
}
|
||||
executionEnvironment->sortNeoDevices();
|
||||
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
NEO::DrmMemoryOperationsHandlerBind *drm = static_cast<DrmMemoryOperationsHandlerBind *>(executionEnvironment->rootDeviceEnvironments[i]->memoryOperationsInterface.get());
|
||||
EXPECT_EQ(drm->getRootDeviceIndex(), i);
|
||||
}
|
||||
}
|
||||
void TearDown() override {}
|
||||
|
||||
static constexpr uint32_t numRootDevices = 2u;
|
||||
static constexpr uint32_t numSubDevices = 2u;
|
||||
std::vector<std::unique_ptr<NEO::Device>> devices;
|
||||
std::string bdf[numRootDevices] = {"0000:03:04.0", "0001:03:04.0"};
|
||||
std::string sortedBdf[numRootDevices] = {"0000:03:04.0", "0001:03:04.0"};
|
||||
std::unique_ptr<UltDeviceFactory> deviceFactory;
|
||||
};
|
||||
|
||||
TEST_F(DriverPciOrderSortDoesNothing, GivenEnvironmentVariableForDeviceOrderAccordingToPciSetThenVerifyCaseSortDoesNothing) {
|
||||
NEO::MockCompilerEnableGuard mock(true);
|
||||
DriverHandleImp *driverHandle = new DriverHandleImp;
|
||||
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, driverHandle->initialize(std::move(devices)));
|
||||
|
||||
for (uint32_t i = 0; i < numRootDevices; i++) {
|
||||
auto L0Device = driverHandle->devices[i];
|
||||
if (L0Device != nullptr) {
|
||||
auto pDrm = L0Device->getNEODevice()->getExecutionEnvironment()->rootDeviceEnvironments[L0Device->getRootDeviceIndex()]->osInterface->getDriverModel()->as<Drm>();
|
||||
EXPECT_NE(pDrm, nullptr);
|
||||
EXPECT_TRUE(!pDrm->getPciPath().compare(sortedBdf[i]));
|
||||
}
|
||||
}
|
||||
delete driverHandle;
|
||||
}
|
||||
|
||||
class DriverWDDMLinuxFixture : public ::testing::Test {
|
||||
public:
|
||||
void SetUp() override {
|
||||
NEO::MockCompilerEnableGuard mock(true);
|
||||
executionEnvironment->prepareRootDeviceEnvironments(numRootDevices);
|
||||
NEO::HardwareInfo hwInfo = *NEO::defaultHwInfo.get();
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
executionEnvironment->rootDeviceEnvironments[i]->setHwInfo(&hwInfo);
|
||||
}
|
||||
deviceFactory = std::make_unique<UltDeviceFactory>(numRootDevices, numSubDevices, *executionEnvironment);
|
||||
for (auto i = 0u; i < executionEnvironment->rootDeviceEnvironments.size(); i++) {
|
||||
devices.push_back(std::unique_ptr<NEO::Device>(deviceFactory->rootDevices[i]));
|
||||
}
|
||||
for (auto i = 0u; i < devices.size(); i++) {
|
||||
devices[i]->getExecutionEnvironment()->rootDeviceEnvironments[i]->osInterface.reset(new NEO::OSInterface());
|
||||
devices[i]->getExecutionEnvironment()->rootDeviceEnvironments[i]->osInterface->setDriverModel(std::make_unique<MockDriverModelWDDM>(512));
|
||||
}
|
||||
}
|
||||
void TearDown() override {}
|
||||
|
||||
NEO::ExecutionEnvironment *executionEnvironment = new NEO::ExecutionEnvironment();
|
||||
static constexpr uint32_t numRootDevices = 5u;
|
||||
static constexpr uint32_t numSubDevices = 2u;
|
||||
std::vector<std::unique_ptr<NEO::Device>> devices;
|
||||
std::unique_ptr<UltDeviceFactory> deviceFactory;
|
||||
};
|
||||
|
||||
TEST_F(DriverWDDMLinuxFixture, ClearPciSortFlagToVerifyCodeCoverageOnly) {
|
||||
NEO::MockCompilerEnableGuard mock(true);
|
||||
DriverHandleImp *driverHandle = new DriverHandleImp;
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, driverHandle->initialize(std::move(devices)));
|
||||
DebugManagerStateRestore restorer;
|
||||
DebugManager.flags.ZE_ENABLE_PCI_ID_DEVICE_ORDER.set(0);
|
||||
|
||||
executionEnvironment->sortNeoDevices();
|
||||
|
||||
delete driverHandle;
|
||||
}
|
||||
|
||||
} // namespace ult
|
||||
} // namespace L0
|
||||
|
||||
Reference in New Issue
Block a user