refactor: multicontext aub fixture api agnostic + improve createModuleFromFile

Signed-off-by: Bartosz Dunajski <bartosz.dunajski@intel.com>
This commit is contained in:
Bartosz Dunajski
2024-04-04 10:21:53 +00:00
committed by Compute-Runtime-Automation
parent 9468915768
commit a83f3f7bc1
19 changed files with 288 additions and 247 deletions

View File

@@ -23,41 +23,16 @@ namespace L0 {
namespace ult {
struct L0BindlessAub : Test<AUBFixtureL0> {
void SetUp() override {
debugManager.flags.UseBindlessMode.set(1);
debugManager.flags.UseExternalAllocatorForSshAndDsh.set(1);
AUBFixtureL0::setUp();
}
void TearDown() override {
module->destroy();
AUBFixtureL0::tearDown();
}
void createModuleFromFile(const std::string &fileName, ze_context_handle_t context, L0::Device *device) {
std::string testFile;
retrieveBinaryKernelFilenameApiSpecific(testFile, fileName + "_", ".bin");
size_t size = 0;
auto src = loadDataFromFile(
testFile.c_str(),
size);
ASSERT_NE(0u, size);
ASSERT_NE(nullptr, src);
ze_module_desc_t moduleDesc = {ZE_STRUCTURE_TYPE_MODULE_DESC};
moduleDesc.format = ZE_MODULE_FORMAT_NATIVE;
moduleDesc.pInputModule = reinterpret_cast<const uint8_t *>(src.get());
moduleDesc.inputSize = size;
moduleDesc.pBuildFlags = "";
module = new ModuleImp(device, nullptr, ModuleType::user);
ze_result_t result = ZE_RESULT_ERROR_MODULE_BUILD_FAILURE;
result = module->initialize(&moduleDesc, device->getNEODevice());
ASSERT_EQ(result, ZE_RESULT_SUCCESS);
}
DebugManagerStateRestore restorer;
ModuleImp *module = nullptr;
};
@@ -91,7 +66,7 @@ HWTEST_F(L0BindlessAub, DISABLED_GivenBindlessKernelWhenExecutedThenOutputIsCorr
dispatchTraits.groupCountY = groupCount[1];
dispatchTraits.groupCountZ = groupCount[2];
createModuleFromFile("bindless_stateful_copy_buffer", context, device);
createModuleFromFile("bindless_stateful_copy_buffer", context, device, "");
ze_kernel_handle_t kernel;
ze_kernel_desc_t kernelDesc = {ZE_STRUCTURE_TYPE_KERNEL_DESC};

View File

@@ -19,35 +19,8 @@
namespace L0 {
namespace ult {
struct AUBAppendKernelIndirectL0 : Test<AUBFixtureL0> {
using AUBAppendKernelIndirectL0 = Test<AUBFixtureL0>;
static ze_module_handle_t createModuleFromFile(const std::string &fileName, ze_context_handle_t context, ze_device_handle_t device) {
ze_module_handle_t moduleHandle;
std::string testFile;
retrieveBinaryKernelFilenameApiSpecific(testFile, fileName + "_", ".bin");
size_t size = 0;
auto src = loadDataFromFile(
testFile.c_str(),
size);
EXPECT_NE(0u, size);
EXPECT_NE(nullptr, src);
if (!src || size == 0) {
return nullptr;
}
ze_module_desc_t moduleDesc = {ZE_STRUCTURE_TYPE_MODULE_DESC};
moduleDesc.format = ZE_MODULE_FORMAT_NATIVE;
moduleDesc.pInputModule = reinterpret_cast<const uint8_t *>(src.get());
moduleDesc.inputSize = size;
moduleDesc.pBuildFlags = "";
EXPECT_EQ(ZE_RESULT_SUCCESS, zeModuleCreate(context, device, &moduleDesc, &moduleHandle, nullptr));
return moduleHandle;
}
};
TEST_F(AUBAppendKernelIndirectL0, whenAppendKernelIndirectThenGlobalWorkSizeIsProperlyProgrammed) {
const uint32_t groupSize[] = {1, 2, 3};
const uint32_t groupCount[] = {4, 3, 1};
@@ -72,7 +45,7 @@ TEST_F(AUBAppendKernelIndirectL0, whenAppendKernelIndirectThenGlobalWorkSizeIsPr
dispatchTraits.groupCountY = groupCount[1];
dispatchTraits.groupCountZ = groupCount[2];
ze_module_handle_t moduleHandle = createModuleFromFile("test_kernel", context, device);
ze_module_handle_t moduleHandle = createModuleFromFile("test_kernel", context, device, "");
ASSERT_NE(nullptr, moduleHandle);
ze_kernel_handle_t kernel;
@@ -117,7 +90,7 @@ TEST_F(AUBAppendKernelIndirectL0, whenAppendKernelIndirectThenGroupCountIsProper
dispatchTraits.groupCountY = groupCount[1];
dispatchTraits.groupCountZ = groupCount[2];
ze_module_handle_t moduleHandle = createModuleFromFile("test_kernel", context, device);
ze_module_handle_t moduleHandle = createModuleFromFile("test_kernel", context, device, "");
ASSERT_NE(nullptr, moduleHandle);
ze_kernel_handle_t kernel;
@@ -172,7 +145,7 @@ TEST_F(AUBAppendKernelIndirectL0, whenAppendMultipleKernelsIndirectThenGroupCoun
dispatchTraits[1].groupCountY = groupCount2[1];
dispatchTraits[1].groupCountZ = groupCount2[2];
ze_module_handle_t moduleHandle = createModuleFromFile("test_kernel", context, device);
ze_module_handle_t moduleHandle = createModuleFromFile("test_kernel", context, device, "");
ASSERT_NE(nullptr, moduleHandle);
ze_kernel_handle_t kernels[2];
@@ -230,7 +203,7 @@ TEST_F(AUBAppendKernelIndirectL0, whenAppendKernelIndirectThenWorkDimIsProperlyP
{{1, 1, 2}, {1, 1, 2}, 3}};
ze_command_list_handle_t cmdListHandle = commandList->toHandle();
ze_module_handle_t moduleHandle = createModuleFromFile("test_kernel", context, device);
ze_module_handle_t moduleHandle = createModuleFromFile("test_kernel", context, device, "");
ASSERT_NE(nullptr, moduleHandle);
ze_kernel_handle_t kernel;

View File

@@ -35,39 +35,10 @@ struct DebuggerAubFixture : AUBFixtureL0 {
AUBFixtureL0::setUp(NEO::defaultHwInfo.get(), true);
}
void tearDown() {
module->destroy();
AUBFixtureL0::tearDown();
}
void createModuleFromFile(const std::string &fileName, ze_context_handle_t context, L0::Device *device) {
std::string testFile;
retrieveBinaryKernelFilenameApiSpecific(testFile, fileName + "_", ".bin");
size_t size = 0;
auto src = loadDataFromFile(
testFile.c_str(),
size);
ASSERT_NE(0u, size);
ASSERT_NE(nullptr, src);
ze_module_desc_t moduleDesc = {ZE_STRUCTURE_TYPE_MODULE_DESC};
moduleDesc.format = ZE_MODULE_FORMAT_NATIVE;
moduleDesc.pInputModule = reinterpret_cast<const uint8_t *>(src.get());
moduleDesc.inputSize = size;
moduleDesc.pBuildFlags = "";
module = new ModuleImp(device, nullptr, ModuleType::user);
ze_result_t result = ZE_RESULT_ERROR_MODULE_BUILD_FAILURE;
result = module->initialize(&moduleDesc, device->getNEODevice());
ASSERT_EQ(result, ZE_RESULT_SUCCESS);
memoryManager = neoDevice->getMemoryManager();
gmmHelper = neoDevice->getGmmHelper();
rootDeviceIndex = neoDevice->getRootDeviceIndex();
}
DebugManagerStateRestore restorer;
ModuleImp *module = nullptr;
@@ -96,6 +67,10 @@ HWTEST2_F(DebuggerSingleAddressSpaceAub, GivenSingleAddressSpaceWhenCmdListIsExe
const uint32_t groupCount[] = {bufferSize / 32, 1, 1};
const uint32_t expectedSizes[] = {bufferSize, 1, 1};
memoryManager = neoDevice->getMemoryManager();
gmmHelper = neoDevice->getGmmHelper();
rootDeviceIndex = neoDevice->getRootDeviceIndex();
NEO::debugManager.flags.UpdateCrossThreadDataSize.set(true);
NEO::SVMAllocsManager::UnifiedMemoryProperties unifiedMemoryProperties(InternalMemoryType::hostUnifiedMemory,
@@ -116,7 +91,7 @@ HWTEST2_F(DebuggerSingleAddressSpaceAub, GivenSingleAddressSpaceWhenCmdListIsExe
dispatchTraits.groupCountY = groupCount[1];
dispatchTraits.groupCountZ = groupCount[2];
createModuleFromFile("test_kernel", context, device);
module = static_cast<L0::ModuleImp *>(Module::fromHandle(createModuleFromFile("test_kernel", context, device, "")));
ze_kernel_handle_t kernel;
ze_kernel_desc_t kernelDesc = {ZE_STRUCTURE_TYPE_KERNEL_DESC};

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2021-2023 Intel Corporation
* Copyright (C) 2021-2024 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -10,13 +10,17 @@
#include "shared/source/command_stream/aub_command_stream_receiver.h"
#include "shared/source/command_stream/tbx_command_stream_receiver_hw.h"
#include "shared/source/helpers/api_specific_config.h"
#include "shared/source/helpers/file_io.h"
#include "shared/source/helpers/gfx_core_helper.h"
#include "shared/source/helpers/hw_info.h"
#include "shared/test/common/helpers/test_files.h"
#include "shared/test/common/mocks/mock_device.h"
#include "shared/test/common/tests_configuration.h"
#include "level_zero/core/source/cmdqueue/cmdqueue.h"
#include "level_zero/core/source/context/context_imp.h"
#include "level_zero/core/source/device/device_imp.h"
#include "level_zero/core/source/module/module_imp.h"
#include "level_zero/core/test/unit_tests/mocks/mock_cmdlist.h"
#include "level_zero/core/test/unit_tests/mocks/mock_driver_handle.h"
@@ -89,4 +93,28 @@ void AUBFixtureL0::tearDown() {
pCmdq->destroy();
}
ze_module_handle_t AUBFixtureL0::createModuleFromFile(const std::string &fileName, ze_context_handle_t context, ze_device_handle_t device, const std::string &buildFlags) {
ze_module_handle_t moduleHandle;
std::string testFile;
retrieveBinaryKernelFilenameApiSpecific(testFile, fileName + "_", ".bin");
size_t size = 0;
auto src = loadDataFromFile(testFile.c_str(), size);
EXPECT_NE(0u, size);
EXPECT_NE(nullptr, src);
if (!src || size == 0) {
return nullptr;
}
ze_module_desc_t moduleDesc = {ZE_STRUCTURE_TYPE_MODULE_DESC};
moduleDesc.format = ZE_MODULE_FORMAT_NATIVE;
moduleDesc.pInputModule = reinterpret_cast<const uint8_t *>(src.get());
moduleDesc.inputSize = size;
moduleDesc.pBuildFlags = buildFlags.data();
EXPECT_EQ(ZE_RESULT_SUCCESS, zeModuleCreate(context, device, &moduleDesc, &moduleHandle, nullptr));
return moduleHandle;
}
} // namespace L0

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2021-2023 Intel Corporation
* Copyright (C) 2021-2024 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -15,6 +15,7 @@
#include "shared/test/common/helpers/variable_backup.h"
#include "level_zero/core/test/unit_tests/mock.h"
#include <level_zero/zes_api.h>
#include "test_mode.h"
@@ -100,6 +101,8 @@ class AUBFixtureL0 {
}
}
ze_module_handle_t createModuleFromFile(const std::string &fileName, ze_context_handle_t context, ze_device_handle_t device, const std::string &buildFlags);
std::string aubFileName;
std::unique_ptr<VariableBackup<NEO::UltHwConfig>> backupUltConfig;