From e345d55fe50b6a8c41138516da57b1e3fbc9bfa0 Mon Sep 17 00:00:00 2001 From: Mateusz Hoppe Date: Mon, 5 May 2025 11:36:29 +0000 Subject: [PATCH] fix: correctly patch implicit arg buffer in indirect data - use correct size alignment of implicit arg buffer, crosshtread data should start after the buffer without extra padding Related-To: NEO-14449 Signed-off-by: Mateusz Hoppe --- .../test_cmdlist_append_launch_kernel_2.cpp | 10 +++++----- .../test_cmdlist_append_launch_kernel_3.cpp | 2 +- ...b_inline_data_local_id_tests_xehp_and_later.cpp | 2 +- .../helpers/hardware_commands_helper_tests.cpp | 14 +++++++------- shared/source/compiler_interface/linker.cpp | 4 ++-- shared/source/kernel/definitions/implicit_args.h | 14 ++++++++++++++ shared/source/kernel/implicit_args_helper.cpp | 11 ++--------- .../common/helpers/implicit_args_test_helper.h | 4 ++-- .../unit_test/compiler_interface/linker_tests.cpp | 2 +- .../kernel/implicit_args_helper_tests.cpp | 14 +++++++++----- 10 files changed, 44 insertions(+), 33 deletions(-) diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_launch_kernel_2.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_launch_kernel_2.cpp index cf0b4c7118..65b5fce1b5 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_launch_kernel_2.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_launch_kernel_2.cpp @@ -924,11 +924,11 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, CmdlistAppendLaunchKernelWithImplicitArgsTests, giv auto grfSize = ImplicitArgsHelper::getGrfSize(expectedImplicitArgs.simdWidth); auto numGrf = GrfConfig::defaultGrfNumber; - auto expectedLocalIds = alignedMalloc(implicitArgsProgrammingSize - ImplicitArgsV0::getSize(), MemoryConstants::cacheLineSize); + auto expectedLocalIds = alignedMalloc(implicitArgsProgrammingSize - ImplicitArgsV0::getAlignedSize(), MemoryConstants::cacheLineSize); const auto &rootDeviceEnvironment = device->getNEODevice()->getRootDeviceEnvironment(); generateLocalIDs(expectedLocalIds, expectedImplicitArgs.simdWidth, localSize, workgroupDimOrder, false, grfSize, numGrf, rootDeviceEnvironment); - auto localIdsProgrammingSize = implicitArgsProgrammingSize - ImplicitArgsV0::getSize(); + auto localIdsProgrammingSize = implicitArgsProgrammingSize - ImplicitArgsV0::getAlignedSize(); size_t sizeForLocalIds = NEO::PerThreadDataHelper::getPerThreadDataSizeTotal(expectedImplicitArgs.simdWidth, grfSize, numGrf, 3u, totalLocalSize, !kernelRequiresGenerationOfLocalIdsByRuntime, rootDeviceEnvironment); EXPECT_EQ(0, memcmp(expectedLocalIds, indirectHeapAllocation->getUnderlyingBuffer(), sizeForLocalIds)); @@ -944,7 +944,7 @@ HWCMDTEST_F(IGFX_GEN12LP_CORE, CmdlistAppendLaunchKernelWithImplicitArgsTests, g auto implicitArgsInIndirectData = indirectHeapAllocation->getUnderlyingBuffer(); EXPECT_EQ(0, memcmp(implicitArgsInIndirectData, &expectedImplicitArgs, ImplicitArgsV0::getSize())); - auto crossThreadDataInIndirectData = ptrOffset(indirectHeapAllocation->getUnderlyingBuffer(), alignUp(ImplicitArgsV0::getSize(), 64)); + auto crossThreadDataInIndirectData = ptrOffset(indirectHeapAllocation->getUnderlyingBuffer(), ImplicitArgsV0::getAlignedSize()); auto programmedImplicitArgsGpuVA = reinterpret_cast(crossThreadDataInIndirectData)[0]; EXPECT_EQ(indirectHeapAllocation->getGpuAddress(), programmedImplicitArgsGpuVA); @@ -975,7 +975,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, CmdlistAppendLaunchKernelWithImplicitArgsTests, giv const auto &rootDeviceEnvironment = device->getNEODevice()->getRootDeviceEnvironment(); generateLocalIDs(expectedLocalIds, expectedImplicitArgs.simdWidth, localSize, expectedDimOrder, false, grfSize, numGrf, rootDeviceEnvironment); - auto localIdsProgrammingSize = implicitArgsProgrammingSize - ImplicitArgsV0::getSize(); + auto localIdsProgrammingSize = implicitArgsProgrammingSize - ImplicitArgsV0::getAlignedSize(); size_t sizeForLocalIds = NEO::PerThreadDataHelper::getPerThreadDataSizeTotal(expectedImplicitArgs.simdWidth, grfSize, numGrf, 3u, totalLocalSize, !kernelRequiresGenerationOfLocalIdsByRuntime, rootDeviceEnvironment); EXPECT_EQ(0, memcmp(expectedLocalIds, indirectHeapAllocation->getUnderlyingBuffer(), sizeForLocalIds)); @@ -1004,7 +1004,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, CmdlistAppendLaunchKernelWithImplicitArgsTests, giv EXPECT_EQ(0, memcmp(expectedLocalIds, indirectHeapAllocation->getUnderlyingBuffer(), sizeof(expectedLocalIds))); - auto localIdsProgrammingSize = implicitArgsProgrammingSize - ImplicitArgsV0::getSize(); + auto localIdsProgrammingSize = implicitArgsProgrammingSize - ImplicitArgsV0::getAlignedSize(); EXPECT_EQ(alignUp(sizeof(expectedLocalIds), MemoryConstants::cacheLineSize), localIdsProgrammingSize); diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_launch_kernel_3.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_launch_kernel_3.cpp index a0db56a87c..e808216b8b 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_launch_kernel_3.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_append_launch_kernel_3.cpp @@ -942,7 +942,7 @@ struct CommandListAppendLaunchKernelWithImplicitArgs : CommandListAppendLaunchKe if (FamilyType::supportsCmdSet(IGFX_XE_HP_CORE)) { const auto &rootDeviceEnvironment = device->getNEODevice()->getRootDeviceEnvironment(); auto implicitArgsProgrammingSize = ImplicitArgsHelper::getSizeForImplicitArgsPatching(kernel.pImplicitArgs.get(), kernel.getKernelDescriptor(), !kernel.kernelRequiresGenerationOfLocalIdsByRuntime, rootDeviceEnvironment); - return implicitArgsProgrammingSize - kernel.pImplicitArgs->v0.header.structSize; + return implicitArgsProgrammingSize - kernel.pImplicitArgs->getAlignedSize(); } else { return 0u; } diff --git a/opencl/test/unit_test/aub_tests/command_queue/aub_inline_data_local_id_tests_xehp_and_later.cpp b/opencl/test/unit_test/aub_tests/command_queue/aub_inline_data_local_id_tests_xehp_and_later.cpp index d3fd95a0f3..8897af20f6 100644 --- a/opencl/test/unit_test/aub_tests/command_queue/aub_inline_data_local_id_tests_xehp_and_later.cpp +++ b/opencl/test/unit_test/aub_tests/command_queue/aub_inline_data_local_id_tests_xehp_and_later.cpp @@ -279,7 +279,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, XeHPAndLaterAubInlineDataTest, givenCrossThreadSize auto pImplicitArgs = kernel->getImplicitArgs(); if (pImplicitArgs) { - payloadData = ptrOffset(payloadData, alignUp(pImplicitArgs->getSize(), MemoryConstants::cacheLineSize)); + payloadData = ptrOffset(payloadData, pImplicitArgs->getAlignedSize()); } EXPECT_EQ(0, memcmp(payloadData, crossThreadData, crossThreadDataSize)); }, diff --git a/opencl/test/unit_test/helpers/hardware_commands_helper_tests.cpp b/opencl/test/unit_test/helpers/hardware_commands_helper_tests.cpp index 537e11dd8e..0a75ce1bc3 100644 --- a/opencl/test/unit_test/helpers/hardware_commands_helper_tests.cpp +++ b/opencl/test/unit_test/helpers/hardware_commands_helper_tests.cpp @@ -1254,7 +1254,7 @@ struct HardwareCommandsImplicitArgsTests : Test { HWCMDTEST_F(IGFX_XE_HP_CORE, HardwareCommandsImplicitArgsTests, givenXeHpAndLaterPlatformWhenSendingIndirectStateForKernelWithImplicitArgsThenImplicitArgsAreSentToIndirectHeapWithLocalIds) { dispatchKernelWithImplicitArgs(); - auto localIdsProgrammingSize = implicitArgsProgrammingSize - ImplicitArgsV0::getSize(); + auto localIdsProgrammingSize = implicitArgsProgrammingSize - ImplicitArgsV0::getAlignedSize(); auto implicitArgsInIndirectData = ptrOffset(indirectHeapAllocation->getUnderlyingBuffer(), localIdsProgrammingSize); EXPECT_EQ(0, memcmp(implicitArgsInIndirectData, &expectedImplicitArgs, ImplicitArgsV0::getSize())); } @@ -1265,7 +1265,7 @@ HWCMDTEST_F(IGFX_GEN12LP_CORE, HardwareCommandsImplicitArgsTests, givenPreXeHpPl auto implicitArgsInIndirectData = indirectHeapAllocation->getUnderlyingBuffer(); EXPECT_EQ(0, memcmp(implicitArgsInIndirectData, &expectedImplicitArgs, ImplicitArgsV0::getSize())); - auto crossThreadDataInIndirectData = ptrOffset(indirectHeapAllocation->getUnderlyingBuffer(), alignUp(ImplicitArgsV0::getSize(), MemoryConstants::cacheLineSize)); + auto crossThreadDataInIndirectData = ptrOffset(indirectHeapAllocation->getUnderlyingBuffer(), ImplicitArgsV0::getAlignedSize()); auto programmedImplicitArgsGpuVA = reinterpret_cast(crossThreadDataInIndirectData)[0]; EXPECT_EQ(indirectHeapAllocation->getGpuAddress(), programmedImplicitArgsGpuVA); @@ -1290,11 +1290,11 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, HardwareCommandsImplicitArgsTests, givenKernelWithI auto grfSize = ImplicitArgsHelper::getGrfSize(expectedImplicitArgs.simdWidth); auto numGrf = GrfConfig::defaultGrfNumber; - auto expectedLocalIds = alignedMalloc(implicitArgsProgrammingSize - ImplicitArgsV0::getSize(), MemoryConstants::cacheLineSize); + auto expectedLocalIds = alignedMalloc(implicitArgsProgrammingSize - ImplicitArgsV0::getAlignedSize(), MemoryConstants::cacheLineSize); const auto &rootDeviceEnvironment = pDevice->getRootDeviceEnvironment(); generateLocalIDs(expectedLocalIds, expectedImplicitArgs.simdWidth, localSize, workgroupDimOrder, false, grfSize, numGrf, rootDeviceEnvironment); - auto localIdsProgrammingSize = implicitArgsProgrammingSize - ImplicitArgsV0::getSize(); + auto localIdsProgrammingSize = implicitArgsProgrammingSize - ImplicitArgsV0::getAlignedSize(); size_t sizeForLocalIds = PerThreadDataHelper::getPerThreadDataSizeTotal(expectedImplicitArgs.simdWidth, grfSize, numGrf, 3u, totalLocalSize, false, rootDeviceEnvironment); EXPECT_EQ(0, memcmp(expectedLocalIds, indirectHeapAllocation->getUnderlyingBuffer(), sizeForLocalIds)); @@ -1325,11 +1325,11 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, HardwareCommandsImplicitArgsTests, givenKernelWithI auto grfSize = ImplicitArgsHelper::getGrfSize(expectedImplicitArgs.simdWidth); auto numGrf = GrfConfig::defaultGrfNumber; - auto expectedLocalIds = alignedMalloc(implicitArgsProgrammingSize - ImplicitArgsV0::getSize(), MemoryConstants::cacheLineSize); + auto expectedLocalIds = alignedMalloc(implicitArgsProgrammingSize - ImplicitArgsV0::getAlignedSize(), MemoryConstants::cacheLineSize); const auto &rootDeviceEnvironment = pDevice->getRootDeviceEnvironment(); generateLocalIDs(expectedLocalIds, expectedImplicitArgs.simdWidth, localSize, expectedDimOrder, false, grfSize, numGrf, rootDeviceEnvironment); - auto localIdsProgrammingSize = implicitArgsProgrammingSize - ImplicitArgsV0::getSize(); + auto localIdsProgrammingSize = implicitArgsProgrammingSize - ImplicitArgsV0::getAlignedSize(); size_t sizeForLocalIds = PerThreadDataHelper::getPerThreadDataSizeTotal(expectedImplicitArgs.simdWidth, grfSize, numGrf, 3u, totalLocalSize, false, rootDeviceEnvironment); EXPECT_EQ(0, memcmp(expectedLocalIds, indirectHeapAllocation->getUnderlyingBuffer(), sizeForLocalIds)); @@ -1358,7 +1358,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, HardwareCommandsImplicitArgsTests, givenKernelWithI EXPECT_EQ(0, memcmp(expectedLocalIds, indirectHeapAllocation->getUnderlyingBuffer(), sizeof(expectedLocalIds))); - auto localIdsProgrammingSize = implicitArgsProgrammingSize - ImplicitArgsV0::getSize(); + auto localIdsProgrammingSize = implicitArgsProgrammingSize - ImplicitArgsV0::getAlignedSize(); EXPECT_EQ(alignUp(sizeof(expectedLocalIds), MemoryConstants::cacheLineSize), localIdsProgrammingSize); diff --git a/shared/source/compiler_interface/linker.cpp b/shared/source/compiler_interface/linker.cpp index 383fa4faa6..2ff3560c64 100644 --- a/shared/source/compiler_interface/linker.cpp +++ b/shared/source/compiler_interface/linker.cpp @@ -658,9 +658,9 @@ void Linker::resolveImplicitArgs(const KernelDescriptorsT &kernelDescriptors, De if (kernelDescriptor.kernelAttributes.flags.requiresImplicitArgs) { auto implicitArgsSize = 0; if (pDevice->getGfxCoreHelper().getImplicitArgsVersion() == 0) { - implicitArgsSize = ImplicitArgsV0::getSize(); + implicitArgsSize = ImplicitArgsV0::getAlignedSize(); } else if (pDevice->getGfxCoreHelper().getImplicitArgsVersion() == 1) { - implicitArgsSize = ImplicitArgsV1::getSize(); + implicitArgsSize = ImplicitArgsV1::getAlignedSize(); } else { UNRECOVERABLE_IF(true); } diff --git a/shared/source/kernel/definitions/implicit_args.h b/shared/source/kernel/definitions/implicit_args.h index bbe82bb119..dfa82cbe30 100644 --- a/shared/source/kernel/definitions/implicit_args.h +++ b/shared/source/kernel/definitions/implicit_args.h @@ -47,6 +47,7 @@ struct alignas(32) ImplicitArgsV0 { uint8_t reserved[16]; static constexpr uint8_t getSize() { return static_cast((offsetof(ImplicitArgsV0, reserved))); } + static constexpr uint8_t getAlignedSize() { return sizeof(ImplicitArgsV0); } }; static_assert(std::alignment_of_v == 32, "Implicit args size need to be aligned to 32"); @@ -78,6 +79,7 @@ struct alignas(32) ImplicitArgsV1 { uint8_t reserved[44]; static constexpr uint8_t getSize() { return static_cast(offsetof(ImplicitArgsV1, reserved)); } + static constexpr uint8_t getAlignedSize() { return sizeof(ImplicitArgsV1); } }; static_assert(std::alignment_of_v == 32, "Implicit args size need to be aligned to 32"); @@ -113,6 +115,18 @@ struct alignas(32) ImplicitArgs { return 0; } + uint8_t getAlignedSize() const { + if (v0.header.structVersion == 0) { + return ImplicitArgsV0::getAlignedSize(); + + } else if (v1.header.structVersion == 1) { + return ImplicitArgsV1::getAlignedSize(); + } + + DEBUG_BREAK_IF(true); + return 0; + } + void setNumWorkDim(uint32_t numWorkDim) { if (v0.header.structVersion == 0) { v0.numWorkDim = numWorkDim; diff --git a/shared/source/kernel/implicit_args_helper.cpp b/shared/source/kernel/implicit_args_helper.cpp index 30614a06c2..a45be26cd9 100644 --- a/shared/source/kernel/implicit_args_helper.cpp +++ b/shared/source/kernel/implicit_args_helper.cpp @@ -48,14 +48,7 @@ uint32_t getSizeForImplicitArgsStruct(const ImplicitArgs *pImplicitArgs, const K if (!pImplicitArgs) { return 0; } - auto implicitArgsSize = pImplicitArgs->getSize(); - - auto patchImplicitArgsBufferInCrossThread = NEO::isValidOffset<>(kernelDescriptor.payloadMappings.implicitArgs.implicitArgsBuffer); - if (patchImplicitArgsBufferInCrossThread) { - return alignUp(implicitArgsSize, MemoryConstants::cacheLineSize); - } else { - return implicitArgsSize; - } + return pImplicitArgs->getAlignedSize(); } uint32_t getSizeForImplicitArgsPatching(const ImplicitArgs *pImplicitArgs, const KernelDescriptor &kernelDescriptor, bool isHwLocalIdGeneration, const RootDeviceEnvironment &rootDeviceEnvironment) { @@ -112,7 +105,7 @@ void *patchImplicitArgs(void *ptrToPatch, const ImplicitArgs &implicitArgs, cons dimensionOrder, false, grfSize, grfCount, rootDeviceEnvironment); - auto sizeForLocalIdsProgramming = totalSizeToProgram - implicitArgs.getSize(); + auto sizeForLocalIdsProgramming = totalSizeToProgram - implicitArgs.getAlignedSize(); ptrToPatch = ptrOffset(ptrToPatch, sizeForLocalIdsProgramming); } diff --git a/shared/test/common/helpers/implicit_args_test_helper.h b/shared/test/common/helpers/implicit_args_test_helper.h index edf881092e..7acd68ce37 100644 --- a/shared/test/common/helpers/implicit_args_test_helper.h +++ b/shared/test/common/helpers/implicit_args_test_helper.h @@ -11,9 +11,9 @@ namespace ImplicitArgsTestHelper { constexpr uint32_t getImplicitArgsSize(uint32_t version) { if (version == 0) { - return NEO::ImplicitArgsV0::getSize(); + return NEO::ImplicitArgsV0::getAlignedSize(); } else if (version == 1) { - return NEO::ImplicitArgsV1::getSize(); + return NEO::ImplicitArgsV1::getAlignedSize(); } return 0; } diff --git a/shared/test/unit_test/compiler_interface/linker_tests.cpp b/shared/test/unit_test/compiler_interface/linker_tests.cpp index 344ff7ca07..001d0737e6 100644 --- a/shared/test/unit_test/compiler_interface/linker_tests.cpp +++ b/shared/test/unit_test/compiler_interface/linker_tests.cpp @@ -2146,7 +2146,7 @@ HWTEST_F(LinkerTests, givenImplicitArgRelocationAndImplicitArgsV1WhenLinkingThen auto addressToPatch = reinterpret_cast(instructionSegment.data() + reloc.r_offset); - EXPECT_EQ(ImplicitArgsV1::getSize(), *addressToPatch); + EXPECT_EQ(ImplicitArgsV1::getAlignedSize(), *addressToPatch); EXPECT_EQ(initData, *(addressToPatch - 1)); EXPECT_EQ(initData, *(addressToPatch + 1)); diff --git a/shared/test/unit_test/kernel/implicit_args_helper_tests.cpp b/shared/test/unit_test/kernel/implicit_args_helper_tests.cpp index 410bea1160..580bf9a9c3 100644 --- a/shared/test/unit_test/kernel/implicit_args_helper_tests.cpp +++ b/shared/test/unit_test/kernel/implicit_args_helper_tests.cpp @@ -82,7 +82,7 @@ TEST(ImplicitArgsHelperTest, givenImplicitArgsWithoutImplicitArgsBufferOffsetInP NEO::MockExecutionEnvironment mockExecutionEnvironment{}; auto &rootDeviceEnvironment = *mockExecutionEnvironment.rootDeviceEnvironments[0]; auto localIdsSize = alignUp(PerThreadDataHelper::getPerThreadDataSizeTotal(implicitArgs.v0.simdWidth, 32u /* grfSize */, GrfConfig::defaultGrfNumber /* numGrf */, 3u /* num channels */, totalWorkgroupSize, false, rootDeviceEnvironment), MemoryConstants::cacheLineSize); - EXPECT_EQ(localIdsSize + ImplicitArgsV0::getSize(), ImplicitArgsHelper::getSizeForImplicitArgsPatching(&implicitArgs, kernelDescriptor, false, rootDeviceEnvironment)); + EXPECT_EQ(localIdsSize + ImplicitArgsV0::getAlignedSize(), ImplicitArgsHelper::getSizeForImplicitArgsPatching(&implicitArgs, kernelDescriptor, false, rootDeviceEnvironment)); } TEST(ImplicitArgsHelperTest, givenImplicitArgsWithImplicitArgsBufferOffsetInPayloadMappingWhenGettingSizeForImplicitArgsProgrammingThenCorrectSizeIsReturned) { @@ -100,7 +100,8 @@ TEST(ImplicitArgsHelperTest, givenImplicitArgsWithImplicitArgsBufferOffsetInPayl implicitArgs.v0.localSizeZ = 4; NEO::MockExecutionEnvironment mockExecutionEnvironment{}; auto &rootDeviceEnvironment = *mockExecutionEnvironment.rootDeviceEnvironments[0]; - EXPECT_EQ(alignUp(implicitArgs.v0.header.structSize, MemoryConstants::cacheLineSize), ImplicitArgsHelper::getSizeForImplicitArgsPatching(&implicitArgs, kernelDescriptor, false, rootDeviceEnvironment)); + EXPECT_EQ(alignUp(implicitArgs.v0.header.structSize, 32), implicitArgs.getAlignedSize()); + EXPECT_EQ(alignUp(implicitArgs.v0.header.structSize, 32), ImplicitArgsHelper::getSizeForImplicitArgsPatching(&implicitArgs, kernelDescriptor, false, rootDeviceEnvironment)); } TEST(ImplicitArgsHelperTest, givenImplicitArgsWithoutImplicitArgsBufferOffsetInPayloadMappingWhenPatchingImplicitArgsThenOnlyProperRegionIsPatched) { @@ -147,13 +148,16 @@ TEST(ImplicitArgsHelperTest, givenImplicitArgsWithoutImplicitArgsBufferOffsetInP EXPECT_NE(pattern, memoryToPatch.get()[offset]) << offset; } - for (; offset < totalSizeForPatching - ImplicitArgsV0::getSize(); offset++) { + for (; offset < totalSizeForPatching - ImplicitArgsV0::getAlignedSize(); offset++) { EXPECT_EQ(pattern, memoryToPatch.get()[offset]); } - for (; offset < totalSizeForPatching; offset++) { + for (; offset < totalSizeForPatching - (ImplicitArgsV0::getAlignedSize() - ImplicitArgsV0::getSize()); offset++) { EXPECT_NE(pattern, memoryToPatch.get()[offset]); } + for (; offset < totalSizeForPatching; offset++) { + EXPECT_EQ(pattern, memoryToPatch.get()[offset]); + } } TEST(ImplicitArgsHelperTest, givenImplicitArgsWithImplicitArgsBufferOffsetInPayloadMappingWhenPatchingImplicitArgsThenOnlyProperRegionIsPatched) { @@ -174,7 +178,7 @@ TEST(ImplicitArgsHelperTest, givenImplicitArgsWithImplicitArgsBufferOffsetInPayl auto &rootDeviceEnvironment = *mockExecutionEnvironment.rootDeviceEnvironments[0]; auto totalSizeForPatching = ImplicitArgsHelper::getSizeForImplicitArgsPatching(&implicitArgs, kernelDescriptor, false, rootDeviceEnvironment); - EXPECT_EQ(alignUp(ImplicitArgsV0::getSize(), MemoryConstants::cacheLineSize), totalSizeForPatching); + EXPECT_EQ(ImplicitArgsV0::getAlignedSize(), totalSizeForPatching); auto memoryToPatch = std::make_unique(totalSizeForPatching);