refactor: improve Walker args handling
Signed-off-by: Dunajski, Bartosz <bartosz.dunajski@intel.com>
This commit is contained in:
parent
1bbc7a57ab
commit
9ce3713ace
|
@ -34,26 +34,10 @@ struct Event;
|
||||||
struct Kernel;
|
struct Kernel;
|
||||||
struct CommandQueue;
|
struct CommandQueue;
|
||||||
|
|
||||||
enum class RequiredPartitionDim : uint32_t {
|
|
||||||
None = 0,
|
|
||||||
X,
|
|
||||||
Y,
|
|
||||||
Z
|
|
||||||
};
|
|
||||||
|
|
||||||
enum class RequiredDispatchWalkOrder : uint32_t {
|
|
||||||
None = 0,
|
|
||||||
X,
|
|
||||||
Y,
|
|
||||||
Additional
|
|
||||||
};
|
|
||||||
|
|
||||||
struct CmdListKernelLaunchParams {
|
struct CmdListKernelLaunchParams {
|
||||||
static constexpr uint32_t additionalSizeParamNotSet = std::numeric_limits<uint32_t>::max();
|
NEO::RequiredPartitionDim requiredPartitionDim = NEO::RequiredPartitionDim::None;
|
||||||
|
NEO::RequiredDispatchWalkOrder requiredDispatchWalkOrder = NEO::RequiredDispatchWalkOrder::None;
|
||||||
RequiredPartitionDim requiredPartitionDim = RequiredPartitionDim::None;
|
uint32_t additionalSizeParam = NEO::additionalKernelLaunchSizeParamNotSet;
|
||||||
RequiredDispatchWalkOrder requiredDispatchWalkOrder = RequiredDispatchWalkOrder::None;
|
|
||||||
uint32_t additionalSizeParam = additionalSizeParamNotSet;
|
|
||||||
uint32_t numKernelsInSplitLaunch = 0;
|
uint32_t numKernelsInSplitLaunch = 0;
|
||||||
uint32_t numKernelsExecutedInSplitLaunch = 0;
|
uint32_t numKernelsExecutedInSplitLaunch = 0;
|
||||||
bool isIndirect = false;
|
bool isIndirect = false;
|
||||||
|
|
|
@ -200,6 +200,9 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendLaunchKernelWithParams(K
|
||||||
nullptr, // outWalkerPtr
|
nullptr, // outWalkerPtr
|
||||||
&additionalCommands, // additionalCommands
|
&additionalCommands, // additionalCommands
|
||||||
commandListPreemptionMode, // preemptionMode
|
commandListPreemptionMode, // preemptionMode
|
||||||
|
launchParams.requiredPartitionDim, // requiredPartitionDim
|
||||||
|
launchParams.requiredDispatchWalkOrder, // requiredDispatchWalkOrder
|
||||||
|
launchParams.additionalSizeParam, // additionalSizeParam
|
||||||
0, // partitionCount
|
0, // partitionCount
|
||||||
launchParams.isIndirect, // isIndirect
|
launchParams.isIndirect, // isIndirect
|
||||||
launchParams.isPredicate, // isPredicate
|
launchParams.isPredicate, // isPredicate
|
||||||
|
|
|
@ -286,6 +286,9 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendLaunchKernelWithParams(K
|
||||||
nullptr, // outWalkerPtr
|
nullptr, // outWalkerPtr
|
||||||
&additionalCommands, // additionalCommands
|
&additionalCommands, // additionalCommands
|
||||||
kernelPreemptionMode, // preemptionMode
|
kernelPreemptionMode, // preemptionMode
|
||||||
|
launchParams.requiredPartitionDim, // requiredPartitionDim
|
||||||
|
launchParams.requiredDispatchWalkOrder, // requiredDispatchWalkOrder
|
||||||
|
launchParams.additionalSizeParam, // additionalSizeParam
|
||||||
this->partitionCount, // partitionCount
|
this->partitionCount, // partitionCount
|
||||||
launchParams.isIndirect, // isIndirect
|
launchParams.isIndirect, // isIndirect
|
||||||
launchParams.isPredicate, // isPredicate
|
launchParams.isPredicate, // isPredicate
|
||||||
|
|
|
@ -184,29 +184,32 @@ HWTEST2_F(CommandListAppendLaunchKernel, givenNotEnoughSpaceInCommandStreamWhenA
|
||||||
const uint32_t threadGroupDimensions[3] = {1, 1, 1};
|
const uint32_t threadGroupDimensions[3] = {1, 1, 1};
|
||||||
|
|
||||||
NEO::EncodeDispatchKernelArgs dispatchKernelArgs{
|
NEO::EncodeDispatchKernelArgs dispatchKernelArgs{
|
||||||
0, // eventAddress
|
0, // eventAddress
|
||||||
0, // postSyncImmValue
|
0, // postSyncImmValue
|
||||||
device->getNEODevice(), // device
|
device->getNEODevice(), // device
|
||||||
kernel.get(), // dispatchInterface
|
kernel.get(), // dispatchInterface
|
||||||
nullptr, // surfaceStateHeap
|
nullptr, // surfaceStateHeap
|
||||||
nullptr, // dynamicStateHeap
|
nullptr, // dynamicStateHeap
|
||||||
threadGroupDimensions, // threadGroupDimensions
|
threadGroupDimensions, // threadGroupDimensions
|
||||||
nullptr, // outWalkerPtr
|
nullptr, // outWalkerPtr
|
||||||
nullptr, // additionalCommands
|
nullptr, // additionalCommands
|
||||||
PreemptionMode::MidBatch, // preemptionMode
|
PreemptionMode::MidBatch, // preemptionMode
|
||||||
0, // partitionCount
|
NEO::RequiredPartitionDim::None, // requiredPartitionDim
|
||||||
false, // isIndirect
|
NEO::RequiredDispatchWalkOrder::None, // requiredDispatchWalkOrder
|
||||||
false, // isPredicate
|
NEO::additionalKernelLaunchSizeParamNotSet, // additionalSizeParam
|
||||||
false, // isTimestampEvent
|
0, // partitionCount
|
||||||
false, // requiresUncachedMocs
|
false, // isIndirect
|
||||||
false, // useGlobalAtomics
|
false, // isPredicate
|
||||||
false, // isInternal
|
false, // isTimestampEvent
|
||||||
false, // isCooperative
|
false, // requiresUncachedMocs
|
||||||
false, // isHostScopeSignalEvent
|
false, // useGlobalAtomics
|
||||||
false, // isKernelUsingSystemAllocation
|
false, // isInternal
|
||||||
false, // isKernelDispatchedFromImmediateCmdList
|
false, // isCooperative
|
||||||
false, // isRcs
|
false, // isHostScopeSignalEvent
|
||||||
commandList->getDcFlushRequired(true) // dcFlushEnable
|
false, // isKernelUsingSystemAllocation
|
||||||
|
false, // isKernelDispatchedFromImmediateCmdList
|
||||||
|
false, // isRcs
|
||||||
|
commandList->getDcFlushRequired(true) // dcFlushEnable
|
||||||
};
|
};
|
||||||
NEO::EncodeDispatchKernel<FamilyType>::template encode<DefaultWalkerType>(commandContainer, dispatchKernelArgs);
|
NEO::EncodeDispatchKernel<FamilyType>::template encode<DefaultWalkerType>(commandContainer, dispatchKernelArgs);
|
||||||
|
|
||||||
|
|
|
@ -635,29 +635,32 @@ HWTEST2_F(CommandListAppendLaunchKernel, givenNotEnoughSpaceInCommandStreamWhenA
|
||||||
const uint32_t threadGroupDimensions[3] = {1, 1, 1};
|
const uint32_t threadGroupDimensions[3] = {1, 1, 1};
|
||||||
|
|
||||||
NEO::EncodeDispatchKernelArgs dispatchKernelArgs{
|
NEO::EncodeDispatchKernelArgs dispatchKernelArgs{
|
||||||
0, // eventAddress
|
0, // eventAddress
|
||||||
0, // postSyncImmValue
|
0, // postSyncImmValue
|
||||||
device->getNEODevice(), // device
|
device->getNEODevice(), // device
|
||||||
kernel.get(), // dispatchInterface
|
kernel.get(), // dispatchInterface
|
||||||
nullptr, // surfaceStateHeap
|
nullptr, // surfaceStateHeap
|
||||||
nullptr, // dynamicStateHeap
|
nullptr, // dynamicStateHeap
|
||||||
threadGroupDimensions, // threadGroupDimensions
|
threadGroupDimensions, // threadGroupDimensions
|
||||||
nullptr, // outWalkerPtr
|
nullptr, // outWalkerPtr
|
||||||
nullptr, // additionalCommands
|
nullptr, // additionalCommands
|
||||||
PreemptionMode::MidBatch, // preemptionMode
|
PreemptionMode::MidBatch, // preemptionMode
|
||||||
0, // partitionCount
|
NEO::RequiredPartitionDim::None, // requiredPartitionDim
|
||||||
false, // isIndirect
|
NEO::RequiredDispatchWalkOrder::None, // requiredDispatchWalkOrder
|
||||||
false, // isPredicate
|
NEO::additionalKernelLaunchSizeParamNotSet, // additionalSizeParam
|
||||||
false, // isTimestampEvent
|
0, // partitionCount
|
||||||
false, // requiresUncachedMocs
|
false, // isIndirect
|
||||||
false, // useGlobalAtomics
|
false, // isPredicate
|
||||||
false, // isInternal
|
false, // isTimestampEvent
|
||||||
false, // isCooperative
|
false, // requiresUncachedMocs
|
||||||
false, // isHostScopeSignalEvent
|
false, // useGlobalAtomics
|
||||||
false, // isKernelUsingSystemAllocation
|
false, // isInternal
|
||||||
false, // isKernelDispatchedFromImmediateCmdList
|
false, // isCooperative
|
||||||
false, // isRcs
|
false, // isHostScopeSignalEvent
|
||||||
commandList->getDcFlushRequired(true) // dcFlushEnable
|
false, // isKernelUsingSystemAllocation
|
||||||
|
false, // isKernelDispatchedFromImmediateCmdList
|
||||||
|
false, // isRcs
|
||||||
|
commandList->getDcFlushRequired(true) // dcFlushEnable
|
||||||
};
|
};
|
||||||
EXPECT_THROW(NEO::EncodeDispatchKernel<FamilyType>::template encode<DefaultWalkerType>(commandContainer, dispatchKernelArgs), std::exception);
|
EXPECT_THROW(NEO::EncodeDispatchKernel<FamilyType>::template encode<DefaultWalkerType>(commandContainer, dispatchKernelArgs), std::exception);
|
||||||
}
|
}
|
||||||
|
|
|
@ -102,7 +102,7 @@ inline void HardwareInterface<GfxFamily>::programWalker(
|
||||||
0,
|
0,
|
||||||
commandQueue.getDevice());
|
commandQueue.getDevice());
|
||||||
|
|
||||||
EncodeWalkerArgs encodeWalkerArgs{kernel.getExecutionType(), false, kernel.getKernelInfo().kernelDescriptor};
|
EncodeWalkerArgs encodeWalkerArgs{kernel.getExecutionType(), false, kernel.getKernelInfo().kernelDescriptor, NEO::RequiredDispatchWalkOrder::None, 0};
|
||||||
EncodeDispatchKernel<GfxFamily>::encodeAdditionalWalkerFields(rootDeviceEnvironment, walkerCmd, encodeWalkerArgs);
|
EncodeDispatchKernel<GfxFamily>::encodeAdditionalWalkerFields(rootDeviceEnvironment, walkerCmd, encodeWalkerArgs);
|
||||||
*walkerCmdBuf = walkerCmd;
|
*walkerCmdBuf = walkerCmd;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include "shared/source/command_stream/command_stream_receiver.h"
|
#include "shared/source/command_stream/command_stream_receiver.h"
|
||||||
#include "shared/source/debug_settings/debug_settings_manager.h"
|
#include "shared/source/debug_settings/debug_settings_manager.h"
|
||||||
#include "shared/source/device/device.h"
|
#include "shared/source/device/device.h"
|
||||||
|
#include "shared/source/helpers/definitions/command_encoder_args.h"
|
||||||
#include "shared/source/helpers/engine_node_helper.h"
|
#include "shared/source/helpers/engine_node_helper.h"
|
||||||
#include "shared/source/os_interface/os_context.h"
|
#include "shared/source/os_interface/os_context.h"
|
||||||
#include "shared/source/os_interface/os_interface.h"
|
#include "shared/source/os_interface/os_interface.h"
|
||||||
|
@ -141,7 +142,7 @@ inline void HardwareInterface<GfxFamily>::programWalker(
|
||||||
kernelSystemAllocation = kernel.isAnyKernelArgumentUsingSystemMemory();
|
kernelSystemAllocation = kernel.isAnyKernelArgumentUsingSystemMemory();
|
||||||
}
|
}
|
||||||
bool requiredSystemFence = kernelSystemAllocation && walkerArgs.event != nullptr;
|
bool requiredSystemFence = kernelSystemAllocation && walkerArgs.event != nullptr;
|
||||||
EncodeWalkerArgs encodeWalkerArgs{kernel.getExecutionType(), requiredSystemFence, kernelInfo.kernelDescriptor};
|
EncodeWalkerArgs encodeWalkerArgs{kernel.getExecutionType(), requiredSystemFence, kernelInfo.kernelDescriptor, NEO::RequiredDispatchWalkOrder::None, 0};
|
||||||
EncodeDispatchKernel<GfxFamily>::template encodeAdditionalWalkerFields<WalkerType>(rootDeviceEnvironment, walkerCmd, encodeWalkerArgs);
|
EncodeDispatchKernel<GfxFamily>::template encodeAdditionalWalkerFields<WalkerType>(rootDeviceEnvironment, walkerCmd, encodeWalkerArgs);
|
||||||
|
|
||||||
auto devices = queueCsr.getOsContext().getDeviceBitfield();
|
auto devices = queueCsr.getOsContext().getDeviceBitfield();
|
||||||
|
@ -159,10 +160,10 @@ inline void HardwareInterface<GfxFamily>::programWalker(
|
||||||
walkerCmd,
|
walkerCmd,
|
||||||
nullptr,
|
nullptr,
|
||||||
devices,
|
devices,
|
||||||
|
kernel.usesImages() ? RequiredPartitionDim::X : RequiredPartitionDim::None,
|
||||||
partitionCount,
|
partitionCount,
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
kernel.usesImages(),
|
|
||||||
queueCsr.getDcFlushSupport(),
|
queueCsr.getDcFlushSupport(),
|
||||||
kernel.isSingleSubdevicePreferred(),
|
kernel.isSingleSubdevicePreferred(),
|
||||||
workPartitionAllocationGpuVa,
|
workPartitionAllocationGpuVa,
|
||||||
|
|
|
@ -84,7 +84,7 @@ HWTEST2_F(WalkerDispatchTestDg2AndLater, givenDebugVariableSetWhenProgramCompute
|
||||||
auto &rootDeviceEnvironment = *mockExecutionEnvironment.rootDeviceEnvironments[0];
|
auto &rootDeviceEnvironment = *mockExecutionEnvironment.rootDeviceEnvironments[0];
|
||||||
|
|
||||||
KernelDescriptor kernelDescriptor;
|
KernelDescriptor kernelDescriptor;
|
||||||
EncodeWalkerArgs walkerArgs{KernelExecutionType::defaultType, true, kernelDescriptor};
|
EncodeWalkerArgs walkerArgs{KernelExecutionType::defaultType, true, kernelDescriptor, NEO::RequiredDispatchWalkOrder::None, 0};
|
||||||
for (auto forceL3PrefetchForComputeWalker : {false, true}) {
|
for (auto forceL3PrefetchForComputeWalker : {false, true}) {
|
||||||
debugManager.flags.ForceL3PrefetchForComputeWalker.set(forceL3PrefetchForComputeWalker);
|
debugManager.flags.ForceL3PrefetchForComputeWalker.set(forceL3PrefetchForComputeWalker);
|
||||||
EncodeDispatchKernel<FamilyType>::encodeAdditionalWalkerFields(rootDeviceEnvironment, walkerCmd, walkerArgs);
|
EncodeDispatchKernel<FamilyType>::encodeAdditionalWalkerFields(rootDeviceEnvironment, walkerCmd, walkerArgs);
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include "shared/source/command_container/encode_alu_helper.h"
|
#include "shared/source/command_container/encode_alu_helper.h"
|
||||||
#include "shared/source/command_stream/preemption_mode.h"
|
#include "shared/source/command_stream/preemption_mode.h"
|
||||||
#include "shared/source/debugger/debugger.h"
|
#include "shared/source/debugger/debugger.h"
|
||||||
|
#include "shared/source/helpers/definitions/command_encoder_args.h"
|
||||||
#include "shared/source/helpers/register_offsets.h"
|
#include "shared/source/helpers/register_offsets.h"
|
||||||
#include "shared/source/kernel/kernel_arg_descriptor.h"
|
#include "shared/source/kernel/kernel_arg_descriptor.h"
|
||||||
#include "shared/source/kernel/kernel_execution_type.h"
|
#include "shared/source/kernel/kernel_execution_type.h"
|
||||||
|
@ -52,6 +53,9 @@ struct EncodeDispatchKernelArgs {
|
||||||
void *outWalkerPtr = nullptr;
|
void *outWalkerPtr = nullptr;
|
||||||
std::list<void *> *additionalCommands = nullptr;
|
std::list<void *> *additionalCommands = nullptr;
|
||||||
PreemptionMode preemptionMode = PreemptionMode::Initial;
|
PreemptionMode preemptionMode = PreemptionMode::Initial;
|
||||||
|
NEO::RequiredPartitionDim requiredPartitionDim = NEO::RequiredPartitionDim::None;
|
||||||
|
NEO::RequiredDispatchWalkOrder requiredDispatchWalkOrder = NEO::RequiredDispatchWalkOrder::None;
|
||||||
|
uint32_t additionalSizeParam = NEO::additionalKernelLaunchSizeParamNotSet;
|
||||||
uint32_t partitionCount = 0u;
|
uint32_t partitionCount = 0u;
|
||||||
bool isIndirect = false;
|
bool isIndirect = false;
|
||||||
bool isPredicate = false;
|
bool isPredicate = false;
|
||||||
|
@ -87,6 +91,8 @@ struct EncodeWalkerArgs {
|
||||||
KernelExecutionType kernelExecutionType = KernelExecutionType::defaultType;
|
KernelExecutionType kernelExecutionType = KernelExecutionType::defaultType;
|
||||||
bool requiredSystemFence = false;
|
bool requiredSystemFence = false;
|
||||||
const KernelDescriptor &kernelDescriptor;
|
const KernelDescriptor &kernelDescriptor;
|
||||||
|
NEO::RequiredDispatchWalkOrder requiredDispatchWalkOrder = NEO::RequiredDispatchWalkOrder::None;
|
||||||
|
uint32_t additionalSizeParam = NEO::additionalKernelLaunchSizeParamNotSet;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename GfxFamily>
|
template <typename GfxFamily>
|
||||||
|
|
|
@ -393,7 +393,9 @@ void EncodeDispatchKernel<Family>::encode(CommandContainer &container, EncodeDis
|
||||||
EncodeWalkerArgs walkerArgs{
|
EncodeWalkerArgs walkerArgs{
|
||||||
args.isCooperative ? KernelExecutionType::concurrent : KernelExecutionType::defaultType,
|
args.isCooperative ? KernelExecutionType::concurrent : KernelExecutionType::defaultType,
|
||||||
args.isHostScopeSignalEvent && args.isKernelUsingSystemAllocation,
|
args.isHostScopeSignalEvent && args.isKernelUsingSystemAllocation,
|
||||||
kernelDescriptor};
|
kernelDescriptor,
|
||||||
|
args.requiredDispatchWalkOrder,
|
||||||
|
args.additionalSizeParam};
|
||||||
EncodeDispatchKernel<Family>::encodeAdditionalWalkerFields(rootDeviceEnvironment, walkerCmd, walkerArgs);
|
EncodeDispatchKernel<Family>::encodeAdditionalWalkerFields(rootDeviceEnvironment, walkerCmd, walkerArgs);
|
||||||
|
|
||||||
PreemptionHelper::applyPreemptionWaCmdsBegin<Family>(listCmdBufferStream, *args.device);
|
PreemptionHelper::applyPreemptionWaCmdsBegin<Family>(listCmdBufferStream, *args.device);
|
||||||
|
@ -407,10 +409,10 @@ void EncodeDispatchKernel<Family>::encode(CommandContainer &container, EncodeDis
|
||||||
walkerCmd,
|
walkerCmd,
|
||||||
&args.outWalkerPtr,
|
&args.outWalkerPtr,
|
||||||
args.device->getDeviceBitfield(),
|
args.device->getDeviceBitfield(),
|
||||||
|
args.requiredPartitionDim,
|
||||||
args.partitionCount,
|
args.partitionCount,
|
||||||
!(container.getFlushTaskUsedForImmediate() || container.isUsingPrimaryBuffer()),
|
!(container.getFlushTaskUsedForImmediate() || container.isUsingPrimaryBuffer()),
|
||||||
!args.isKernelDispatchedFromImmediateCmdList,
|
!args.isKernelDispatchedFromImmediateCmdList,
|
||||||
false,
|
|
||||||
args.dcFlushEnable,
|
args.dcFlushEnable,
|
||||||
args.isCooperative,
|
args.isCooperative,
|
||||||
workPartitionAllocationGpuVa,
|
workPartitionAllocationGpuVa,
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "shared/source/helpers/definitions/command_encoder_args.h"
|
||||||
#include "shared/source/helpers/device_bitfield.h"
|
#include "shared/source/helpers/device_bitfield.h"
|
||||||
#include "shared/source/helpers/vec.h"
|
#include "shared/source/helpers/vec.h"
|
||||||
|
|
||||||
|
@ -52,10 +53,10 @@ struct ImplicitScalingDispatch {
|
||||||
WalkerType &walkerCmd,
|
WalkerType &walkerCmd,
|
||||||
void **outWalkerPtr,
|
void **outWalkerPtr,
|
||||||
const DeviceBitfield &devices,
|
const DeviceBitfield &devices,
|
||||||
|
RequiredPartitionDim requiredPartitionDim,
|
||||||
uint32_t &partitionCount,
|
uint32_t &partitionCount,
|
||||||
bool useSecondaryBatchBuffer,
|
bool useSecondaryBatchBuffer,
|
||||||
bool apiSelfCleanup,
|
bool apiSelfCleanup,
|
||||||
bool usesImages,
|
|
||||||
bool dcFlush,
|
bool dcFlush,
|
||||||
bool forceExecutionOnSingleTile,
|
bool forceExecutionOnSingleTile,
|
||||||
uint64_t workPartitionAllocationGpuVa,
|
uint64_t workPartitionAllocationGpuVa,
|
||||||
|
|
|
@ -93,10 +93,10 @@ void ImplicitScalingDispatch<GfxFamily>::dispatchCommands(LinearStream &commandS
|
||||||
WalkerType &walkerCmd,
|
WalkerType &walkerCmd,
|
||||||
void **outWalkerPtr,
|
void **outWalkerPtr,
|
||||||
const DeviceBitfield &devices,
|
const DeviceBitfield &devices,
|
||||||
|
NEO::RequiredPartitionDim requiredPartitionDim,
|
||||||
uint32_t &partitionCount,
|
uint32_t &partitionCount,
|
||||||
bool useSecondaryBatchBuffer,
|
bool useSecondaryBatchBuffer,
|
||||||
bool apiSelfCleanup,
|
bool apiSelfCleanup,
|
||||||
bool usesImages,
|
|
||||||
bool dcFlush,
|
bool dcFlush,
|
||||||
bool forceExecutionOnSingleTile,
|
bool forceExecutionOnSingleTile,
|
||||||
uint64_t workPartitionAllocationGpuVa,
|
uint64_t workPartitionAllocationGpuVa,
|
||||||
|
@ -106,7 +106,7 @@ void ImplicitScalingDispatch<GfxFamily>::dispatchCommands(LinearStream &commandS
|
||||||
const bool preferStaticPartitioning = workPartitionAllocationGpuVa != 0u;
|
const bool preferStaticPartitioning = workPartitionAllocationGpuVa != 0u;
|
||||||
|
|
||||||
bool staticPartitioning = false;
|
bool staticPartitioning = false;
|
||||||
partitionCount = WalkerPartition::computePartitionCountAndSetPartitionType<GfxFamily, WalkerType>(&walkerCmd, tileCount, preferStaticPartitioning, usesImages, &staticPartitioning);
|
partitionCount = WalkerPartition::computePartitionCountAndSetPartitionType<GfxFamily, WalkerType>(&walkerCmd, requiredPartitionDim, tileCount, preferStaticPartitioning, &staticPartitioning);
|
||||||
|
|
||||||
WalkerPartition::WalkerPartitionArgs args = prepareWalkerPartitionArgs<GfxFamily>(workPartitionAllocationGpuVa,
|
WalkerPartition::WalkerPartitionArgs args = prepareWalkerPartitionArgs<GfxFamily>(workPartitionAllocationGpuVa,
|
||||||
tileCount,
|
tileCount,
|
||||||
|
|
|
@ -185,9 +185,9 @@ uint32_t computePartitionCountAndPartitionType(uint32_t preferredMinimalPartitio
|
||||||
|
|
||||||
template <typename GfxFamily, typename WalkerType>
|
template <typename GfxFamily, typename WalkerType>
|
||||||
uint32_t computePartitionCountAndSetPartitionType(WalkerType *walker,
|
uint32_t computePartitionCountAndSetPartitionType(WalkerType *walker,
|
||||||
|
NEO::RequiredPartitionDim requiredPartitionDim,
|
||||||
uint32_t preferredMinimalPartitionCount,
|
uint32_t preferredMinimalPartitionCount,
|
||||||
bool preferStaticPartitioning,
|
bool preferStaticPartitioning,
|
||||||
bool usesImages,
|
|
||||||
bool *outSelectStaticPartitioning) {
|
bool *outSelectStaticPartitioning) {
|
||||||
|
|
||||||
using PARTITION_TYPE = typename WalkerType::PARTITION_TYPE;
|
using PARTITION_TYPE = typename WalkerType::PARTITION_TYPE;
|
||||||
|
@ -195,9 +195,22 @@ uint32_t computePartitionCountAndSetPartitionType(WalkerType *walker,
|
||||||
const Vec3<size_t> groupStart = {walker->getThreadGroupIdStartingX(), walker->getThreadGroupIdStartingY(), walker->getThreadGroupIdStartingZ()};
|
const Vec3<size_t> groupStart = {walker->getThreadGroupIdStartingX(), walker->getThreadGroupIdStartingY(), walker->getThreadGroupIdStartingZ()};
|
||||||
const Vec3<size_t> groupCount = {walker->getThreadGroupIdXDimension(), walker->getThreadGroupIdYDimension(), walker->getThreadGroupIdZDimension()};
|
const Vec3<size_t> groupCount = {walker->getThreadGroupIdXDimension(), walker->getThreadGroupIdYDimension(), walker->getThreadGroupIdZDimension()};
|
||||||
std::optional<PARTITION_TYPE> requestedPartitionType{};
|
std::optional<PARTITION_TYPE> requestedPartitionType{};
|
||||||
if (usesImages) {
|
|
||||||
|
switch (requiredPartitionDim) {
|
||||||
|
case NEO::RequiredPartitionDim::X:
|
||||||
requestedPartitionType = PARTITION_TYPE::PARTITION_TYPE_X;
|
requestedPartitionType = PARTITION_TYPE::PARTITION_TYPE_X;
|
||||||
|
break;
|
||||||
|
case NEO::RequiredPartitionDim::Y:
|
||||||
|
requestedPartitionType = PARTITION_TYPE::PARTITION_TYPE_Y;
|
||||||
|
break;
|
||||||
|
case NEO::RequiredPartitionDim::Z:
|
||||||
|
requestedPartitionType = PARTITION_TYPE::PARTITION_TYPE_Z;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
UNRECOVERABLE_IF(requiredPartitionDim != NEO::RequiredPartitionDim::None);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
PARTITION_TYPE partitionType{};
|
PARTITION_TYPE partitionType{};
|
||||||
const auto partitionCount = computePartitionCountAndPartitionType<GfxFamily, WalkerType>(preferredMinimalPartitionCount,
|
const auto partitionCount = computePartitionCountAndPartitionType<GfxFamily, WalkerType>(preferredMinimalPartitionCount,
|
||||||
preferStaticPartitioning,
|
preferStaticPartitioning,
|
||||||
|
|
|
@ -7,6 +7,9 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
#include <limits>
|
||||||
|
|
||||||
namespace NEO {
|
namespace NEO {
|
||||||
struct RootDeviceEnvironment;
|
struct RootDeviceEnvironment;
|
||||||
|
|
||||||
|
@ -24,4 +27,21 @@ struct MiFlushArgs {
|
||||||
EncodeDummyBlitWaArgs &waArgs;
|
EncodeDummyBlitWaArgs &waArgs;
|
||||||
MiFlushArgs(EncodeDummyBlitWaArgs &args) : waArgs(args) {}
|
MiFlushArgs(EncodeDummyBlitWaArgs &args) : waArgs(args) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum class RequiredPartitionDim : uint32_t {
|
||||||
|
None = 0,
|
||||||
|
X,
|
||||||
|
Y,
|
||||||
|
Z
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class RequiredDispatchWalkOrder : uint32_t {
|
||||||
|
None = 0,
|
||||||
|
X,
|
||||||
|
Y,
|
||||||
|
Additional
|
||||||
|
};
|
||||||
|
|
||||||
|
static constexpr uint32_t additionalKernelLaunchSizeParamNotSet = 0;
|
||||||
|
|
||||||
} // namespace NEO
|
} // namespace NEO
|
||||||
|
|
|
@ -30,7 +30,7 @@ bool ImplicitScalingDispatch<Family>::platformSupportsImplicitScaling(const Root
|
||||||
}
|
}
|
||||||
|
|
||||||
template struct ImplicitScalingDispatch<Family>;
|
template struct ImplicitScalingDispatch<Family>;
|
||||||
template void ImplicitScalingDispatch<Family>::dispatchCommands<Family::DefaultWalkerType>(LinearStream &commandStream, Family::DefaultWalkerType &walkerCmd, void **outWalkerPtr, const DeviceBitfield &devices, uint32_t &partitionCount, bool useSecondaryBatchBuffer, bool apiSelfCleanup, bool usesImages, bool dcFlush, bool forceExecutionOnSingleTile, uint64_t workPartitionAllocationGpuVa, const HardwareInfo &hwInfo);
|
template void ImplicitScalingDispatch<Family>::dispatchCommands<Family::DefaultWalkerType>(LinearStream &commandStream, Family::DefaultWalkerType &walkerCmd, void **outWalkerPtr, const DeviceBitfield &devices, NEO::RequiredPartitionDim requiredPartitionDim, uint32_t &partitionCount, bool useSecondaryBatchBuffer, bool apiSelfCleanup, bool dcFlush, bool forceExecutionOnSingleTile, uint64_t workPartitionAllocationGpuVa, const HardwareInfo &hwInfo);
|
||||||
template size_t ImplicitScalingDispatch<Family>::getSize<Family::DefaultWalkerType>(bool apiSelfCleanup, bool preferStaticPartitioning, const DeviceBitfield &devices, const Vec3<size_t> &groupStart, const Vec3<size_t> &groupCount);
|
template size_t ImplicitScalingDispatch<Family>::getSize<Family::DefaultWalkerType>(bool apiSelfCleanup, bool preferStaticPartitioning, const DeviceBitfield &devices, const Vec3<size_t> &groupStart, const Vec3<size_t> &groupCount);
|
||||||
|
|
||||||
} // namespace NEO
|
} // namespace NEO
|
||||||
|
|
|
@ -17,7 +17,7 @@ template <>
|
||||||
bool ImplicitScalingDispatch<Family>::pipeControlStallRequired = true;
|
bool ImplicitScalingDispatch<Family>::pipeControlStallRequired = true;
|
||||||
|
|
||||||
template struct ImplicitScalingDispatch<Family>;
|
template struct ImplicitScalingDispatch<Family>;
|
||||||
template void ImplicitScalingDispatch<Family>::dispatchCommands<Family::DefaultWalkerType>(LinearStream &commandStream, Family::DefaultWalkerType &walkerCmd, void **outWalkerPtr, const DeviceBitfield &devices, uint32_t &partitionCount, bool useSecondaryBatchBuffer, bool apiSelfCleanup, bool usesImages, bool dcFlush, bool forceExecutionOnSingleTile, uint64_t workPartitionAllocationGpuVa, const HardwareInfo &hwInfo);
|
template void ImplicitScalingDispatch<Family>::dispatchCommands<Family::DefaultWalkerType>(LinearStream &commandStream, Family::DefaultWalkerType &walkerCmd, void **outWalkerPtr, const DeviceBitfield &devices, NEO::RequiredPartitionDim requiredPartitionDim, uint32_t &partitionCount, bool useSecondaryBatchBuffer, bool apiSelfCleanup, bool dcFlush, bool forceExecutionOnSingleTile, uint64_t workPartitionAllocationGpuVa, const HardwareInfo &hwInfo);
|
||||||
template size_t ImplicitScalingDispatch<Family>::getSize<Family::DefaultWalkerType>(bool apiSelfCleanup, bool preferStaticPartitioning, const DeviceBitfield &devices, const Vec3<size_t> &groupStart, const Vec3<size_t> &groupCount);
|
template size_t ImplicitScalingDispatch<Family>::getSize<Family::DefaultWalkerType>(bool apiSelfCleanup, bool preferStaticPartitioning, const DeviceBitfield &devices, const Vec3<size_t> &groupStart, const Vec3<size_t> &groupCount);
|
||||||
|
|
||||||
} // namespace NEO
|
} // namespace NEO
|
||||||
|
|
|
@ -36,7 +36,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests, GivenGetSizeWhenDispatchingCm
|
||||||
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, false, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(32, 1, 1));
|
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, false, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(32, 1, 1));
|
||||||
|
|
||||||
uint32_t partitionCount = 0;
|
uint32_t partitionCount = 0;
|
||||||
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, false, false, dcFlushFlag,
|
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, false, dcFlushFlag,
|
||||||
forceExecutionOnSingleTileFlag, 0u, *defaultHwInfo);
|
forceExecutionOnSingleTileFlag, 0u, *defaultHwInfo);
|
||||||
totalBytesProgrammed = commandStream.getUsed();
|
totalBytesProgrammed = commandStream.getUsed();
|
||||||
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
||||||
|
@ -79,7 +79,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests, GivenWorkgroupOneAndNoPartiti
|
||||||
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, false, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(1, 1, 1));
|
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, false, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(1, 1, 1));
|
||||||
|
|
||||||
uint32_t partitionCount = 0;
|
uint32_t partitionCount = 0;
|
||||||
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, false, false, false, dcFlushFlag,
|
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, false, false, dcFlushFlag,
|
||||||
forceExecutionOnSingleTileFlag, 0u, *defaultHwInfo);
|
forceExecutionOnSingleTileFlag, 0u, *defaultHwInfo);
|
||||||
totalBytesProgrammed = commandStream.getUsed();
|
totalBytesProgrammed = commandStream.getUsed();
|
||||||
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
||||||
|
@ -123,7 +123,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests, GivenWorkgroupOneAndPartition
|
||||||
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, false, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(1, 1, 1));
|
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, false, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(1, 1, 1));
|
||||||
|
|
||||||
uint32_t partitionCount = 0;
|
uint32_t partitionCount = 0;
|
||||||
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, false, false, dcFlushFlag,
|
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, false, dcFlushFlag,
|
||||||
forceExecutionOnSingleTileFlag, 0u, *defaultHwInfo);
|
forceExecutionOnSingleTileFlag, 0u, *defaultHwInfo);
|
||||||
totalBytesProgrammed = commandStream.getUsed();
|
totalBytesProgrammed = commandStream.getUsed();
|
||||||
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
||||||
|
@ -170,7 +170,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests, GivenStaticPartitioningWhenDi
|
||||||
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, true, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(32, 1, 1));
|
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, true, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(32, 1, 1));
|
||||||
|
|
||||||
uint32_t partitionCount = 0;
|
uint32_t partitionCount = 0;
|
||||||
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, false, false, dcFlushFlag,
|
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, false, dcFlushFlag,
|
||||||
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
||||||
totalBytesProgrammed = commandStream.getUsed();
|
totalBytesProgrammed = commandStream.getUsed();
|
||||||
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
||||||
|
@ -222,7 +222,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests, GivenStaticPartitioningWhenPa
|
||||||
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, true, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(32, 1, 1));
|
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, true, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(32, 1, 1));
|
||||||
|
|
||||||
uint32_t partitionCount = 0;
|
uint32_t partitionCount = 0;
|
||||||
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, false, false, dcFlushFlag,
|
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, false, dcFlushFlag,
|
||||||
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
||||||
totalBytesProgrammed = commandStream.getUsed();
|
totalBytesProgrammed = commandStream.getUsed();
|
||||||
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
||||||
|
@ -276,7 +276,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests, GivenStaticPartitioningPrefer
|
||||||
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, true, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(1, 1, 1));
|
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, true, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(1, 1, 1));
|
||||||
|
|
||||||
uint32_t partitionCount = 0;
|
uint32_t partitionCount = 0;
|
||||||
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, false, false, dcFlushFlag,
|
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, false, dcFlushFlag,
|
||||||
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
||||||
totalBytesProgrammed = commandStream.getUsed();
|
totalBytesProgrammed = commandStream.getUsed();
|
||||||
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
||||||
|
@ -327,7 +327,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests, GivenStaticPartitioningPrefer
|
||||||
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, true, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(1, 1, 1));
|
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, true, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(1, 1, 1));
|
||||||
|
|
||||||
uint32_t partitionCount = 0;
|
uint32_t partitionCount = 0;
|
||||||
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, false, false, dcFlushFlag,
|
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, false, dcFlushFlag,
|
||||||
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
||||||
totalBytesProgrammed = commandStream.getUsed();
|
totalBytesProgrammed = commandStream.getUsed();
|
||||||
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
||||||
|
@ -364,7 +364,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests, GivenStaticPartitioningPrefer
|
||||||
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, true, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(1, 1, 1));
|
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, true, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(1, 1, 1));
|
||||||
|
|
||||||
uint32_t partitionCount = 0;
|
uint32_t partitionCount = 0;
|
||||||
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, false, false, dcFlushFlag,
|
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, false, dcFlushFlag,
|
||||||
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
||||||
totalBytesProgrammed = commandStream.getUsed();
|
totalBytesProgrammed = commandStream.getUsed();
|
||||||
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
||||||
|
@ -401,7 +401,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests, GivenDynamicPartitioningPrefe
|
||||||
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, false, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(1, 1, 1));
|
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, false, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(1, 1, 1));
|
||||||
|
|
||||||
uint32_t partitionCount = 0;
|
uint32_t partitionCount = 0;
|
||||||
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, false, false, dcFlushFlag,
|
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, false, dcFlushFlag,
|
||||||
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
||||||
totalBytesProgrammed = commandStream.getUsed();
|
totalBytesProgrammed = commandStream.getUsed();
|
||||||
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
||||||
|
@ -449,7 +449,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests,
|
||||||
EXPECT_EQ(expectedSize, estimatedSize);
|
EXPECT_EQ(expectedSize, estimatedSize);
|
||||||
|
|
||||||
uint32_t partitionCount = 0;
|
uint32_t partitionCount = 0;
|
||||||
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, true, false, dcFlushFlag,
|
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, true, dcFlushFlag,
|
||||||
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
||||||
totalBytesProgrammed = commandStream.getUsed();
|
totalBytesProgrammed = commandStream.getUsed();
|
||||||
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
||||||
|
@ -517,7 +517,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests,
|
||||||
EXPECT_EQ(expectedSize, estimatedSize);
|
EXPECT_EQ(expectedSize, estimatedSize);
|
||||||
|
|
||||||
uint32_t partitionCount = 0;
|
uint32_t partitionCount = 0;
|
||||||
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, true, false, dcFlushFlag,
|
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, true, dcFlushFlag,
|
||||||
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
||||||
totalBytesProgrammed = commandStream.getUsed();
|
totalBytesProgrammed = commandStream.getUsed();
|
||||||
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
||||||
|
@ -577,7 +577,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests,
|
||||||
EXPECT_EQ(expectedSize, estimatedSize);
|
EXPECT_EQ(expectedSize, estimatedSize);
|
||||||
|
|
||||||
uint32_t partitionCount = 0;
|
uint32_t partitionCount = 0;
|
||||||
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, true, false, dcFlushFlag,
|
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, true, dcFlushFlag,
|
||||||
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
||||||
totalBytesProgrammed = commandStream.getUsed();
|
totalBytesProgrammed = commandStream.getUsed();
|
||||||
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
||||||
|
@ -637,7 +637,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests,
|
||||||
EXPECT_EQ(expectedSize, estimatedSize);
|
EXPECT_EQ(expectedSize, estimatedSize);
|
||||||
|
|
||||||
uint32_t partitionCount = 0;
|
uint32_t partitionCount = 0;
|
||||||
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, true, false, dcFlushFlag,
|
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, true, dcFlushFlag,
|
||||||
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
||||||
totalBytesProgrammed = commandStream.getUsed();
|
totalBytesProgrammed = commandStream.getUsed();
|
||||||
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
||||||
|
@ -704,7 +704,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests,
|
||||||
EXPECT_EQ(expectedSize, estimatedSize);
|
EXPECT_EQ(expectedSize, estimatedSize);
|
||||||
|
|
||||||
uint32_t partitionCount = 0;
|
uint32_t partitionCount = 0;
|
||||||
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, true, false, dcFlushFlag,
|
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, true, dcFlushFlag,
|
||||||
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
||||||
totalBytesProgrammed = commandStream.getUsed();
|
totalBytesProgrammed = commandStream.getUsed();
|
||||||
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
||||||
|
@ -767,7 +767,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests,
|
||||||
EXPECT_EQ(expectedSize, estimatedSize);
|
EXPECT_EQ(expectedSize, estimatedSize);
|
||||||
|
|
||||||
uint32_t partitionCount = 0;
|
uint32_t partitionCount = 0;
|
||||||
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, false, false, dcFlushFlag,
|
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, false, dcFlushFlag,
|
||||||
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
||||||
totalBytesProgrammed = commandStream.getUsed();
|
totalBytesProgrammed = commandStream.getUsed();
|
||||||
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
||||||
|
@ -832,7 +832,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests,
|
||||||
EXPECT_EQ(expectedSize, estimatedSize);
|
EXPECT_EQ(expectedSize, estimatedSize);
|
||||||
|
|
||||||
uint32_t partitionCount = 0;
|
uint32_t partitionCount = 0;
|
||||||
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, false, false, dcFlushFlag,
|
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, false, dcFlushFlag,
|
||||||
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
||||||
totalBytesProgrammed = commandStream.getUsed();
|
totalBytesProgrammed = commandStream.getUsed();
|
||||||
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
||||||
|
@ -900,7 +900,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests,
|
||||||
EXPECT_EQ(expectedSize, estimatedSize);
|
EXPECT_EQ(expectedSize, estimatedSize);
|
||||||
|
|
||||||
uint32_t partitionCount = 0;
|
uint32_t partitionCount = 0;
|
||||||
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, true, false, dcFlushFlag,
|
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, true, dcFlushFlag,
|
||||||
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
||||||
totalBytesProgrammed = commandStream.getUsed();
|
totalBytesProgrammed = commandStream.getUsed();
|
||||||
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
||||||
|
@ -967,7 +967,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests,
|
||||||
EXPECT_EQ(expectedSize, estimatedSize);
|
EXPECT_EQ(expectedSize, estimatedSize);
|
||||||
|
|
||||||
uint32_t partitionCount = 0;
|
uint32_t partitionCount = 0;
|
||||||
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, false, false, dcFlushFlag,
|
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, false, dcFlushFlag,
|
||||||
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
|
||||||
totalBytesProgrammed = commandStream.getUsed();
|
totalBytesProgrammed = commandStream.getUsed();
|
||||||
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
EXPECT_EQ(expectedSize, totalBytesProgrammed);
|
||||||
|
|
|
@ -1288,7 +1288,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenStaticPartitionIsPreferr
|
||||||
checkForProperCmdBufferAddressOffset = false;
|
checkForProperCmdBufferAddressOffset = false;
|
||||||
bool preferredStaticPartitioning = true;
|
bool preferredStaticPartitioning = true;
|
||||||
bool staticPartitioning = false;
|
bool staticPartitioning = false;
|
||||||
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, preferredStaticPartitioning, false, &staticPartitioning);
|
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, preferredStaticPartitioning, &staticPartitioning);
|
||||||
EXPECT_FALSE(staticPartitioning);
|
EXPECT_FALSE(staticPartitioning);
|
||||||
EXPECT_EQ(1u, partitionCount);
|
EXPECT_EQ(1u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED, walker.getPartitionType());
|
||||||
|
|
|
@ -449,7 +449,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWhenComputePartiti
|
||||||
walker.setThreadGroupIdXDimension(16u);
|
walker.setThreadGroupIdXDimension(16u);
|
||||||
|
|
||||||
bool staticPartitioning = false;
|
bool staticPartitioning = false;
|
||||||
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 2u, false, false, &staticPartitioning);
|
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 2u, false, &staticPartitioning);
|
||||||
EXPECT_FALSE(staticPartitioning);
|
EXPECT_FALSE(staticPartitioning);
|
||||||
EXPECT_EQ(2u, partitionCount);
|
EXPECT_EQ(2u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
|
||||||
|
@ -461,7 +461,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWithNonUniformStar
|
||||||
walker.setThreadGroupIdStartingX(1u);
|
walker.setThreadGroupIdStartingX(1u);
|
||||||
|
|
||||||
bool staticPartitioning = false;
|
bool staticPartitioning = false;
|
||||||
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
|
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
|
||||||
EXPECT_FALSE(staticPartitioning);
|
EXPECT_FALSE(staticPartitioning);
|
||||||
EXPECT_EQ(1u, partitionCount);
|
EXPECT_EQ(1u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED, walker.getPartitionType());
|
||||||
|
@ -469,7 +469,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWithNonUniformStar
|
||||||
walker.setThreadGroupIdStartingX(0u);
|
walker.setThreadGroupIdStartingX(0u);
|
||||||
walker.setThreadGroupIdStartingY(1u);
|
walker.setThreadGroupIdStartingY(1u);
|
||||||
|
|
||||||
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
|
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
|
||||||
EXPECT_FALSE(staticPartitioning);
|
EXPECT_FALSE(staticPartitioning);
|
||||||
EXPECT_EQ(1u, partitionCount);
|
EXPECT_EQ(1u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED, walker.getPartitionType());
|
||||||
|
@ -477,7 +477,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWithNonUniformStar
|
||||||
walker.setThreadGroupIdStartingY(0u);
|
walker.setThreadGroupIdStartingY(0u);
|
||||||
walker.setThreadGroupIdStartingZ(1u);
|
walker.setThreadGroupIdStartingZ(1u);
|
||||||
|
|
||||||
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
|
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
|
||||||
EXPECT_FALSE(staticPartitioning);
|
EXPECT_FALSE(staticPartitioning);
|
||||||
EXPECT_EQ(1u, partitionCount);
|
EXPECT_EQ(1u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED, walker.getPartitionType());
|
||||||
|
@ -491,21 +491,21 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWithDifferentWorkg
|
||||||
walker.setThreadGroupIdZDimension(64u);
|
walker.setThreadGroupIdZDimension(64u);
|
||||||
|
|
||||||
bool staticPartitioning = false;
|
bool staticPartitioning = false;
|
||||||
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
|
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
|
||||||
EXPECT_FALSE(staticPartitioning);
|
EXPECT_FALSE(staticPartitioning);
|
||||||
EXPECT_EQ(4u, partitionCount);
|
EXPECT_EQ(4u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
|
||||||
|
|
||||||
walker.setThreadGroupIdYDimension(65u);
|
walker.setThreadGroupIdYDimension(65u);
|
||||||
walker.setPartitionType(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED);
|
walker.setPartitionType(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED);
|
||||||
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
|
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
|
||||||
EXPECT_FALSE(staticPartitioning);
|
EXPECT_FALSE(staticPartitioning);
|
||||||
EXPECT_EQ(4u, partitionCount);
|
EXPECT_EQ(4u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
|
||||||
|
|
||||||
walker.setThreadGroupIdZDimension(66u);
|
walker.setThreadGroupIdZDimension(66u);
|
||||||
walker.setPartitionType(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED);
|
walker.setPartitionType(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED);
|
||||||
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
|
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
|
||||||
EXPECT_FALSE(staticPartitioning);
|
EXPECT_FALSE(staticPartitioning);
|
||||||
EXPECT_EQ(4u, partitionCount);
|
EXPECT_EQ(4u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());
|
||||||
|
@ -522,21 +522,21 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenDisabledMinimalPartition
|
||||||
debugManager.flags.SetMinimalPartitionSize.set(0);
|
debugManager.flags.SetMinimalPartitionSize.set(0);
|
||||||
|
|
||||||
bool staticPartitioning = false;
|
bool staticPartitioning = false;
|
||||||
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
|
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
|
||||||
EXPECT_FALSE(staticPartitioning);
|
EXPECT_FALSE(staticPartitioning);
|
||||||
EXPECT_EQ(16u, partitionCount);
|
EXPECT_EQ(16u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
|
||||||
|
|
||||||
walker.setThreadGroupIdYDimension(65u);
|
walker.setThreadGroupIdYDimension(65u);
|
||||||
walker.setPartitionType(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED);
|
walker.setPartitionType(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED);
|
||||||
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
|
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
|
||||||
EXPECT_FALSE(staticPartitioning);
|
EXPECT_FALSE(staticPartitioning);
|
||||||
EXPECT_EQ(16u, partitionCount);
|
EXPECT_EQ(16u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
|
||||||
|
|
||||||
walker.setThreadGroupIdZDimension(66u);
|
walker.setThreadGroupIdZDimension(66u);
|
||||||
walker.setPartitionType(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED);
|
walker.setPartitionType(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED);
|
||||||
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
|
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
|
||||||
EXPECT_FALSE(staticPartitioning);
|
EXPECT_FALSE(staticPartitioning);
|
||||||
EXPECT_EQ(16u, partitionCount);
|
EXPECT_EQ(16u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());
|
||||||
|
@ -550,14 +550,14 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWithDifferentWorkg
|
||||||
walker.setThreadGroupIdZDimension(4u);
|
walker.setThreadGroupIdZDimension(4u);
|
||||||
|
|
||||||
bool staticPartitioning = false;
|
bool staticPartitioning = false;
|
||||||
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
|
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
|
||||||
EXPECT_FALSE(staticPartitioning);
|
EXPECT_FALSE(staticPartitioning);
|
||||||
EXPECT_EQ(4u, partitionCount);
|
EXPECT_EQ(4u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
|
||||||
walker.setThreadGroupIdXDimension(1u);
|
walker.setThreadGroupIdXDimension(1u);
|
||||||
walker.setPartitionType(COMPUTE_WALKER<FamilyType>::PARTITION_TYPE::PARTITION_TYPE_DISABLED);
|
walker.setPartitionType(COMPUTE_WALKER<FamilyType>::PARTITION_TYPE::PARTITION_TYPE_DISABLED);
|
||||||
|
|
||||||
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
|
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
|
||||||
EXPECT_FALSE(staticPartitioning);
|
EXPECT_FALSE(staticPartitioning);
|
||||||
EXPECT_EQ(4u, partitionCount);
|
EXPECT_EQ(4u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
|
||||||
|
@ -565,7 +565,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWithDifferentWorkg
|
||||||
walker.setThreadGroupIdYDimension(1u);
|
walker.setThreadGroupIdYDimension(1u);
|
||||||
walker.setPartitionType(COMPUTE_WALKER<FamilyType>::PARTITION_TYPE::PARTITION_TYPE_DISABLED);
|
walker.setPartitionType(COMPUTE_WALKER<FamilyType>::PARTITION_TYPE::PARTITION_TYPE_DISABLED);
|
||||||
|
|
||||||
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
|
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
|
||||||
EXPECT_FALSE(staticPartitioning);
|
EXPECT_FALSE(staticPartitioning);
|
||||||
EXPECT_EQ(4u, partitionCount);
|
EXPECT_EQ(4u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());
|
||||||
|
@ -582,25 +582,25 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWithPartitionTypeH
|
||||||
|
|
||||||
debugManager.flags.ExperimentalSetWalkerPartitionType.set(-1);
|
debugManager.flags.ExperimentalSetWalkerPartitionType.set(-1);
|
||||||
bool staticPartitioning = false;
|
bool staticPartitioning = false;
|
||||||
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
|
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
|
||||||
EXPECT_FALSE(staticPartitioning);
|
EXPECT_FALSE(staticPartitioning);
|
||||||
EXPECT_EQ(4u, partitionCount);
|
EXPECT_EQ(4u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
|
||||||
|
|
||||||
debugManager.flags.ExperimentalSetWalkerPartitionType.set(static_cast<int32_t>(COMPUTE_WALKER<FamilyType>::PARTITION_TYPE::PARTITION_TYPE_X));
|
debugManager.flags.ExperimentalSetWalkerPartitionType.set(static_cast<int32_t>(COMPUTE_WALKER<FamilyType>::PARTITION_TYPE::PARTITION_TYPE_X));
|
||||||
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
|
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
|
||||||
EXPECT_FALSE(staticPartitioning);
|
EXPECT_FALSE(staticPartitioning);
|
||||||
EXPECT_EQ(4u, partitionCount);
|
EXPECT_EQ(4u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
|
||||||
|
|
||||||
debugManager.flags.ExperimentalSetWalkerPartitionType.set(static_cast<int32_t>(COMPUTE_WALKER<FamilyType>::PARTITION_TYPE::PARTITION_TYPE_Y));
|
debugManager.flags.ExperimentalSetWalkerPartitionType.set(static_cast<int32_t>(COMPUTE_WALKER<FamilyType>::PARTITION_TYPE::PARTITION_TYPE_Y));
|
||||||
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
|
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
|
||||||
EXPECT_FALSE(staticPartitioning);
|
EXPECT_FALSE(staticPartitioning);
|
||||||
EXPECT_EQ(4u, partitionCount);
|
EXPECT_EQ(4u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
|
||||||
|
|
||||||
debugManager.flags.ExperimentalSetWalkerPartitionType.set(static_cast<int32_t>(COMPUTE_WALKER<FamilyType>::PARTITION_TYPE::PARTITION_TYPE_Z));
|
debugManager.flags.ExperimentalSetWalkerPartitionType.set(static_cast<int32_t>(COMPUTE_WALKER<FamilyType>::PARTITION_TYPE::PARTITION_TYPE_Z));
|
||||||
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
|
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
|
||||||
EXPECT_FALSE(staticPartitioning);
|
EXPECT_FALSE(staticPartitioning);
|
||||||
EXPECT_EQ(2u, partitionCount);
|
EXPECT_EQ(2u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());
|
||||||
|
@ -617,7 +617,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenInvalidPartitionTypeIsRe
|
||||||
|
|
||||||
debugManager.flags.ExperimentalSetWalkerPartitionType.set(0);
|
debugManager.flags.ExperimentalSetWalkerPartitionType.set(0);
|
||||||
bool staticPartitioning = false;
|
bool staticPartitioning = false;
|
||||||
EXPECT_ANY_THROW(computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning));
|
EXPECT_ANY_THROW(computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning));
|
||||||
}
|
}
|
||||||
|
|
||||||
HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWithSmallXDimensionSizeWhenPartitionCountIsObtainedThenPartitionCountIsAdujsted) {
|
HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWithSmallXDimensionSizeWhenPartitionCountIsObtainedThenPartitionCountIsAdujsted) {
|
||||||
|
@ -628,7 +628,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWithSmallXDimensio
|
||||||
walker.setThreadGroupIdZDimension(1u);
|
walker.setThreadGroupIdZDimension(1u);
|
||||||
|
|
||||||
bool staticPartitioning = false;
|
bool staticPartitioning = false;
|
||||||
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 2u, false, false, &staticPartitioning);
|
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 2u, false, &staticPartitioning);
|
||||||
EXPECT_FALSE(staticPartitioning);
|
EXPECT_FALSE(staticPartitioning);
|
||||||
EXPECT_EQ(2u, partitionCount);
|
EXPECT_EQ(2u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
|
||||||
|
@ -642,7 +642,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWithBigXDimensionS
|
||||||
walker.setThreadGroupIdZDimension(1u);
|
walker.setThreadGroupIdZDimension(1u);
|
||||||
|
|
||||||
bool staticPartitioning = false;
|
bool staticPartitioning = false;
|
||||||
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 2u, false, false, &staticPartitioning);
|
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 2u, false, &staticPartitioning);
|
||||||
EXPECT_FALSE(staticPartitioning);
|
EXPECT_FALSE(staticPartitioning);
|
||||||
EXPECT_EQ(16u, partitionCount);
|
EXPECT_EQ(16u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
|
||||||
|
@ -659,7 +659,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenCustomMinimalPartitionSi
|
||||||
debugManager.flags.SetMinimalPartitionSize.set(4096);
|
debugManager.flags.SetMinimalPartitionSize.set(4096);
|
||||||
|
|
||||||
bool staticPartitioning = false;
|
bool staticPartitioning = false;
|
||||||
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 2u, false, false, &staticPartitioning);
|
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 2u, false, &staticPartitioning);
|
||||||
EXPECT_FALSE(staticPartitioning);
|
EXPECT_FALSE(staticPartitioning);
|
||||||
EXPECT_EQ(4u, partitionCount);
|
EXPECT_EQ(4u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
|
||||||
|
@ -673,7 +673,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWithPartitionTypeP
|
||||||
walker.setThreadGroupIdZDimension(1u);
|
walker.setThreadGroupIdZDimension(1u);
|
||||||
|
|
||||||
bool staticPartitioning = false;
|
bool staticPartitioning = false;
|
||||||
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
|
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
|
||||||
EXPECT_FALSE(staticPartitioning);
|
EXPECT_FALSE(staticPartitioning);
|
||||||
EXPECT_EQ(1u, partitionCount);
|
EXPECT_EQ(1u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED, walker.getPartitionType());
|
||||||
|
@ -687,10 +687,10 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenXDimensionIsNotLargetAnd
|
||||||
walker.setThreadGroupIdZDimension(16u);
|
walker.setThreadGroupIdZDimension(16u);
|
||||||
|
|
||||||
bool staticPartitioning = false;
|
bool staticPartitioning = false;
|
||||||
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
|
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
|
||||||
|
|
||||||
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, true, &staticPartitioning);
|
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::X, 4u, false, &staticPartitioning);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -702,7 +702,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenStaticPartitioningAndNon
|
||||||
walker.setThreadGroupIdZDimension(1u);
|
walker.setThreadGroupIdZDimension(1u);
|
||||||
|
|
||||||
bool staticPartitioning = false;
|
bool staticPartitioning = false;
|
||||||
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, true, false, &staticPartitioning);
|
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::X, 4u, true, &staticPartitioning);
|
||||||
EXPECT_TRUE(staticPartitioning);
|
EXPECT_TRUE(staticPartitioning);
|
||||||
EXPECT_EQ(4u, partitionCount);
|
EXPECT_EQ(4u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
|
||||||
|
@ -716,7 +716,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenStaticPartitioningAndPar
|
||||||
walker.setThreadGroupIdZDimension(1u);
|
walker.setThreadGroupIdZDimension(1u);
|
||||||
|
|
||||||
bool staticPartitioning = false;
|
bool staticPartitioning = false;
|
||||||
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, true, false, &staticPartitioning);
|
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, true, &staticPartitioning);
|
||||||
EXPECT_TRUE(staticPartitioning);
|
EXPECT_TRUE(staticPartitioning);
|
||||||
EXPECT_EQ(4u, partitionCount);
|
EXPECT_EQ(4u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
|
||||||
|
@ -730,7 +730,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenStaticPartitioningAndBig
|
||||||
walker.setThreadGroupIdZDimension(1u);
|
walker.setThreadGroupIdZDimension(1u);
|
||||||
|
|
||||||
bool staticPartitioning = false;
|
bool staticPartitioning = false;
|
||||||
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, true, false, &staticPartitioning);
|
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, true, &staticPartitioning);
|
||||||
EXPECT_TRUE(staticPartitioning);
|
EXPECT_TRUE(staticPartitioning);
|
||||||
EXPECT_EQ(4u, partitionCount);
|
EXPECT_EQ(4u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
|
||||||
|
@ -747,7 +747,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenStaticPartitioningAndAnd
|
||||||
walker.setThreadGroupIdStartingZ(1);
|
walker.setThreadGroupIdStartingZ(1);
|
||||||
|
|
||||||
bool staticPartitioning = false;
|
bool staticPartitioning = false;
|
||||||
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, true, false, &staticPartitioning);
|
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, true, &staticPartitioning);
|
||||||
EXPECT_FALSE(staticPartitioning);
|
EXPECT_FALSE(staticPartitioning);
|
||||||
EXPECT_EQ(1u, partitionCount);
|
EXPECT_EQ(1u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED, walker.getPartitionType());
|
||||||
|
@ -762,14 +762,14 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenStaticPartitioningAndPar
|
||||||
walker.setThreadGroupIdZDimension(1u);
|
walker.setThreadGroupIdZDimension(1u);
|
||||||
|
|
||||||
bool staticPartitioning = false;
|
bool staticPartitioning = false;
|
||||||
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, true, false, &staticPartitioning);
|
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, true, &staticPartitioning);
|
||||||
EXPECT_TRUE(staticPartitioning);
|
EXPECT_TRUE(staticPartitioning);
|
||||||
EXPECT_EQ(4u, partitionCount);
|
EXPECT_EQ(4u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
|
||||||
|
|
||||||
debugManager.flags.ExperimentalSetWalkerPartitionType.set(static_cast<int32_t>(COMPUTE_WALKER<FamilyType>::PARTITION_TYPE::PARTITION_TYPE_Z));
|
debugManager.flags.ExperimentalSetWalkerPartitionType.set(static_cast<int32_t>(COMPUTE_WALKER<FamilyType>::PARTITION_TYPE::PARTITION_TYPE_Z));
|
||||||
staticPartitioning = false;
|
staticPartitioning = false;
|
||||||
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, true, false, &staticPartitioning);
|
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, true, &staticPartitioning);
|
||||||
EXPECT_TRUE(staticPartitioning);
|
EXPECT_TRUE(staticPartitioning);
|
||||||
EXPECT_EQ(4u, partitionCount);
|
EXPECT_EQ(4u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());
|
||||||
|
@ -784,14 +784,14 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenStaticPartitioningWhenZD
|
||||||
walker.setThreadGroupIdZDimension(2u);
|
walker.setThreadGroupIdZDimension(2u);
|
||||||
|
|
||||||
bool staticPartitioning = true;
|
bool staticPartitioning = true;
|
||||||
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 2u, true, false, &staticPartitioning);
|
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 2u, true, &staticPartitioning);
|
||||||
EXPECT_TRUE(staticPartitioning);
|
EXPECT_TRUE(staticPartitioning);
|
||||||
EXPECT_EQ(2u, partitionCount);
|
EXPECT_EQ(2u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());
|
||||||
|
|
||||||
debugManager.flags.WalkerPartitionPreferHighestDimension.set(0);
|
debugManager.flags.WalkerPartitionPreferHighestDimension.set(0);
|
||||||
|
|
||||||
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 2u, true, false, &staticPartitioning);
|
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 2u, true, &staticPartitioning);
|
||||||
EXPECT_TRUE(staticPartitioning);
|
EXPECT_TRUE(staticPartitioning);
|
||||||
EXPECT_EQ(2u, partitionCount);
|
EXPECT_EQ(2u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
|
||||||
|
@ -806,14 +806,14 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenStaticPartitioningWhenYD
|
||||||
walker.setThreadGroupIdZDimension(1u);
|
walker.setThreadGroupIdZDimension(1u);
|
||||||
|
|
||||||
bool staticPartitioning = true;
|
bool staticPartitioning = true;
|
||||||
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 2u, true, false, &staticPartitioning);
|
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 2u, true, &staticPartitioning);
|
||||||
EXPECT_TRUE(staticPartitioning);
|
EXPECT_TRUE(staticPartitioning);
|
||||||
EXPECT_EQ(2u, partitionCount);
|
EXPECT_EQ(2u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
|
||||||
|
|
||||||
debugManager.flags.WalkerPartitionPreferHighestDimension.set(0);
|
debugManager.flags.WalkerPartitionPreferHighestDimension.set(0);
|
||||||
|
|
||||||
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 2u, true, false, &staticPartitioning);
|
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 2u, true, &staticPartitioning);
|
||||||
EXPECT_TRUE(staticPartitioning);
|
EXPECT_TRUE(staticPartitioning);
|
||||||
EXPECT_EQ(2u, partitionCount);
|
EXPECT_EQ(2u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
|
||||||
|
@ -828,14 +828,14 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenStaticPartitioningWhenZD
|
||||||
walker.setThreadGroupIdZDimension(513u);
|
walker.setThreadGroupIdZDimension(513u);
|
||||||
|
|
||||||
bool staticPartitioning = true;
|
bool staticPartitioning = true;
|
||||||
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 2u, true, false, &staticPartitioning);
|
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 2u, true, &staticPartitioning);
|
||||||
EXPECT_TRUE(staticPartitioning);
|
EXPECT_TRUE(staticPartitioning);
|
||||||
EXPECT_EQ(2u, partitionCount);
|
EXPECT_EQ(2u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());
|
||||||
|
|
||||||
debugManager.flags.WalkerPartitionPreferHighestDimension.set(0);
|
debugManager.flags.WalkerPartitionPreferHighestDimension.set(0);
|
||||||
|
|
||||||
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 2u, true, false, &staticPartitioning);
|
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 2u, true, &staticPartitioning);
|
||||||
EXPECT_TRUE(staticPartitioning);
|
EXPECT_TRUE(staticPartitioning);
|
||||||
EXPECT_EQ(2u, partitionCount);
|
EXPECT_EQ(2u, partitionCount);
|
||||||
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());
|
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());
|
||||||
|
|
|
@ -37,29 +37,32 @@ EncodeDispatchKernelArgs CommandEncodeStatesFixture::createDefaultDispatchKernel
|
||||||
bool requiresUncachedMocs) {
|
bool requiresUncachedMocs) {
|
||||||
|
|
||||||
EncodeDispatchKernelArgs args{
|
EncodeDispatchKernelArgs args{
|
||||||
0, // eventAddress
|
0, // eventAddress
|
||||||
0, // postSyncImmValue
|
0, // postSyncImmValue
|
||||||
device, // device
|
device, // device
|
||||||
dispatchInterface, // dispatchInterface
|
dispatchInterface, // dispatchInterface
|
||||||
nullptr, // surfaceStateHeap
|
nullptr, // surfaceStateHeap
|
||||||
nullptr, // dynamicStateHeap
|
nullptr, // dynamicStateHeap
|
||||||
threadGroupDimensions, // threadGroupDimensions
|
threadGroupDimensions, // threadGroupDimensions
|
||||||
nullptr, // outWalkerPtr
|
nullptr, // outWalkerPtr
|
||||||
nullptr, // additionalCommands
|
nullptr, // additionalCommands
|
||||||
PreemptionMode::Disabled, // preemptionMode
|
PreemptionMode::Disabled, // preemptionMode
|
||||||
1, // partitionCount
|
NEO::RequiredPartitionDim::None, // requiredPartitionDim
|
||||||
false, // isIndirect
|
NEO::RequiredDispatchWalkOrder::None, // requiredDispatchWalkOrder
|
||||||
false, // isPredicate
|
NEO::additionalKernelLaunchSizeParamNotSet, // additionalSizeParam
|
||||||
false, // isTimestampEvent
|
1, // partitionCount
|
||||||
requiresUncachedMocs, // requiresUncachedMocs
|
false, // isIndirect
|
||||||
false, // useGlobalAtomics
|
false, // isPredicate
|
||||||
false, // isInternal
|
false, // isTimestampEvent
|
||||||
false, // isCooperative
|
requiresUncachedMocs, // requiresUncachedMocs
|
||||||
false, // isHostScopeSignalEvent
|
false, // useGlobalAtomics
|
||||||
false, // isKernelUsingSystemAllocation
|
false, // isInternal
|
||||||
false, // isKernelDispatchedFromImmediateCmdList
|
false, // isCooperative
|
||||||
false, // isRcs
|
false, // isHostScopeSignalEvent
|
||||||
false // dcFlushEnable
|
false, // isKernelUsingSystemAllocation
|
||||||
|
false, // isKernelDispatchedFromImmediateCmdList
|
||||||
|
false, // isRcs
|
||||||
|
false // dcFlushEnable
|
||||||
};
|
};
|
||||||
|
|
||||||
return args;
|
return args;
|
||||||
|
|
|
@ -26,7 +26,7 @@ XE_HPC_CORETEST_F(WalkerDispatchTestsXeHpcCore, givenXeHpcWhenEncodeAdditionalWa
|
||||||
auto &rootDeviceEnvironment = *mockExecutionEnvironment.rootDeviceEnvironments[0];
|
auto &rootDeviceEnvironment = *mockExecutionEnvironment.rootDeviceEnvironments[0];
|
||||||
|
|
||||||
KernelDescriptor kernelDescriptor;
|
KernelDescriptor kernelDescriptor;
|
||||||
EncodeWalkerArgs walkerArgs{KernelExecutionType::defaultType, true, kernelDescriptor};
|
EncodeWalkerArgs walkerArgs{KernelExecutionType::defaultType, true, kernelDescriptor, NEO::RequiredDispatchWalkOrder::None, 0};
|
||||||
{
|
{
|
||||||
EncodeDispatchKernel<FamilyType>::encodeAdditionalWalkerFields(rootDeviceEnvironment, walkerCmd, walkerArgs);
|
EncodeDispatchKernel<FamilyType>::encodeAdditionalWalkerFields(rootDeviceEnvironment, walkerCmd, walkerArgs);
|
||||||
EXPECT_FALSE(walkerCmd.getComputeDispatchAllWalkerEnable());
|
EXPECT_FALSE(walkerCmd.getComputeDispatchAllWalkerEnable());
|
||||||
|
|
|
@ -44,7 +44,7 @@ PVCTEST_F(WalkerDispatchTestsPvc, givenPvcWhenEncodeAdditionalWalkerFieldsThenPo
|
||||||
auto &hwInfo = *rootDeviceEnvironment.getMutableHardwareInfo();
|
auto &hwInfo = *rootDeviceEnvironment.getMutableHardwareInfo();
|
||||||
|
|
||||||
KernelDescriptor kernelDescriptor;
|
KernelDescriptor kernelDescriptor;
|
||||||
EncodeWalkerArgs walkerArgs{KernelExecutionType::defaultType, true, kernelDescriptor};
|
EncodeWalkerArgs walkerArgs{KernelExecutionType::defaultType, true, kernelDescriptor, NEO::RequiredDispatchWalkOrder::None, 0};
|
||||||
for (auto &testInput : testInputs) {
|
for (auto &testInput : testInputs) {
|
||||||
for (auto &deviceId : pvcXlDeviceIds) {
|
for (auto &deviceId : pvcXlDeviceIds) {
|
||||||
hwInfo.platform.usDeviceID = deviceId;
|
hwInfo.platform.usDeviceID = deviceId;
|
||||||
|
@ -70,7 +70,7 @@ PVCTEST_F(WalkerDispatchTestsPvc, givenPvcSupportsSystemMemoryFenceWhenNoSystemF
|
||||||
hwInfo.platform.usRevId = 0x3;
|
hwInfo.platform.usRevId = 0x3;
|
||||||
|
|
||||||
KernelDescriptor kernelDescriptor;
|
KernelDescriptor kernelDescriptor;
|
||||||
EncodeWalkerArgs walkerArgs{KernelExecutionType::defaultType, false, kernelDescriptor};
|
EncodeWalkerArgs walkerArgs{KernelExecutionType::defaultType, false, kernelDescriptor, NEO::RequiredDispatchWalkOrder::None, 0};
|
||||||
for (auto &deviceId : pvcXlDeviceIds) {
|
for (auto &deviceId : pvcXlDeviceIds) {
|
||||||
hwInfo.platform.usDeviceID = deviceId;
|
hwInfo.platform.usDeviceID = deviceId;
|
||||||
|
|
||||||
|
|
|
@ -78,7 +78,7 @@ DG2TEST_F(CommandEncodeDG2Test, whenProgramComputeWalkerThenApplyL3WAForDg2G10A0
|
||||||
{dg2G12DeviceIds[0], revIdA0}};
|
{dg2G12DeviceIds[0], revIdA0}};
|
||||||
|
|
||||||
KernelDescriptor kernelDescriptor;
|
KernelDescriptor kernelDescriptor;
|
||||||
EncodeWalkerArgs walkerArgs{KernelExecutionType::defaultType, true, kernelDescriptor};
|
EncodeWalkerArgs walkerArgs{KernelExecutionType::defaultType, true, kernelDescriptor, NEO::RequiredDispatchWalkOrder::None, 0};
|
||||||
|
|
||||||
for (const auto &[deviceID, revisionID] : dg2Configs) {
|
for (const auto &[deviceID, revisionID] : dg2Configs) {
|
||||||
hwInfo.platform.usRevId = revisionID;
|
hwInfo.platform.usRevId = revisionID;
|
||||||
|
|
Loading…
Reference in New Issue