From 89b40b7ec4e69a46e595e521452a4f53b3826efc Mon Sep 17 00:00:00 2001 From: Zbigniew Zdanowicz Date: Tue, 29 Oct 2024 22:15:22 +0000 Subject: [PATCH] refactor: change additional walker fields encoder 6/n - change order of members of additional walker struct Related-To: NEO-12639 Signed-off-by: Zbigniew Zdanowicz --- .../hardware_interface_bdw_and_later.inl | 8 +++++++- .../hardware_interface_xehp_and_later.inl | 8 +++++++- .../dispatch_walker_tests_xe2_hpg_core.cpp | 8 +++++++- shared/source/command_container/command_encoder.h | 4 ++-- .../command_encoder_bdw_and_later.inl | 13 +++++++------ .../command_encoder_xehp_and_later.inl | 13 +++++++------ .../fixtures/command_container_fixture.cpp | 12 ++++++++++++ .../unit_test/fixtures/command_container_fixture.h | 2 ++ .../dispatch_walker_tests_xe_hpc_core.cpp | 5 ++++- .../xe_hpc_core/pvc/dispatch_walker_tests_pvc.cpp | 7 +++++-- 10 files changed, 60 insertions(+), 20 deletions(-) diff --git a/opencl/source/command_queue/hardware_interface_bdw_and_later.inl b/opencl/source/command_queue/hardware_interface_bdw_and_later.inl index 144476c7e6..4928b13249 100644 --- a/opencl/source/command_queue/hardware_interface_bdw_and_later.inl +++ b/opencl/source/command_queue/hardware_interface_bdw_and_later.inl @@ -83,7 +83,13 @@ inline void HardwareInterface::programWalker( 0, commandQueue.getDevice()); - EncodeWalkerArgs encodeWalkerArgs{kernel.getExecutionType(), false, kernel.getKernelInfo().kernelDescriptor, NEO::RequiredDispatchWalkOrder::none, 0, 0}; + EncodeWalkerArgs encodeWalkerArgs{ + kernel.getKernelInfo().kernelDescriptor, // kernelDescriptor + kernel.getExecutionType(), // kernelExecutionType + RequiredDispatchWalkOrder::none, // requiredDispatchWalkOrder + 0, // additionalSizeParam + 0, // maxFrontEndThreads + false}; // requiredSystemFence EncodeDispatchKernel::encodeAdditionalWalkerFields(rootDeviceEnvironment, walkerCmd, encodeWalkerArgs); *walkerCmdBuf = walkerCmd; } diff --git a/opencl/source/command_queue/hardware_interface_xehp_and_later.inl b/opencl/source/command_queue/hardware_interface_xehp_and_later.inl index 1dba9875ed..139e263f09 100644 --- a/opencl/source/command_queue/hardware_interface_xehp_and_later.inl +++ b/opencl/source/command_queue/hardware_interface_xehp_and_later.inl @@ -145,7 +145,13 @@ inline void HardwareInterface::programWalker( bool requiredSystemFence = kernelSystemAllocation && walkerArgs.event != nullptr; auto maxFrontEndThreads = device.getDeviceInfo().maxFrontEndThreads; - EncodeWalkerArgs encodeWalkerArgs{kernel.getExecutionType(), requiredSystemFence, kernelInfo.kernelDescriptor, kernelAttributes.walkOrder, kernelAttributes.additionalSize, maxFrontEndThreads}; + EncodeWalkerArgs encodeWalkerArgs{ + kernelInfo.kernelDescriptor, // kernelDescriptor + kernel.getExecutionType(), // kernelExecutionType + kernelAttributes.walkOrder, // requiredDispatchWalkOrder + kernelAttributes.additionalSize, // additionalSizeParam + maxFrontEndThreads, // maxFrontEndThreads + requiredSystemFence}; // requiredSystemFence EncodeDispatchKernel::template encodeAdditionalWalkerFields(rootDeviceEnvironment, walkerCmd, encodeWalkerArgs); EncodeDispatchKernel::template encodeWalkerPostSyncFields(walkerCmd, encodeWalkerArgs); diff --git a/opencl/test/unit_test/xe2_hpg_core/dispatch_walker_tests_xe2_hpg_core.cpp b/opencl/test/unit_test/xe2_hpg_core/dispatch_walker_tests_xe2_hpg_core.cpp index 6bea6d020b..72f259ff79 100644 --- a/opencl/test/unit_test/xe2_hpg_core/dispatch_walker_tests_xe2_hpg_core.cpp +++ b/opencl/test/unit_test/xe2_hpg_core/dispatch_walker_tests_xe2_hpg_core.cpp @@ -26,7 +26,13 @@ XE2_HPG_CORETEST_F(WalkerDispatchTestsXe2HpGCore, whenEncodeAdditionalWalkerFiel auto walkerCmd = FamilyType::cmdInitGpgpuWalker; KernelDescriptor kernelDescriptor; - EncodeWalkerArgs walkerArgs{KernelExecutionType::concurrent, true, kernelDescriptor, NEO::RequiredDispatchWalkOrder::none, 0, 0}; + EncodeWalkerArgs walkerArgs{ + kernelDescriptor, // kernelDescriptor + KernelExecutionType::concurrent, // kernelExecutionType + NEO::RequiredDispatchWalkOrder::none, // requiredDispatchWalkOrder + 0, // additionalSizeParam + 0, // maxFrontEndThreads + true}; // requiredSystemFence { EncodeDispatchKernel::encodeComputeDispatchAllWalker(walkerCmd, walkerArgs); EXPECT_TRUE(walkerCmd.getComputeDispatchAllWalkerEnable()); diff --git a/shared/source/command_container/command_encoder.h b/shared/source/command_container/command_encoder.h index e934858e59..0e2fb1f8a9 100644 --- a/shared/source/command_container/command_encoder.h +++ b/shared/source/command_container/command_encoder.h @@ -106,12 +106,12 @@ enum class CompareOperation : uint32_t { struct EncodeWalkerArgs { EncodeWalkerArgs() = delete; - KernelExecutionType kernelExecutionType = KernelExecutionType::defaultType; - bool requiredSystemFence = false; const KernelDescriptor &kernelDescriptor; + KernelExecutionType kernelExecutionType = KernelExecutionType::defaultType; NEO::RequiredDispatchWalkOrder requiredDispatchWalkOrder = NEO::RequiredDispatchWalkOrder::none; uint32_t additionalSizeParam = NEO::additionalKernelLaunchSizeParamNotSet; uint32_t maxFrontEndThreads = 0; + bool requiredSystemFence = false; }; template diff --git a/shared/source/command_container/command_encoder_bdw_and_later.inl b/shared/source/command_container/command_encoder_bdw_and_later.inl index 65f171f953..6d9e62cf49 100644 --- a/shared/source/command_container/command_encoder_bdw_and_later.inl +++ b/shared/source/command_container/command_encoder_bdw_and_later.inl @@ -278,13 +278,14 @@ void EncodeDispatchKernel::encode(CommandContainer &container, EncodeDis auto threadGroupCount = cmd.getThreadGroupIdXDimension() * cmd.getThreadGroupIdYDimension() * cmd.getThreadGroupIdZDimension(); EncodeDispatchKernel::encodeThreadGroupDispatch(idd, *args.device, hwInfo, threadGroupDims, threadGroupCount, kernelDescriptor.kernelAttributes.numGrfRequired, numThreadsPerThreadGroup, cmd); + EncodeWalkerArgs walkerArgs{ - KernelExecutionType::defaultType, - args.requiresSystemMemoryFence(), - kernelDescriptor, - args.requiredDispatchWalkOrder, - args.additionalSizeParam, - args.device->getDeviceInfo().maxFrontEndThreads}; + kernelDescriptor, // kernelDescriptor + KernelExecutionType::defaultType, // kernelExecutionType + args.requiredDispatchWalkOrder, // requiredDispatchWalkOrder + args.additionalSizeParam, // additionalSizeParam + args.device->getDeviceInfo().maxFrontEndThreads, // maxFrontEndThreads + args.requiresSystemMemoryFence()}; // requiredSystemFence EncodeDispatchKernel::encodeAdditionalWalkerFields(rootDeviceEnvironment, cmd, walkerArgs); EncodeDispatchKernel::encodeWalkerPostSyncFields(cmd, walkerArgs); EncodeDispatchKernel::encodeComputeDispatchAllWalker(cmd, walkerArgs); diff --git a/shared/source/command_container/command_encoder_xehp_and_later.inl b/shared/source/command_container/command_encoder_xehp_and_later.inl index 675540c20a..7ae9d08af1 100644 --- a/shared/source/command_container/command_encoder_xehp_and_later.inl +++ b/shared/source/command_container/command_encoder_xehp_and_later.inl @@ -404,13 +404,14 @@ void EncodeDispatchKernel::encode(CommandContainer &container, EncodeDis args.dispatchInterface->getSlmTotalSize(), args.dispatchInterface->getSlmPolicy()); + auto kernelExecutionType = args.isCooperative ? KernelExecutionType::concurrent : KernelExecutionType::defaultType; EncodeWalkerArgs walkerArgs{ - args.isCooperative ? KernelExecutionType::concurrent : KernelExecutionType::defaultType, - args.requiresSystemMemoryFence(), - kernelDescriptor, - args.requiredDispatchWalkOrder, - args.additionalSizeParam, - args.device->getDeviceInfo().maxFrontEndThreads}; + kernelDescriptor, // kernelDescriptor + kernelExecutionType, // kernelExecutionType + args.requiredDispatchWalkOrder, // requiredDispatchWalkOrder + args.additionalSizeParam, // additionalSizeParam + args.device->getDeviceInfo().maxFrontEndThreads, // maxFrontEndThreads + args.requiresSystemMemoryFence()}; // requiresMemoryFence EncodeDispatchKernel::encodeAdditionalWalkerFields(rootDeviceEnvironment, walkerCmd, walkerArgs); EncodeDispatchKernel::encodeWalkerPostSyncFields(walkerCmd, walkerArgs); EncodeDispatchKernel::encodeComputeDispatchAllWalker(walkerCmd, walkerArgs); diff --git a/shared/test/unit_test/fixtures/command_container_fixture.cpp b/shared/test/unit_test/fixtures/command_container_fixture.cpp index 5d850b1d3b..6782d659d1 100644 --- a/shared/test/unit_test/fixtures/command_container_fixture.cpp +++ b/shared/test/unit_test/fixtures/command_container_fixture.cpp @@ -82,6 +82,18 @@ EncodeDispatchKernelArgs CommandEncodeStatesFixture::createDefaultDispatchKernel return args; } +EncodeWalkerArgs CommandEncodeStatesFixture::createDefaultEncodeWalkerArgs(const KernelDescriptor &kernelDescriptor) { + EncodeWalkerArgs args{ + kernelDescriptor, // kernelDescriptor + NEO::KernelExecutionType::defaultType, // kernelExecutionType + NEO::RequiredDispatchWalkOrder::none, // requiredDispatchWalkOrder + 0, // additionalSizeParam + 0, // maxFrontEndThreads + false}; // requiredSystemFence + + return args; +} + void ScratchProgrammingFixture::setUp() { NEO::DeviceFixture::setUp(); size_t sizeStream = 512; diff --git a/shared/test/unit_test/fixtures/command_container_fixture.h b/shared/test/unit_test/fixtures/command_container_fixture.h index 40e9a15f0b..be37cefe41 100644 --- a/shared/test/unit_test/fixtures/command_container_fixture.h +++ b/shared/test/unit_test/fixtures/command_container_fixture.h @@ -38,6 +38,8 @@ class CommandEncodeStatesFixture : public DeviceFixture { const void *threadGroupDimensions, bool requiresUncachedMocs); + static EncodeWalkerArgs createDefaultEncodeWalkerArgs(const KernelDescriptor &kernelDescriptor); + template EncodeStateBaseAddressArgs createDefaultEncodeStateBaseAddressArgs( CommandContainer *container, diff --git a/shared/test/unit_test/xe_hpc_core/dispatch_walker_tests_xe_hpc_core.cpp b/shared/test/unit_test/xe_hpc_core/dispatch_walker_tests_xe_hpc_core.cpp index 3e239c474e..6b3d535165 100644 --- a/shared/test/unit_test/xe_hpc_core/dispatch_walker_tests_xe_hpc_core.cpp +++ b/shared/test/unit_test/xe_hpc_core/dispatch_walker_tests_xe_hpc_core.cpp @@ -13,6 +13,7 @@ #include "shared/test/common/mocks/mock_execution_environment.h" #include "shared/test/common/test_macros/header/per_product_test_definitions.h" #include "shared/test/common/test_macros/test.h" +#include "shared/test/unit_test/fixtures/command_container_fixture.h" using namespace NEO; @@ -24,7 +25,9 @@ XE_HPC_CORETEST_F(WalkerDispatchTestsXeHpcCore, givenXeHpcWhenEncodeAdditionalWa auto walkerCmd = FamilyType::cmdInitGpgpuWalker; KernelDescriptor kernelDescriptor; - EncodeWalkerArgs walkerArgs{KernelExecutionType::defaultType, true, kernelDescriptor, NEO::RequiredDispatchWalkOrder::none, 0}; + EncodeWalkerArgs walkerArgs = CommandEncodeStatesFixture::createDefaultEncodeWalkerArgs(kernelDescriptor); + walkerArgs.requiredSystemFence = true; + { EncodeDispatchKernel::encodeComputeDispatchAllWalker(walkerCmd, walkerArgs); EXPECT_FALSE(walkerCmd.getComputeDispatchAllWalkerEnable()); diff --git a/shared/test/unit_test/xe_hpc_core/pvc/dispatch_walker_tests_pvc.cpp b/shared/test/unit_test/xe_hpc_core/pvc/dispatch_walker_tests_pvc.cpp index fe8dec7345..465a1bc869 100644 --- a/shared/test/unit_test/xe_hpc_core/pvc/dispatch_walker_tests_pvc.cpp +++ b/shared/test/unit_test/xe_hpc_core/pvc/dispatch_walker_tests_pvc.cpp @@ -16,6 +16,7 @@ #include "shared/test/common/mocks/mock_execution_environment.h" #include "shared/test/common/test_macros/header/per_product_test_definitions.h" #include "shared/test/common/test_macros/test.h" +#include "shared/test/unit_test/fixtures/command_container_fixture.h" using namespace NEO; @@ -44,7 +45,9 @@ PVCTEST_F(WalkerDispatchTestsPvc, givenPvcWhenEncodeAdditionalWalkerFieldsThenPo auto &hwInfo = *rootDeviceEnvironment.getMutableHardwareInfo(); KernelDescriptor kernelDescriptor; - EncodeWalkerArgs walkerArgs{KernelExecutionType::defaultType, true, kernelDescriptor, NEO::RequiredDispatchWalkOrder::none, 0}; + EncodeWalkerArgs walkerArgs = CommandEncodeStatesFixture::createDefaultEncodeWalkerArgs(kernelDescriptor); + walkerArgs.requiredSystemFence = true; + for (auto &testInput : testInputs) { for (auto &deviceId : pvcXlDeviceIds) { hwInfo.platform.usDeviceID = deviceId; @@ -70,7 +73,7 @@ PVCTEST_F(WalkerDispatchTestsPvc, givenPvcSupportsSystemMemoryFenceWhenNoSystemF hwInfo.platform.usRevId = 0x3; KernelDescriptor kernelDescriptor; - EncodeWalkerArgs walkerArgs{KernelExecutionType::defaultType, false, kernelDescriptor, NEO::RequiredDispatchWalkOrder::none, 0}; + EncodeWalkerArgs walkerArgs = CommandEncodeStatesFixture::createDefaultEncodeWalkerArgs(kernelDescriptor); for (auto &deviceId : pvcXlDeviceIds) { hwInfo.platform.usDeviceID = deviceId;