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-15 09:12:53 +00:00
committed by Compute-Runtime-Automation
parent 961a8d91d0
commit 78b01e25d3
10 changed files with 100 additions and 23 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;
@@ -70,26 +70,25 @@ void DriverImp::initialize(ze_result_t *result) {
if (!neoDevices.empty()) {
GlobalDriverHandle = DriverHandle::create(std::move(neoDevices), envVariables, result);
if (GlobalDriverHandle != nullptr) {
driverCount = 1;
*result = ZE_RESULT_SUCCESS;
if (envVariables.metrics) {
*result = MetricDeviceContext::enableMetricApi();
if (*result != ZE_RESULT_SUCCESS) {
delete GlobalDriver;
GlobalDriverHandle = nullptr;
GlobalDriver = nullptr;
}
}
if ((*result == ZE_RESULT_SUCCESS) && envVariables.pin) {
std::string gtpinFuncName{"OpenGTPin"};
if (false == NEO::PinContext::init(gtpinFuncName)) {
*result = ZE_RESULT_ERROR_DEPENDENCY_UNAVAILABLE;
delete GlobalDriver;
GlobalDriverHandle = nullptr;
GlobalDriver = nullptr;
}
}
if (*result != ZE_RESULT_SUCCESS) {
delete GlobalDriver;
GlobalDriverHandle = nullptr;
GlobalDriver = nullptr;
driverCount = 0;
}
}
}
}

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

@@ -416,7 +416,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;
@@ -434,7 +439,7 @@ TEST(DriverImpTest, givenDriverImpWhenInitializedThenEnvVariablesAreRead) {
L0::GlobalDriver = nullptr;
}
TEST(DriverImpTest, givenMissingMetricApiDependenciesWhenInitializingDriverImpThenGlobalDriverHandleIsNull) {
TEST_F(DriverImpTest, givenMissingMetricApiDependenciesWhenInitializingDriverImpThenGlobalDriverHandleIsNull) {
NEO::HardwareInfo hwInfo = *NEO::defaultHwInfo.get();
hwInfo.capabilityTable.levelZeroSupported = true;
@@ -458,7 +463,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;
@@ -480,7 +485,7 @@ TEST(DriverImpTest, givenEnabledProgramDebuggingWhenCreatingExecutionEnvironment
L0::GlobalDriver = nullptr;
}
TEST(DriverImpTest, whenCreatingExecutionEnvironmentThenDefaultHierarchyIsEnabled) {
TEST_F(DriverImpTest, whenCreatingExecutionEnvironmentThenDefaultHierarchyIsEnabled) {
NEO::HardwareInfo hwInfo = *NEO::defaultHwInfo.get();
hwInfo.capabilityTable.levelZeroSupported = true;
@@ -503,7 +508,7 @@ TEST(DriverImpTest, whenCreatingExecutionEnvironmentThenDefaultHierarchyIsEnable
L0::GlobalDriver = nullptr;
}
TEST(DriverImpTest, givenFlatDeviceHierarchyWhenCreatingExecutionEnvironmentThenFlatHierarchyIsEnabled) {
TEST_F(DriverImpTest, givenFlatDeviceHierarchyWhenCreatingExecutionEnvironmentThenFlatHierarchyIsEnabled) {
NEO::HardwareInfo hwInfo = *NEO::defaultHwInfo.get();
hwInfo.capabilityTable.levelZeroSupported = true;
@@ -525,7 +530,7 @@ TEST(DriverImpTest, givenFlatDeviceHierarchyWhenCreatingExecutionEnvironmentThen
L0::GlobalDriver = nullptr;
}
TEST(DriverImpTest, givenCompositeDeviceHierarchyWhenCreatingExecutionEnvironmentThenCompositeHierarchyIsEnabled) {
TEST_F(DriverImpTest, givenCompositeDeviceHierarchyWhenCreatingExecutionEnvironmentThenCompositeHierarchyIsEnabled) {
NEO::HardwareInfo hwInfo = *NEO::defaultHwInfo.get();
hwInfo.capabilityTable.levelZeroSupported = true;
@@ -547,7 +552,7 @@ TEST(DriverImpTest, givenCompositeDeviceHierarchyWhenCreatingExecutionEnvironmen
L0::GlobalDriver = nullptr;
}
TEST(DriverImpTest, givenCombinedDeviceHierarchyWhenCreatingExecutionEnvironmentThenCombinedHierarchyIsEnabled) {
TEST_F(DriverImpTest, givenCombinedDeviceHierarchyWhenCreatingExecutionEnvironmentThenCombinedHierarchyIsEnabled) {
NEO::HardwareInfo hwInfo = *NEO::defaultHwInfo.get();
hwInfo.capabilityTable.levelZeroSupported = true;
@@ -569,7 +574,7 @@ TEST(DriverImpTest, givenCombinedDeviceHierarchyWhenCreatingExecutionEnvironment
L0::GlobalDriver = nullptr;
}
TEST(DriverImpTest, givenEnableProgramDebuggingWithValue2WhenCreatingExecutionEnvironmentThenDebuggingEnabledIsTrue) {
TEST_F(DriverImpTest, givenEnableProgramDebuggingWithValue2WhenCreatingExecutionEnvironmentThenDebuggingEnabledIsTrue) {
NEO::HardwareInfo hwInfo = *NEO::defaultHwInfo.get();
hwInfo.capabilityTable.levelZeroSupported = true;
@@ -591,7 +596,7 @@ TEST(DriverImpTest, givenEnableProgramDebuggingWithValue2WhenCreatingExecutionEn
L0::GlobalDriver = nullptr;
}
TEST(DriverImpTest, givenEnabledFP64EmulationWhenCreatingExecutionEnvironmentThenFP64EmulationIsEnabled) {
TEST_F(DriverImpTest, givenEnabledFP64EmulationWhenCreatingExecutionEnvironmentThenFP64EmulationIsEnabled) {
NEO::HardwareInfo hwInfo = *NEO::defaultHwInfo.get();
hwInfo.capabilityTable.levelZeroSupported = true;
@@ -613,8 +618,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;
@@ -637,7 +645,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;
@@ -661,7 +669,7 @@ TEST(DriverImpTest, givenEnableProgramDebuggingWithValue2AndEnabledExperimentalO
delete L0::GlobalDriver;
}
TEST(DriverImpTest, givenNoProgramDebuggingEnvVarWhenCreatingExecutionEnvironmentThenDebuggingEnabledIsFalse) {
TEST_F(DriverImpTest, givenNoProgramDebuggingEnvVarWhenCreatingExecutionEnvironmentThenDebuggingEnabledIsFalse) {
NEO::HardwareInfo hwInfo = *NEO::defaultHwInfo.get();
hwInfo.capabilityTable.levelZeroSupported = true;
@@ -900,6 +908,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;
@@ -907,8 +916,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