feature: add skiping kernel internal allocations to cmdlist residency

Related-To: NEO-11719

Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
Zbigniew Zdanowicz
2024-07-24 17:46:09 +00:00
committed by Compute-Runtime-Automation
parent 1fa7e14d0b
commit ff993feb74
3 changed files with 45 additions and 9 deletions

View File

@@ -441,12 +441,14 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendLaunchKernelWithParams(K
}
// Attach kernel residency to our CommandList residency
{
commandContainer.addToResidencyContainer(kernelImmutableData->getIsaGraphicsAllocation());
auto &internalResidencyContainer = kernel->getInternalResidencyContainer();
for (auto resource : internalResidencyContainer) {
commandContainer.addToResidencyContainer(resource);
if (!launchParams.omitAddingKernelInternalResidency) {
commandContainer.addToResidencyContainer(kernelImmutableData->getIsaGraphicsAllocation());
auto &internalResidencyContainer = kernel->getInternalResidencyContainer();
for (auto resource : internalResidencyContainer) {
commandContainer.addToResidencyContainer(resource);
}
}
if (!launchParams.omitAddingKernelResidency) {
if (!launchParams.omitAddingKernelArgumentResidency) {
auto &argumentsResidencyContainer = kernel->getArgumentsResidencyContainer();
for (auto resource : argumentsResidencyContainer) {
commandContainer.addToResidencyContainer(resource);

View File

@@ -66,7 +66,8 @@ struct CmdListKernelLaunchParams {
bool isExpLaunchKernel = false;
bool skipInOrderNonWalkerSignaling = false;
bool pipeControlSignalling = false;
bool omitAddingKernelResidency = false;
bool omitAddingKernelArgumentResidency = false;
bool omitAddingKernelInternalResidency = false;
bool omitAddingEventResidency = false;
bool omitAddingWaitEventsResidency = false;
};

View File

@@ -1528,7 +1528,7 @@ HWTEST2_F(CommandListAppendLaunchKernel, whenUpdateStreamPropertiesIsCalledThenC
}
HWTEST2_F(CommandListAppendLaunchKernelMockModule,
givenFlagOmitKernelResourcePassToCmdlistResidencyWhenAppendingKernelThenExpectNoKernelArgumentsInCmdlistResidency,
givenFlagOmitKernelArgumentResourcePassToCmdlistResidencyWhenAppendingKernelThenExpectNoKernelArgumentsInCmdlistResidency,
IsAtLeastXeHpCore) {
NEO::MockGraphicsAllocation mockAllocation;
NEO::GraphicsAllocation *allocation = &mockAllocation;
@@ -1537,7 +1537,7 @@ HWTEST2_F(CommandListAppendLaunchKernelMockModule,
ze_group_count_t groupCount{1, 1, 1};
ze_result_t returnValue;
CmdListKernelLaunchParams launchParams = {};
launchParams.omitAddingKernelResidency = true;
launchParams.omitAddingKernelArgumentResidency = true;
returnValue = commandList->appendLaunchKernel(kernel->toHandle(), groupCount, nullptr, 0, nullptr, launchParams, false);
ASSERT_EQ(ZE_RESULT_SUCCESS, returnValue);
@@ -1546,7 +1546,7 @@ HWTEST2_F(CommandListAppendLaunchKernelMockModule,
auto kernelAllocationIt = std::find(cmdlistResidency.begin(), cmdlistResidency.end(), allocation);
EXPECT_EQ(kernelAllocationIt, cmdlistResidency.end());
launchParams.omitAddingKernelResidency = false;
launchParams.omitAddingKernelArgumentResidency = false;
returnValue = commandList->appendLaunchKernel(kernel->toHandle(), groupCount, nullptr, 0, nullptr, launchParams, false);
ASSERT_EQ(ZE_RESULT_SUCCESS, returnValue);
@@ -1554,6 +1554,39 @@ HWTEST2_F(CommandListAppendLaunchKernelMockModule,
EXPECT_NE(kernelAllocationIt, cmdlistResidency.end());
}
HWTEST2_F(CommandListAppendLaunchKernelMockModule,
givenFlagOmitKernelInternalResourcePassToCmdlistResidencyWhenAppendingKernelThenExpectNoKernelInternalsInCmdlistResidency,
IsAtLeastXeHpCore) {
NEO::MockGraphicsAllocation mockAllocation;
NEO::GraphicsAllocation *allocation = &mockAllocation;
kernel->internalResidencyContainer.push_back(allocation);
auto kernelIsaAllocation = kernel->getImmutableData()->getIsaGraphicsAllocation();
ze_group_count_t groupCount{1, 1, 1};
ze_result_t returnValue;
CmdListKernelLaunchParams launchParams = {};
launchParams.omitAddingKernelInternalResidency = true;
returnValue = commandList->appendLaunchKernel(kernel->toHandle(), groupCount, nullptr, 0, nullptr, launchParams, false);
ASSERT_EQ(ZE_RESULT_SUCCESS, returnValue);
auto &cmdlistResidency = commandList->getCmdContainer().getResidencyContainer();
auto kernelAllocationIt = std::find(cmdlistResidency.begin(), cmdlistResidency.end(), allocation);
EXPECT_EQ(kernelAllocationIt, cmdlistResidency.end());
kernelAllocationIt = std::find(cmdlistResidency.begin(), cmdlistResidency.end(), kernelIsaAllocation);
EXPECT_EQ(kernelAllocationIt, cmdlistResidency.end());
launchParams.omitAddingKernelInternalResidency = false;
returnValue = commandList->appendLaunchKernel(kernel->toHandle(), groupCount, nullptr, 0, nullptr, launchParams, false);
ASSERT_EQ(ZE_RESULT_SUCCESS, returnValue);
kernelAllocationIt = std::find(cmdlistResidency.begin(), cmdlistResidency.end(), allocation);
EXPECT_NE(kernelAllocationIt, cmdlistResidency.end());
kernelAllocationIt = std::find(cmdlistResidency.begin(), cmdlistResidency.end(), kernelIsaAllocation);
EXPECT_NE(kernelAllocationIt, cmdlistResidency.end());
}
HWTEST2_F(CommandListAppendLaunchKernelMockModule,
givenOutWalkerPtrDispatchParamWhenAppendingKernelThenSetPtrToWalkerCmd,
IsAtLeastXeHpCore) {