Skip to content

Commit d7ea713

Browse files
Jaime ArteagaCompute-Runtime-Automation
authored andcommitted
Revert "Initialize kernel immutable data when kernel is created"
This reverts commit a6ac100. Signed-off-by: Jaime Arteaga <[email protected]>
1 parent 1ba588d commit d7ea713

File tree

5 files changed

+39
-93
lines changed

5 files changed

+39
-93
lines changed

level_zero/core/source/kernel/kernel.h

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2019-2020 Intel Corporation
2+
* Copyright (C) 2019-2021 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -30,11 +30,10 @@ struct Device;
3030
struct Module;
3131

3232
struct KernelImmutableData {
33-
KernelImmutableData() = default;
34-
KernelImmutableData(L0::Device *l0device, NEO::KernelInfo *ki);
33+
KernelImmutableData(L0::Device *l0device = nullptr);
3534
virtual ~KernelImmutableData();
3635

37-
void initialize(Device *device,
36+
void initialize(NEO::KernelInfo *kernelInfo, Device *device,
3837
uint32_t computeUnitsUsedForSratch,
3938
NEO::GraphicsAllocation *globalConstBuffer, NEO::GraphicsAllocation *globalVarBuffer, bool internalKernel);
4039

@@ -66,7 +65,6 @@ struct KernelImmutableData {
6665

6766
protected:
6867
Device *device = nullptr;
69-
NEO::KernelInfo *kernelInfo = nullptr;
7068
NEO::KernelDescriptor *kernelDescriptor = nullptr;
7169
std::unique_ptr<NEO::GraphicsAllocation> isaGraphicsAllocation = nullptr;
7270
std::unique_ptr<NEO::GraphicsAllocation> privateMemoryGraphicsAllocation = nullptr;

level_zero/core/source/kernel/kernel_imp.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2019-2020 Intel Corporation
2+
* Copyright (C) 2019-2021 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -64,10 +64,7 @@ inline SamplerPatchValues getAddrMode(ze_sampler_address_mode_t addressingMode)
6464
return SamplerPatchValues::AddressNone;
6565
}
6666

67-
KernelImmutableData::KernelImmutableData(L0::Device *l0device, NEO::KernelInfo *ki) : device(l0device), kernelInfo(ki) {
68-
UNRECOVERABLE_IF(kernelInfo == nullptr);
69-
this->kernelDescriptor = &kernelInfo->kernelDescriptor;
70-
}
67+
KernelImmutableData::KernelImmutableData(L0::Device *l0device) : device(l0device) {}
7168

7269
KernelImmutableData::~KernelImmutableData() {
7370
if (nullptr != isaGraphicsAllocation) {
@@ -99,10 +96,14 @@ inline void patchWithImplicitSurface(ArrayRef<uint8_t> crossThreadData, ArrayRef
9996
}
10097
}
10198

102-
void KernelImmutableData::initialize(Device *device,
99+
void KernelImmutableData::initialize(NEO::KernelInfo *kernelInfo, Device *device,
103100
uint32_t computeUnitsUsedForSratch,
104101
NEO::GraphicsAllocation *globalConstBuffer,
105102
NEO::GraphicsAllocation *globalVarBuffer, bool internalKernel) {
103+
104+
UNRECOVERABLE_IF(kernelInfo == nullptr);
105+
this->kernelDescriptor = &kernelInfo->kernelDescriptor;
106+
106107
auto neoDevice = device->getNEODevice();
107108
auto memoryManager = device->getNEODevice()->getMemoryManager();
108109

level_zero/core/source/module/module_imp.cpp

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2019-2020 Intel Corporation
2+
* Copyright (C) 2019-2021 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -350,7 +350,10 @@ bool ModuleImp::initialize(const ze_module_desc_t *desc, NEO::Device *neoDevice)
350350

351351
kernelImmDatas.reserve(this->translationUnit->programInfo.kernelInfos.size());
352352
for (auto &ki : this->translationUnit->programInfo.kernelInfos) {
353-
std::unique_ptr<KernelImmutableData> kernelImmData{new KernelImmutableData(this->device, ki)};
353+
std::unique_ptr<KernelImmutableData> kernelImmData{new KernelImmutableData(this->device)};
354+
kernelImmData->initialize(ki, device, device->getNEODevice()->getDeviceInfo().computeUnitsUsedForScratch,
355+
this->translationUnit->globalConstBuffer, this->translationUnit->globalVarBuffer,
356+
this->type == ModuleType::Builtin);
354357
kernelImmDatas.push_back(std::move(kernelImmData));
355358
}
356359
this->maxGroupSize = static_cast<uint32_t>(this->translationUnit->device->getNEODevice()->getDeviceInfo().maxWorkGroupSize);
@@ -361,11 +364,6 @@ bool ModuleImp::initialize(const ze_module_desc_t *desc, NEO::Device *neoDevice)
361364
const KernelImmutableData *ModuleImp::getKernelImmutableData(const char *functionName) const {
362365
for (auto &kernelImmData : kernelImmDatas) {
363366
if (kernelImmData->getDescriptor().kernelMetadata.kernelName.compare(functionName) == 0) {
364-
if (kernelImmData->getIsaGraphicsAllocation() == nullptr) {
365-
kernelImmData->initialize(device, device->getNEODevice()->getDeviceInfo().computeUnitsUsedForScratch,
366-
this->translationUnit->globalConstBuffer, this->translationUnit->globalVarBuffer,
367-
this->type == ModuleType::Builtin);
368-
}
369367
return kernelImmData.get();
370368
}
371369
}

level_zero/core/test/unit_tests/sources/kernel/test_kernel.cpp

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2020 Intel Corporation
2+
* Copyright (C) 2020-2021 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -262,8 +262,8 @@ HWTEST_F(KernelPropertiesTests, whenInitializingThenCalculatesProperPrivateSurfa
262262
kernelAttributes.perHwThreadPrivateMemorySize = 0x100;
263263
kernelAttributes.simdSize = 8;
264264

265-
KernelImmutableData kernelImmutableData(device, &kernelInfo);
266-
kernelImmutableData.initialize(device, computeUnitsUsedForSratch, nullptr, nullptr, false);
265+
KernelImmutableData kernelImmutableData(device);
266+
kernelImmutableData.initialize(&kernelInfo, device, computeUnitsUsedForSratch, nullptr, nullptr, false);
267267

268268
size_t expectedSize = static_cast<size_t>(kernelAttributes.perHwThreadPrivateMemorySize) * computeUnitsUsedForSratch;
269269
EXPECT_GE(expectedSize, kernelImmutableData.getPrivateMemoryGraphicsAllocation()->getUnderlyingBufferSize());
@@ -488,12 +488,12 @@ TEST_F(KernelIsaTests, givenKernelAllocationInLocalMemoryWhenCreatingWithoutAllo
488488
kernelInfo.heapInfo.KernelHeapSize = 1;
489489
kernelInfo.heapInfo.pKernelHeap = &kernelHeap;
490490

491-
KernelImmutableData kernelImmutableData(device, &kernelInfo);
491+
KernelImmutableData kernelImmutableData(device);
492492

493493
auto bcsCsr = device->getNEODevice()->getEngine(aub_stream::EngineType::ENGINE_BCS, false, false).commandStreamReceiver;
494494
auto initialTaskCount = bcsCsr->peekTaskCount();
495495

496-
kernelImmutableData.initialize(device, 0, nullptr, nullptr, false);
496+
kernelImmutableData.initialize(&kernelInfo, device, 0, nullptr, nullptr, false);
497497

498498
if (kernelImmutableData.getIsaGraphicsAllocation()->isAllocatedInLocalMemoryPool()) {
499499
EXPECT_EQ(initialTaskCount + 1, bcsCsr->peekTaskCount());
@@ -514,12 +514,12 @@ TEST_F(KernelIsaTests, givenKernelAllocationInLocalMemoryWhenCreatingWithAllowed
514514
kernelInfo.heapInfo.KernelHeapSize = 1;
515515
kernelInfo.heapInfo.pKernelHeap = &kernelHeap;
516516

517-
KernelImmutableData kernelImmutableData(device, &kernelInfo);
517+
KernelImmutableData kernelImmutableData(device);
518518

519519
auto bcsCsr = device->getNEODevice()->getEngine(aub_stream::EngineType::ENGINE_BCS, false, false).commandStreamReceiver;
520520
auto initialTaskCount = bcsCsr->peekTaskCount();
521521

522-
kernelImmutableData.initialize(device, 0, nullptr, nullptr, false);
522+
kernelImmutableData.initialize(&kernelInfo, device, 0, nullptr, nullptr, false);
523523

524524
EXPECT_EQ(initialTaskCount, bcsCsr->peekTaskCount());
525525

@@ -538,12 +538,12 @@ TEST_F(KernelIsaTests, givenKernelAllocationInLocalMemoryWhenCreatingWithDisallo
538538
kernelInfo.heapInfo.KernelHeapSize = 1;
539539
kernelInfo.heapInfo.pKernelHeap = &kernelHeap;
540540

541-
KernelImmutableData kernelImmutableData(device, &kernelInfo);
541+
KernelImmutableData kernelImmutableData(device);
542542

543543
auto bcsCsr = device->getNEODevice()->getEngine(aub_stream::EngineType::ENGINE_BCS, false, false).commandStreamReceiver;
544544
auto initialTaskCount = bcsCsr->peekTaskCount();
545545

546-
kernelImmutableData.initialize(device, 0, nullptr, nullptr, false);
546+
kernelImmutableData.initialize(&kernelInfo, device, 0, nullptr, nullptr, false);
547547

548548
EXPECT_EQ(initialTaskCount, bcsCsr->peekTaskCount());
549549

@@ -556,9 +556,9 @@ TEST_F(KernelIsaTests, givenKernelInfoWhenInitializingImmutableDataWithInternalI
556556
kernelInfo.heapInfo.KernelHeapSize = 1;
557557
kernelInfo.heapInfo.pKernelHeap = &kernelHeap;
558558

559-
KernelImmutableData kernelImmutableData(device, &kernelInfo);
559+
KernelImmutableData kernelImmutableData(device);
560560

561-
kernelImmutableData.initialize(device, 0, nullptr, nullptr, true);
561+
kernelImmutableData.initialize(&kernelInfo, device, 0, nullptr, nullptr, true);
562562
EXPECT_EQ(NEO::GraphicsAllocation::AllocationType::KERNEL_ISA_INTERNAL, kernelImmutableData.getIsaGraphicsAllocation()->getAllocationType());
563563
}
564564

@@ -568,9 +568,9 @@ TEST_F(KernelIsaTests, givenKernelInfoWhenInitializingImmutableDataWithNonIntern
568568
kernelInfo.heapInfo.KernelHeapSize = 1;
569569
kernelInfo.heapInfo.pKernelHeap = &kernelHeap;
570570

571-
KernelImmutableData kernelImmutableData(device, &kernelInfo);
571+
KernelImmutableData kernelImmutableData(device);
572572

573-
kernelImmutableData.initialize(device, 0, nullptr, nullptr, false);
573+
kernelImmutableData.initialize(&kernelInfo, device, 0, nullptr, nullptr, false);
574574
EXPECT_EQ(NEO::GraphicsAllocation::AllocationType::KERNEL_ISA, kernelImmutableData.getIsaGraphicsAllocation()->getAllocationType());
575575
}
576576

@@ -580,15 +580,15 @@ TEST_F(KernelIsaTests, givenGlobalBuffersWhenCreatingKernelImmutableDataThenBuff
580580
kernelInfo.heapInfo.KernelHeapSize = 1;
581581
kernelInfo.heapInfo.pKernelHeap = &kernelHeap;
582582

583-
KernelImmutableData kernelImmutableData(device, &kernelInfo);
583+
KernelImmutableData kernelImmutableData(device);
584584

585585
uint64_t gpuAddress = 0x1200;
586586
void *buffer = reinterpret_cast<void *>(gpuAddress);
587587
size_t size = 0x1100;
588588
NEO::MockGraphicsAllocation globalVarBuffer(buffer, gpuAddress, size);
589589
NEO::MockGraphicsAllocation globalConstBuffer(buffer, gpuAddress, size);
590590

591-
kernelImmutableData.initialize(device, 0,
591+
kernelImmutableData.initialize(&kernelInfo, device, 0,
592592
&globalConstBuffer, &globalVarBuffer, false);
593593
auto &resCont = kernelImmutableData.getResidencyContainer();
594594
EXPECT_EQ(1, std::count(resCont.begin(), resCont.end(), &globalVarBuffer));
@@ -615,9 +615,9 @@ TEST_F(KernelIsaTests, givenDebugONAndKernelDegugInfoWhenInitializingImmutableDa
615615
MockDebugger *debugger = new MockDebugger(neoDevice);
616616

617617
neoDevice->getExecutionEnvironment()->rootDeviceEnvironments[0]->debugger.reset(static_cast<NEO::Debugger *>(debugger));
618-
KernelImmutableData kernelImmutableData(device, &kernelInfo);
618+
KernelImmutableData kernelImmutableData(device);
619619

620-
kernelImmutableData.initialize(device, 0, nullptr, nullptr, false);
620+
kernelImmutableData.initialize(&kernelInfo, device, 0, nullptr, nullptr, false);
621621
EXPECT_EQ(kernelInfo.kernelDescriptor.external.debugData->vIsaSize, static_cast<uint32_t>(123));
622622
}
623623

@@ -640,9 +640,9 @@ TEST_F(KernelIsaTests, givenDebugONAndNoKernelDegugInfoWhenInitializingImmutable
640640
MockDebugger *debugger = new MockDebugger(neoDevice);
641641

642642
neoDevice->getExecutionEnvironment()->rootDeviceEnvironments[0]->debugger.reset(static_cast<NEO::Debugger *>(debugger));
643-
KernelImmutableData kernelImmutableData(device, &kernelInfo);
643+
KernelImmutableData kernelImmutableData(device);
644644

645-
kernelImmutableData.initialize(device, 0, nullptr, nullptr, false);
645+
kernelImmutableData.initialize(&kernelInfo, device, 0, nullptr, nullptr, false);
646646
EXPECT_EQ(kernelInfo.kernelDescriptor.external.debugData, nullptr);
647647
}
648648

level_zero/core/test/unit_tests/sources/module/test_module.cpp

Lines changed: 5 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2020 Intel Corporation
2+
* Copyright (C) 2020-2021 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -76,56 +76,6 @@ HWTEST_F(ModuleTest, givenNonZeroCountWhenGettingKernelNamesThenNamesAreReturned
7676
EXPECT_EQ(ZE_RESULT_SUCCESS, result);
7777
}
7878

79-
HWTEST_F(ModuleTest, givenCallToGetKernelImmutableDataWithValidNameThenImutableDataIsReturned) {
80-
uint32_t count = 1;
81-
const char *kernelNames = nullptr;
82-
auto result = module->getKernelNames(&count, &kernelNames);
83-
EXPECT_EQ(ZE_RESULT_SUCCESS, result);
84-
85-
EXPECT_EQ(1u, count);
86-
EXPECT_STREQ(this->kernelName.c_str(), kernelNames);
87-
88-
auto kernelImmutableData = module->getKernelImmutableData(kernelNames);
89-
EXPECT_NE(nullptr, kernelImmutableData);
90-
}
91-
92-
HWTEST_F(ModuleTest, givenCallToGetKernelImmutableDataWithInvalidNameThenNullptrisReturned) {
93-
uint32_t count = 1;
94-
const char *kernelNames = nullptr;
95-
auto result = module->getKernelNames(&count, &kernelNames);
96-
EXPECT_EQ(ZE_RESULT_SUCCESS, result);
97-
98-
EXPECT_EQ(1u, count);
99-
EXPECT_STREQ(this->kernelName.c_str(), kernelNames);
100-
101-
auto kernelImmutableData = module->getKernelImmutableData("nonexistent_kernel");
102-
EXPECT_EQ(nullptr, kernelImmutableData);
103-
}
104-
105-
HWTEST_F(ModuleTest, givenTwoCallsToGetKernelImmutableDataThenKernelImmutableDataIsInitializedOnce) {
106-
uint32_t count = 1;
107-
const char *kernelNames = nullptr;
108-
auto result = module->getKernelNames(&count, &kernelNames);
109-
EXPECT_EQ(ZE_RESULT_SUCCESS, result);
110-
111-
EXPECT_EQ(1u, count);
112-
EXPECT_STREQ(this->kernelName.c_str(), kernelNames);
113-
114-
auto beforeKernelImmutableData = module->getKernelImmutableData(kernelNames);
115-
EXPECT_NE(nullptr, beforeKernelImmutableData);
116-
117-
auto beforeIsaAllocation = beforeKernelImmutableData->getIsaGraphicsAllocation();
118-
EXPECT_NE(nullptr, beforeIsaAllocation);
119-
120-
auto kernelImmutableData = module->getKernelImmutableData(kernelNames);
121-
EXPECT_NE(nullptr, kernelImmutableData);
122-
EXPECT_EQ(beforeKernelImmutableData, kernelImmutableData);
123-
124-
auto isaAllocation = kernelImmutableData->getIsaGraphicsAllocation();
125-
EXPECT_NE(nullptr, isaAllocation);
126-
EXPECT_EQ(beforeIsaAllocation, isaAllocation);
127-
}
128-
12979
HWTEST_F(ModuleTest, givenUserModuleTypeWhenCreatingModuleThenCorrectTypeIsSet) {
13080
WhiteBox<Module> module(device, nullptr, ModuleType::User);
13181
EXPECT_EQ(ModuleType::User, module.type);
@@ -522,11 +472,6 @@ TEST_F(ModuleDynamicLinkTests, givenModuleWithUnresolvedSymbolWhenTheOtherModule
522472
auto kernelInfo = std::make_unique<NEO::KernelInfo>();
523473
kernelInfo->heapInfo.pKernelHeap = kernelHeap;
524474
kernelInfo->heapInfo.KernelHeapSize = MemoryConstants::pageSize;
525-
526-
auto kernelImmData = std::make_unique<WhiteBox<::L0::KernelImmutableData>>(device, kernelInfo.get());
527-
kernelImmData->isaGraphicsAllocation.reset(neoDevice->getMemoryManager()->allocateGraphicsMemoryWithProperties(
528-
{device->getRootDeviceIndex(), MemoryConstants::pageSize, NEO::GraphicsAllocation::AllocationType::KERNEL_ISA, neoDevice->getDeviceBitfield()}));
529-
530475
module0->getTranslationUnit()->programInfo.kernelInfos.push_back(kernelInfo.release());
531476

532477
auto linkerInput = std::make_unique<::WhiteBox<NEO::LinkerInput>>();
@@ -536,6 +481,10 @@ TEST_F(ModuleDynamicLinkTests, givenModuleWithUnresolvedSymbolWhenTheOtherModule
536481
module0->unresolvedExternalsInfo.push_back({unresolvedRelocation});
537482
module0->unresolvedExternalsInfo[0].instructionsSegmentId = 0u;
538483

484+
auto kernelImmData = std::make_unique<WhiteBox<::L0::KernelImmutableData>>(device);
485+
kernelImmData->isaGraphicsAllocation.reset(neoDevice->getMemoryManager()->allocateGraphicsMemoryWithProperties(
486+
{device->getRootDeviceIndex(), MemoryConstants::pageSize, NEO::GraphicsAllocation::AllocationType::KERNEL_ISA, neoDevice->getDeviceBitfield()}));
487+
539488
auto isaPtr = kernelImmData->getIsaGraphicsAllocation()->getUnderlyingBuffer();
540489

541490
module0->kernelImmDatas.push_back(std::move(kernelImmData));

0 commit comments

Comments
 (0)