Skip to content

Commit 497e5a4

Browse files
Zebin: Create mock zebin module for L0 common test module
Signed-off-by: Kacper Nowak <[email protected]>
1 parent 8da78d3 commit 497e5a4

25 files changed

+657
-491
lines changed

level_zero/core/test/unit_tests/fixtures/module_fixture.h

Lines changed: 23 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212
#include "shared/source/helpers/file_io.h"
1313
#include "shared/source/memory_manager/allocation_properties.h"
1414
#include "shared/source/program/kernel_info.h"
15-
#include "shared/test/common/device_binary_format/zebin_tests.h"
1615
#include "shared/test/common/helpers/debug_manager_state_restore.h"
1716
#include "shared/test/common/helpers/test_files.h"
1817
#include "shared/test/common/mocks/mock_compilers.h"
1918
#include "shared/test/common/mocks/mock_graphics_allocation.h"
2019
#include "shared/test/common/mocks/mock_memory_manager.h"
20+
#include "shared/test/common/mocks/mock_modules_zebin.h"
2121

2222
#include "level_zero/core/source/module/module.h"
2323
#include "level_zero/core/source/module/module_imp.h"
@@ -156,22 +156,15 @@ struct ModuleImmutableDataFixture : public DeviceFixture {
156156
DeviceFixture::setupWithExecutionEnvironment(*executionEnvironment);
157157
}
158158

159-
void createModuleFromBinary(uint32_t perHwThreadPrivateMemorySize, bool isInternal, MockImmutableData *mockKernelImmData) {
160-
std::string testFile;
161-
retrieveBinaryKernelFilenameApiSpecific(testFile, binaryFilename + "_", ".bin");
162-
163-
size_t size = 0;
164-
auto src = loadDataFromFile(
165-
testFile.c_str(),
166-
size);
167-
168-
ASSERT_NE(0u, size);
169-
ASSERT_NE(nullptr, src);
159+
void createModuleFromMockBinary(uint32_t perHwThreadPrivateMemorySize, bool isInternal, MockImmutableData *mockKernelImmData,
160+
std::initializer_list<ZebinTestData::appendElfAdditionalSection> additionalSections = {}) {
161+
zebinData = std::make_unique<ZebinTestData::ZebinWithL0TestCommonModule>(device->getHwInfo(), additionalSections);
162+
const auto &src = zebinData->storage;
170163

171164
ze_module_desc_t moduleDesc = {};
172165
moduleDesc.format = ZE_MODULE_FORMAT_NATIVE;
173-
moduleDesc.pInputModule = reinterpret_cast<const uint8_t *>(src.get());
174-
moduleDesc.inputSize = size;
166+
moduleDesc.pInputModule = reinterpret_cast<const uint8_t *>(src.data());
167+
moduleDesc.inputSize = src.size();
175168

176169
ModuleBuildLog *moduleBuildLog = nullptr;
177170

@@ -201,32 +194,25 @@ struct ModuleImmutableDataFixture : public DeviceFixture {
201194
const std::string kernelName = "test";
202195
const uint32_t numKernelArguments = 6;
203196
std::unique_ptr<MockModule> module;
197+
std::unique_ptr<ZebinTestData::ZebinWithL0TestCommonModule> zebinData;
204198
MockImmutableMemoryManager *memoryManager;
205199
};
206200

207201
struct ModuleFixture : public DeviceFixture {
208202
void setUp() {
209203
NEO::MockCompilerEnableGuard mock(true);
210204
DeviceFixture::setUp();
211-
createModuleFromBinary();
205+
createModuleFromMockBinary();
212206
}
213207

214-
void createModuleFromBinary(ModuleType type = ModuleType::User) {
215-
std::string testFile;
216-
retrieveBinaryKernelFilenameApiSpecific(testFile, binaryFilename + "_", ".bin");
217-
218-
size_t size = 0;
219-
auto src = loadDataFromFile(
220-
testFile.c_str(),
221-
size);
222-
223-
ASSERT_NE(0u, size);
224-
ASSERT_NE(nullptr, src);
208+
void createModuleFromMockBinary(ModuleType type = ModuleType::User) {
209+
zebinData = std::make_unique<ZebinTestData::ZebinWithL0TestCommonModule>(device->getHwInfo());
210+
const auto &src = zebinData->storage;
225211

226212
ze_module_desc_t moduleDesc = {};
227213
moduleDesc.format = ZE_MODULE_FORMAT_NATIVE;
228-
moduleDesc.pInputModule = reinterpret_cast<const uint8_t *>(src.get());
229-
moduleDesc.inputSize = size;
214+
moduleDesc.pInputModule = reinterpret_cast<const uint8_t *>(src.data());
215+
moduleDesc.inputSize = src.size();
230216

231217
ModuleBuildLog *moduleBuildLog = nullptr;
232218

@@ -248,11 +234,11 @@ struct ModuleFixture : public DeviceFixture {
248234
DeviceFixture::tearDown();
249235
}
250236

251-
const std::string binaryFilename = "test_kernel";
252237
const std::string kernelName = "test";
253238
const uint32_t numKernelArguments = 6;
254239
std::unique_ptr<L0::Module> module;
255240
std::unique_ptr<WhiteBox<::L0::Kernel>> kernel;
241+
std::unique_ptr<ZebinTestData::ZebinWithL0TestCommonModule> zebinData;
256242
};
257243

258244
struct MultiDeviceModuleFixture : public MultiDeviceFixture {
@@ -261,24 +247,18 @@ struct MultiDeviceModuleFixture : public MultiDeviceFixture {
261247
modules.resize(numRootDevices);
262248
}
263249

264-
void createModuleFromBinary(uint32_t rootDeviceIndex) {
265-
std::string testFile;
266-
retrieveBinaryKernelFilenameApiSpecific(testFile, binaryFilename + "_", ".bin");
267-
268-
size_t size = 0;
269-
auto src = loadDataFromFile(testFile.c_str(), size);
270-
271-
ASSERT_NE(0u, size);
272-
ASSERT_NE(nullptr, src);
250+
void createModuleFromMockBinary(uint32_t rootDeviceIndex) {
251+
auto device = driverHandle->devices[rootDeviceIndex];
252+
zebinData = std::make_unique<ZebinTestData::ZebinWithL0TestCommonModule>(device->getHwInfo());
253+
const auto &src = zebinData->storage;
273254

274255
ze_module_desc_t moduleDesc = {};
275256
moduleDesc.format = ZE_MODULE_FORMAT_NATIVE;
276-
moduleDesc.pInputModule = reinterpret_cast<const uint8_t *>(src.get());
277-
moduleDesc.inputSize = size;
257+
moduleDesc.pInputModule = reinterpret_cast<const uint8_t *>(src.data());
258+
moduleDesc.inputSize = src.size();
278259

279260
ModuleBuildLog *moduleBuildLog = nullptr;
280261

281-
auto device = driverHandle->devices[rootDeviceIndex];
282262
modules[rootDeviceIndex].reset(Module::create(device,
283263
&moduleDesc,
284264
moduleBuildLog, ModuleType::User));
@@ -301,11 +281,11 @@ struct MultiDeviceModuleFixture : public MultiDeviceFixture {
301281
MultiDeviceFixture::tearDown();
302282
}
303283

304-
const std::string binaryFilename = "test_kernel";
305284
const std::string kernelName = "test";
306285
const uint32_t numKernelArguments = 6;
307286
std::vector<std::unique_ptr<L0::Module>> modules;
308287
std::unique_ptr<WhiteBox<::L0::Kernel>> kernel;
288+
std::unique_ptr<ZebinTestData::ZebinWithL0TestCommonModule> zebinData;
309289
};
310290

311291
struct ModuleWithZebinFixture : public DeviceFixture {
@@ -428,7 +408,7 @@ struct MultiTileModuleFixture : public MultiDeviceModuleFixture {
428408
MultiDeviceFixture::numSubDevices = 2u;
429409

430410
MultiDeviceModuleFixture::setUp();
431-
createModuleFromBinary(0);
411+
createModuleFromMockBinary(0);
432412

433413
device = driverHandle->devices[0];
434414
}

level_zero/core/test/unit_tests/fixtures/multi_tile_fixture.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ void MultiTileCommandListAppendLaunchFunctionFixture::setUp() {
1919
MultiDeviceFixture::numSubDevices = 4u;
2020

2121
MultiDeviceModuleFixture::setUp();
22-
createModuleFromBinary(0u);
22+
createModuleFromMockBinary(0u);
2323
createKernel(0u);
2424

2525
device = driverHandle->devices[0];
@@ -49,7 +49,7 @@ void MultiTileImmediateCommandListAppendLaunchFunctionFixture::setUp() {
4949
MultiDeviceFixture::numSubDevices = 2u;
5050

5151
MultiDeviceModuleFixture::setUp();
52-
createModuleFromBinary(0u);
52+
createModuleFromMockBinary(0u);
5353
createKernel(0u);
5454

5555
device = driverHandle->devices[0];

level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_7.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -475,7 +475,7 @@ HWTEST2_F(CmdlistAppendLaunchKernelTests,
475475
auto kernelDescriptor = mockKernelImmData->kernelDescriptor;
476476
kernelDescriptor->kernelAttributes.flags.requiresImplicitArgs = false;
477477
kernelDescriptor->kernelAttributes.perThreadScratchSize[0] = scratchPerThreadSize;
478-
createModuleFromBinary(0u, false, mockKernelImmData.get());
478+
createModuleFromMockBinary(0u, false, mockKernelImmData.get());
479479

480480
auto kernel = std::make_unique<MockKernel>(module.get());
481481

@@ -518,7 +518,7 @@ HWTEST2_F(CmdlistAppendLaunchKernelTests,
518518
kernelDescriptor->kernelAttributes.flags.requiresImplicitArgs = false;
519519
kernelDescriptor->kernelAttributes.perThreadScratchSize[0] = scratchPerThreadSize;
520520
kernelDescriptor->kernelAttributes.perThreadScratchSize[1] = privateScratchPerThreadSize;
521-
createModuleFromBinary(0u, false, mockKernelImmData.get());
521+
createModuleFromMockBinary(0u, false, mockKernelImmData.get());
522522

523523
auto kernel = std::make_unique<MockKernel>(module.get());
524524

level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_launch_kernel_2.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -958,7 +958,7 @@ struct CmdlistAppendLaunchKernelWithImplicitArgsTests : CmdlistAppendLaunchKerne
958958
kernelDescriptor->kernelAttributes.workgroupDimensionsOrder[0] = workgroupDimOrder[0];
959959
kernelDescriptor->kernelAttributes.workgroupDimensionsOrder[1] = workgroupDimOrder[1];
960960
kernelDescriptor->kernelAttributes.workgroupDimensionsOrder[2] = workgroupDimOrder[2];
961-
createModuleFromBinary(0u, false, mockKernelImmData.get());
961+
createModuleFromMockBinary(0u, false, mockKernelImmData.get());
962962

963963
auto kernel = std::make_unique<MockKernel>(module.get());
964964

@@ -1108,7 +1108,7 @@ HWTEST_F(CmdlistAppendLaunchKernelTests, givenKernelWithoutImplicitArgsWhenAppen
11081108
std::unique_ptr<MockImmutableData> mockKernelImmData = std::make_unique<MockImmutableData>(0u);
11091109
auto kernelDescriptor = mockKernelImmData->kernelDescriptor;
11101110
kernelDescriptor->kernelAttributes.flags.requiresImplicitArgs = false;
1111-
createModuleFromBinary(0u, false, mockKernelImmData.get());
1111+
createModuleFromMockBinary(0u, false, mockKernelImmData.get());
11121112

11131113
auto kernel = std::make_unique<MockKernel>(module.get());
11141114

@@ -1146,7 +1146,7 @@ HWTEST2_F(CmdlistAppendLaunchKernelTests, givenKernelWitchScratchAndPrivateWhenA
11461146
kernelDescriptor->kernelAttributes.flags.requiresImplicitArgs = false;
11471147
kernelDescriptor->kernelAttributes.perThreadScratchSize[0] = 0x200;
11481148
kernelDescriptor->kernelAttributes.perThreadScratchSize[1] = 0x100;
1149-
createModuleFromBinary(0u, false, mockKernelImmData.get());
1149+
createModuleFromMockBinary(0u, false, mockKernelImmData.get());
11501150

11511151
auto kernel = std::make_unique<MockKernel>(module.get());
11521152

level_zero/core/test/unit_tests/sources/debugger/test_module_with_debug.cpp

Lines changed: 19 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -793,36 +793,32 @@ HWTEST_F(NotifyModuleLoadTest, givenDebuggingEnabledWhenModuleIsCreatedAndFullyL
793793
auto debugger = MockDebuggerL0Hw<FamilyType>::allocate(neoDevice);
794794
neoDevice->getExecutionEnvironment()->rootDeviceEnvironments[0]->debugger.reset(debugger);
795795

796-
std::string testFile;
797-
retrieveBinaryKernelFilenameApiSpecific(testFile, binaryFilename + "_", ".bin");
798-
799-
size_t size = 0;
800-
auto src = loadDataFromFile(testFile.c_str(), size);
801-
802-
ASSERT_NE(0u, size);
803-
ASSERT_NE(nullptr, src);
796+
auto elfAdditionalSections = {ZebinTestData::appendElfAdditionalSection::CONSTANT}; //for const surface allocation copy
797+
auto zebinData = std::make_unique<ZebinTestData::ZebinWithL0TestCommonModule>(device->getHwInfo(), elfAdditionalSections);
798+
const auto &src = zebinData->storage;
804799

805800
ze_module_desc_t moduleDesc = {};
806801
moduleDesc.format = ZE_MODULE_FORMAT_NATIVE;
807-
moduleDesc.pInputModule = reinterpret_cast<const uint8_t *>(src.get());
808-
moduleDesc.inputSize = size;
802+
moduleDesc.pInputModule = reinterpret_cast<const uint8_t *>(src.data());
803+
moduleDesc.inputSize = src.size();
809804

810805
ModuleBuildLog *moduleBuildLog = nullptr;
811806
neoDevice->executionEnvironment->rootDeviceEnvironments[0]->osInterface.reset(nullptr);
812807

813-
auto module = std::unique_ptr<L0::ModuleImp>(new L0::ModuleImp(device, moduleBuildLog, ModuleType::User));
808+
auto module = std::make_unique<WhiteBox<::L0::Module>>(device, moduleBuildLog, ModuleType::User);
814809
ASSERT_NE(nullptr, module.get());
815810

816811
memoryOperationsHandler->makeResidentCalledCount = 0;
817812

813+
auto linkerInput = std::make_unique<::WhiteBox<NEO::LinkerInput>>();
814+
linkerInput->traits.requiresPatchingOfInstructionSegments = true;
815+
module->translationUnit->programInfo.linkerInput = std::move(linkerInput);
818816
module->initialize(&moduleDesc, neoDevice);
819817

820818
auto numIsaAllocations = static_cast<int>(module->getKernelImmutableDataVector().size());
821819

822-
auto expectedMakeResidentCallsCount = numIsaAllocations + 1; // const surface
823-
if (module->getTranslationUnit()->programInfo.linkerInput) {
824-
expectedMakeResidentCallsCount += numIsaAllocations;
825-
}
820+
auto expectedMakeResidentCallsCount = numIsaAllocations + 1; //const surface
821+
expectedMakeResidentCallsCount += numIsaAllocations;
826822

827823
EXPECT_EQ(expectedMakeResidentCallsCount, memoryOperationsHandler->makeResidentCalledCount);
828824

@@ -855,19 +851,13 @@ HWTEST_F(NotifyModuleLoadTest, givenDebuggingEnabledWhenModuleWithUnresolvedSymb
855851
auto debugger = MockDebuggerL0Hw<FamilyType>::allocate(neoDevice);
856852
neoDevice->getExecutionEnvironment()->rootDeviceEnvironments[0]->debugger.reset(debugger);
857853

858-
std::string testFile;
859-
retrieveBinaryKernelFilenameApiSpecific(testFile, binaryFilename + "_", ".bin");
860-
861-
size_t size = 0;
862-
auto src = loadDataFromFile(testFile.c_str(), size);
863-
864-
ASSERT_NE(0u, size);
865-
ASSERT_NE(nullptr, src);
854+
auto zebinData = std::make_unique<ZebinTestData::ZebinWithL0TestCommonModule>(device->getHwInfo());
855+
const auto &src = zebinData->storage;
866856

867857
ze_module_desc_t moduleDesc = {};
868858
moduleDesc.format = ZE_MODULE_FORMAT_NATIVE;
869-
moduleDesc.pInputModule = reinterpret_cast<const uint8_t *>(src.get());
870-
moduleDesc.inputSize = size;
859+
moduleDesc.pInputModule = reinterpret_cast<const uint8_t *>(src.data());
860+
moduleDesc.inputSize = src.size();
871861

872862
ModuleBuildLog *moduleBuildLog = nullptr;
873863

@@ -909,19 +899,13 @@ HWTEST_F(NotifyModuleLoadTest, givenDebuggingEnabledWhenModuleWithUnresolvedSymb
909899
auto debugger = MockDebuggerL0Hw<FamilyType>::allocate(neoDevice);
910900
neoDevice->getExecutionEnvironment()->rootDeviceEnvironments[0]->debugger.reset(debugger);
911901

912-
std::string testFile;
913-
retrieveBinaryKernelFilenameApiSpecific(testFile, binaryFilename + "_", ".bin");
914-
915-
size_t size = 0;
916-
auto src = loadDataFromFile(testFile.c_str(), size);
917-
918-
ASSERT_NE(0u, size);
919-
ASSERT_NE(nullptr, src);
902+
auto zebinData = std::make_unique<ZebinTestData::ZebinWithL0TestCommonModule>(device->getHwInfo());
903+
const auto &src = zebinData->storage;
920904

921905
ze_module_desc_t moduleDesc = {};
922906
moduleDesc.format = ZE_MODULE_FORMAT_NATIVE;
923-
moduleDesc.pInputModule = reinterpret_cast<const uint8_t *>(src.get());
924-
moduleDesc.inputSize = size;
907+
moduleDesc.pInputModule = reinterpret_cast<const uint8_t *>(src.data());
908+
moduleDesc.inputSize = src.size();
925909

926910
ModuleBuildLog *moduleBuildLog = nullptr;
927911

0 commit comments

Comments
 (0)