fix: correct number of returned L0 drivers

Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski 2023-11-03 13:12:01 +00:00 committed by Compute-Runtime-Automation
parent 2094d16f1f
commit dcb351e9dd
10 changed files with 96 additions and 15 deletions

View File

@ -26,7 +26,7 @@ namespace L0 {
_ze_driver_handle_t *GlobalDriverHandle;
bool LevelZeroDriverInitialized = false;
uint32_t driverCount = 1;
uint32_t driverCount = 0;
void DriverImp::initialize(ze_result_t *result) {
*result = ZE_RESULT_ERROR_UNINITIALIZED;
@ -67,6 +67,8 @@ void DriverImp::initialize(ze_result_t *result) {
executionEnvironment->incRefInternal();
auto neoDevices = NEO::DeviceFactory::createDevices(*executionEnvironment);
executionEnvironment->decRefInternal();
GlobalDriverHandle = nullptr;
driverCount = 0;
if (!neoDevices.empty()) {
GlobalDriverHandle = DriverHandle::create(std::move(neoDevices), envVariables, result);
if (GlobalDriverHandle != nullptr) {
@ -90,6 +92,7 @@ void DriverImp::initialize(ze_result_t *result) {
GlobalDriver = nullptr;
}
}
driverCount = 1;
}
}
}

View File

@ -36,6 +36,8 @@ if(DEFINED AUB_STREAM_PROJECT_NAME)
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
${L0_CORE_ENABLERS}
${NEO_SOURCE_DIR}/level_zero/core/test/common/ult_specific_config_l0.cpp
${NEO_SOURCE_DIR}/level_zero/core/test/common/ult_config_listener_l0.cpp
${NEO_SOURCE_DIR}/level_zero/core/test/common/ult_config_listener_l0.h
${NEO_SOURCE_DIR}/level_zero/core/test/unit_tests/mock.h
${NEO_SOURCE_DIR}/level_zero/core/test/unit_tests/white_box.h
${NEO_SOURCE_DIR}/level_zero/tools/test/unit_tests/sources/debug/debug_session_helper.cpp

View File

@ -0,0 +1,25 @@
/*
* Copyright (C) 2023 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "level_zero/core/test/common/ult_config_listener_l0.h"
#include "level_zero/core/source/driver/driver.h"
void L0::UltConfigListenerL0::OnTestStart(const ::testing::TestInfo &testInfo) {
BaseUltConfigListener::OnTestStart(testInfo);
GlobalDriverHandle = nullptr;
driverCount = 0;
}
void L0::UltConfigListenerL0::OnTestEnd(const ::testing::TestInfo &testInfo) {
EXPECT_EQ(nullptr, GlobalDriverHandle);
EXPECT_EQ(0u, driverCount);
BaseUltConfigListener::OnTestEnd(testInfo);
}

View File

@ -0,0 +1,19 @@
/*
* Copyright (C) 2023 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
#include "shared/test/common/base_ult_config_listener.h"
namespace L0 {
class UltConfigListenerL0 : public NEO::BaseUltConfigListener {
private:
void OnTestStart(const ::testing::TestInfo &) override;
void OnTestEnd(const ::testing::TestInfo &) override;
};
} // namespace L0

View File

@ -5,11 +5,11 @@
*
*/
#include "shared/test/common/base_ult_config_listener.h"
#include "shared/test/common/helpers/test_files.h"
#include "shared/test/common/tests_configuration.h"
#include "level_zero/core/source/cmdlist/cmdlist.h"
#include "level_zero/core/test/common/ult_config_listener_l0.h"
using namespace NEO;
void cleanTestHelpers() {}
@ -52,5 +52,5 @@ std::string getBaseExecutionDir() {
}
void addUltListener(::testing::TestEventListeners &listeners) {
listeners.Append(new BaseUltConfigListener);
listeners.Append(new L0::UltConfigListenerL0);
}

View File

@ -31,6 +31,8 @@ target_sources(${TARGET_NAME} PRIVATE
${NEO_SHARED_TEST_DIRECTORY}/common/tests_configuration.h
${NEO_SOURCE_DIR}/level_zero/core/test/common/test_modules/gen_kernel.cmake
${NEO_SOURCE_DIR}/level_zero/core/test/common/ult_specific_config_l0.cpp
${NEO_SOURCE_DIR}/level_zero/core/test/common/ult_config_listener_l0.cpp
${NEO_SOURCE_DIR}/level_zero/core/test/common/ult_config_listener_l0.h
)
target_sources(${TARGET_NAME} PRIVATE

View File

@ -10,6 +10,7 @@
#include "shared/source/helpers/hw_info.h"
#include "shared/source/os_interface/os_time.h"
#include "shared/test/common/helpers/debug_manager_state_restore.h"
#include "shared/test/common/helpers/variable_backup.h"
#include "level_zero/core/source/context/context_imp.h"
#include "level_zero/core/source/device/device_imp.h"
@ -30,6 +31,8 @@ struct Context;
struct Device;
struct ContextImp;
extern uint32_t driverCount;
extern _ze_driver_handle_t *GlobalDriverHandle;
namespace ult {
class MockBuiltins;
@ -51,6 +54,8 @@ struct DeviceFixture {
const uint32_t rootDeviceIndex = 0u;
template <typename HelperType>
HelperType &getHelper() const;
VariableBackup<_ze_driver_handle_t *> globalDriverHandleBackup{&GlobalDriverHandle};
VariableBackup<uint32_t> driverCountBackup{&driverCount};
};
struct DriverHandleGetMemHandlePtrMock : public L0::DriverHandleImp {
@ -111,6 +116,9 @@ struct MultiDeviceFixture {
uint32_t numRootDevices = 4u;
uint32_t numSubDevices = 2u;
L0::ContextImp *context = nullptr;
VariableBackup<_ze_driver_handle_t *> globalDriverHandleBackup{&GlobalDriverHandle};
VariableBackup<uint32_t> driverCountBackup{&driverCount};
};
struct MultiDeviceFixtureHierarchy : public MultiDeviceFixture {

View File

@ -413,7 +413,12 @@ TEST(DriverTest, givenNullEnvVariableWhenCreatingDriverThenEnableProgramDebuggin
L0::GlobalDriver = nullptr;
}
TEST(DriverImpTest, givenDriverImpWhenInitializedThenEnvVariablesAreRead) {
struct DriverImpTest : public ::testing::Test {
VariableBackup<_ze_driver_handle_t *> globalDriverHandleBackup{&GlobalDriverHandle};
VariableBackup<uint32_t> driverCountBackup{&driverCount};
};
TEST_F(DriverImpTest, givenDriverImpWhenInitializedThenEnvVariablesAreRead) {
NEO::HardwareInfo hwInfo = *NEO::defaultHwInfo.get();
hwInfo.capabilityTable.levelZeroSupported = true;
@ -431,7 +436,7 @@ TEST(DriverImpTest, givenDriverImpWhenInitializedThenEnvVariablesAreRead) {
L0::GlobalDriver = nullptr;
}
TEST(DriverImpTest, givenMissingMetricApiDependenciesWhenInitializingDriverImpThenGlobalDriverHandleIsNull) {
TEST_F(DriverImpTest, givenMissingMetricApiDependenciesWhenInitializingDriverImpThenGlobalDriverHandleIsNull) {
NEO::HardwareInfo hwInfo = *NEO::defaultHwInfo.get();
hwInfo.capabilityTable.levelZeroSupported = true;
@ -455,7 +460,7 @@ TEST(DriverImpTest, givenMissingMetricApiDependenciesWhenInitializingDriverImpTh
EXPECT_EQ(nullptr, L0::GlobalDriver);
}
TEST(DriverImpTest, givenEnabledProgramDebuggingWhenCreatingExecutionEnvironmentThenDebuggingEnabledIsTrue) {
TEST_F(DriverImpTest, givenEnabledProgramDebuggingWhenCreatingExecutionEnvironmentThenDebuggingEnabledIsTrue) {
NEO::HardwareInfo hwInfo = *NEO::defaultHwInfo.get();
hwInfo.capabilityTable.levelZeroSupported = true;
@ -477,7 +482,7 @@ TEST(DriverImpTest, givenEnabledProgramDebuggingWhenCreatingExecutionEnvironment
L0::GlobalDriver = nullptr;
}
TEST(DriverImpTest, whenCreatingExecutionEnvironmentThenDefaultHierarchyIsEnabled) {
TEST_F(DriverImpTest, whenCreatingExecutionEnvironmentThenDefaultHierarchyIsEnabled) {
NEO::HardwareInfo hwInfo = *NEO::defaultHwInfo.get();
hwInfo.capabilityTable.levelZeroSupported = true;
@ -500,7 +505,7 @@ TEST(DriverImpTest, whenCreatingExecutionEnvironmentThenDefaultHierarchyIsEnable
L0::GlobalDriver = nullptr;
}
TEST(DriverImpTest, givenFlatDeviceHierarchyWhenCreatingExecutionEnvironmentThenFlatHierarchyIsEnabled) {
TEST_F(DriverImpTest, givenFlatDeviceHierarchyWhenCreatingExecutionEnvironmentThenFlatHierarchyIsEnabled) {
NEO::HardwareInfo hwInfo = *NEO::defaultHwInfo.get();
hwInfo.capabilityTable.levelZeroSupported = true;
@ -522,7 +527,7 @@ TEST(DriverImpTest, givenFlatDeviceHierarchyWhenCreatingExecutionEnvironmentThen
L0::GlobalDriver = nullptr;
}
TEST(DriverImpTest, givenCompositeDeviceHierarchyWhenCreatingExecutionEnvironmentThenCompositeHierarchyIsEnabled) {
TEST_F(DriverImpTest, givenCompositeDeviceHierarchyWhenCreatingExecutionEnvironmentThenCompositeHierarchyIsEnabled) {
NEO::HardwareInfo hwInfo = *NEO::defaultHwInfo.get();
hwInfo.capabilityTable.levelZeroSupported = true;
@ -544,7 +549,7 @@ TEST(DriverImpTest, givenCompositeDeviceHierarchyWhenCreatingExecutionEnvironmen
L0::GlobalDriver = nullptr;
}
TEST(DriverImpTest, givenCombinedDeviceHierarchyWhenCreatingExecutionEnvironmentThenCombinedHierarchyIsEnabled) {
TEST_F(DriverImpTest, givenCombinedDeviceHierarchyWhenCreatingExecutionEnvironmentThenCombinedHierarchyIsEnabled) {
NEO::HardwareInfo hwInfo = *NEO::defaultHwInfo.get();
hwInfo.capabilityTable.levelZeroSupported = true;
@ -566,7 +571,7 @@ TEST(DriverImpTest, givenCombinedDeviceHierarchyWhenCreatingExecutionEnvironment
L0::GlobalDriver = nullptr;
}
TEST(DriverImpTest, givenEnableProgramDebuggingWithValue2WhenCreatingExecutionEnvironmentThenDebuggingEnabledIsTrue) {
TEST_F(DriverImpTest, givenEnableProgramDebuggingWithValue2WhenCreatingExecutionEnvironmentThenDebuggingEnabledIsTrue) {
NEO::HardwareInfo hwInfo = *NEO::defaultHwInfo.get();
hwInfo.capabilityTable.levelZeroSupported = true;
@ -588,7 +593,7 @@ TEST(DriverImpTest, givenEnableProgramDebuggingWithValue2WhenCreatingExecutionEn
L0::GlobalDriver = nullptr;
}
TEST(DriverImpTest, givenEnabledFP64EmulationWhenCreatingExecutionEnvironmentThenFP64EmulationIsEnabled) {
TEST_F(DriverImpTest, givenEnabledFP64EmulationWhenCreatingExecutionEnvironmentThenFP64EmulationIsEnabled) {
NEO::HardwareInfo hwInfo = *NEO::defaultHwInfo.get();
hwInfo.capabilityTable.levelZeroSupported = true;
@ -610,8 +615,11 @@ TEST(DriverImpTest, givenEnabledFP64EmulationWhenCreatingExecutionEnvironmentThe
L0::GlobalDriver = nullptr;
}
TEST(DriverImpTest, givenEnabledProgramDebuggingAndEnabledExperimentalOpenCLWhenCreatingExecutionEnvironmentThenDebuggingEnabledIsFalse) {
TEST_F(DriverImpTest, givenEnabledProgramDebuggingAndEnabledExperimentalOpenCLWhenCreatingExecutionEnvironmentThenDebuggingEnabledIsFalse) {
DebugManagerStateRestore restorer;
VariableBackup<_ze_driver_handle_t *> globalDriverHandleBackup{&GlobalDriverHandle};
VariableBackup<uint32_t> driverCountBackup{&driverCount};
NEO::HardwareInfo hwInfo = *NEO::defaultHwInfo.get();
hwInfo.capabilityTable.levelZeroSupported = true;
@ -634,7 +642,7 @@ TEST(DriverImpTest, givenEnabledProgramDebuggingAndEnabledExperimentalOpenCLWhen
delete L0::GlobalDriver;
}
TEST(DriverImpTest, givenEnableProgramDebuggingWithValue2AndEnabledExperimentalOpenCLWhenCreatingExecutionEnvironmentThenDebuggingEnabledIsFalse) {
TEST_F(DriverImpTest, givenEnableProgramDebuggingWithValue2AndEnabledExperimentalOpenCLWhenCreatingExecutionEnvironmentThenDebuggingEnabledIsFalse) {
DebugManagerStateRestore restorer;
NEO::HardwareInfo hwInfo = *NEO::defaultHwInfo.get();
hwInfo.capabilityTable.levelZeroSupported = true;
@ -658,7 +666,7 @@ TEST(DriverImpTest, givenEnableProgramDebuggingWithValue2AndEnabledExperimentalO
delete L0::GlobalDriver;
}
TEST(DriverImpTest, givenNoProgramDebuggingEnvVarWhenCreatingExecutionEnvironmentThenDebuggingEnabledIsFalse) {
TEST_F(DriverImpTest, givenNoProgramDebuggingEnvVarWhenCreatingExecutionEnvironmentThenDebuggingEnabledIsFalse) {
NEO::HardwareInfo hwInfo = *NEO::defaultHwInfo.get();
hwInfo.capabilityTable.levelZeroSupported = true;
@ -897,6 +905,7 @@ struct DriverHandleTest : public ::testing::Test {
driverHandle = whiteboxCast(DriverHandle::create(std::move(devices), envVariables, &returnValue));
L0::GlobalDriverHandle = driverHandle;
L0::driverCount = 1;
}
void TearDown() override {
delete driverHandle;
@ -904,8 +913,17 @@ struct DriverHandleTest : public ::testing::Test {
L0::GlobalDriverHandle = nullptr;
}
L0::DriverHandle *driverHandle;
VariableBackup<_ze_driver_handle_t *> globalDriverHandleBackup{&GlobalDriverHandle};
VariableBackup<uint32_t> driverCountBackup{&driverCount};
};
TEST(DriverHandleNegativeTest, givenNotInitializedDriverWhenZeDriverGetIsCalledThenReturnZeroCount) {
uint32_t count = 0u;
auto result = zeDriverGet(&count, nullptr);
EXPECT_EQ(ZE_RESULT_SUCCESS, result);
EXPECT_EQ(0U, count);
}
TEST_F(DriverHandleTest, givenInitializedDriverWhenZeDriverGetIsCalledThenDriverHandleCountIsObtained) {
uint32_t count = 0;
auto result = zeDriverGet(&count, nullptr);

View File

@ -25,6 +25,8 @@ add_executable(${TARGET_NAME}
target_sources(${TARGET_NAME} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
${NEO_SOURCE_DIR}/level_zero/core/test/common/ult_specific_config_l0.cpp
${NEO_SOURCE_DIR}/level_zero/core/test/common/ult_config_listener_l0.cpp
${NEO_SOURCE_DIR}/level_zero/core/test/common/ult_config_listener_l0.h
${NEO_SOURCE_DIR}/level_zero/core/test/unit_tests/mock.h
${NEO_SOURCE_DIR}/level_zero/core/test/unit_tests/white_box.h
${NEO_SOURCE_DIR}/level_zero/core/source/dll/create_builtin_functions_lib.cpp

View File

@ -25,6 +25,8 @@ add_executable(${TARGET_NAME}
target_sources(${TARGET_NAME} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
${NEO_SOURCE_DIR}/level_zero/core/test/common/ult_specific_config_l0.cpp
${NEO_SOURCE_DIR}/level_zero/core/test/common/ult_config_listener_l0.cpp
${NEO_SOURCE_DIR}/level_zero/core/test/common/ult_config_listener_l0.h
${NEO_SOURCE_DIR}/level_zero/core/test/unit_tests/mock.h
${NEO_SOURCE_DIR}/level_zero/core/test/unit_tests/white_box.h
${NEO_SOURCE_DIR}/level_zero/core/test/unit_tests/sources/builtin/create_ult_builtin_functions_lib.cpp