mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-30 09:58:55 +08:00
refactor: improve implicit scaling interface
Signed-off-by: Dunajski, Bartosz <bartosz.dunajski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
93e941fd73
commit
b266f1f3cc
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2023 Intel Corporation
|
||||
* Copyright (C) 2020-2024 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
@@ -1591,7 +1591,14 @@ HWTEST2_F(MultiTileCommandListAppendLaunchKernelXeHpCoreTest, givenCooperativeKe
|
||||
itorWalker = find<typename FamilyType::DefaultWalkerType *>(cmdList.begin(), cmdList.end());
|
||||
cmd = genCmdCast<typename FamilyType::DefaultWalkerType *>(*itorWalker);
|
||||
EXPECT_TRUE(cmd->getWorkloadPartitionEnable());
|
||||
EXPECT_EQ(16u, cmd->getPartitionSize());
|
||||
|
||||
const auto &gfxCoreHelper = device->getGfxCoreHelper();
|
||||
|
||||
if (gfxCoreHelper.singleTileExecImplicitScalingRequired(true)) {
|
||||
EXPECT_EQ(16u, cmd->getPartitionSize());
|
||||
} else {
|
||||
EXPECT_EQ(4u, cmd->getPartitionSize());
|
||||
}
|
||||
}
|
||||
|
||||
HWTEST2_F(MultiTileCommandListAppendLaunchKernelXeHpCoreTest,
|
||||
|
||||
@@ -1264,7 +1264,9 @@ bool Kernel::hasRunFinished(TimestampPacketContainer *timestampContainer) {
|
||||
}
|
||||
|
||||
bool Kernel::isSingleSubdevicePreferred() const {
|
||||
return this->singleSubdevicePreferredInCurrentEnqueue || this->usesSyncBuffer();
|
||||
auto &gfxCoreHelper = this->getGfxCoreHelper();
|
||||
|
||||
return this->singleSubdevicePreferredInCurrentEnqueue || gfxCoreHelper.singleTileExecImplicitScalingRequired(this->usesSyncBuffer());
|
||||
}
|
||||
|
||||
void Kernel::setInlineSamplers() {
|
||||
|
||||
@@ -380,6 +380,8 @@ TEST_F(KernelTests, GivenInvalidParamNameWhenGettingWorkGroupInfoThenInvalidValu
|
||||
}
|
||||
|
||||
TEST_F(KernelTests, WhenIsSingleSubdevicePreferredIsCalledThenCorrectValuesAreReturned) {
|
||||
auto &helper = pClDevice->getGfxCoreHelper();
|
||||
|
||||
std::unique_ptr<MockKernel> kernel{MockKernel::create<MockKernel>(pClDevice->getDevice(), pProgram)};
|
||||
for (auto usesSyncBuffer : ::testing::Bool()) {
|
||||
kernel->getAllocatedKernelInfo()->kernelDescriptor.kernelAttributes.flags.usesSyncBuffer = usesSyncBuffer;
|
||||
@@ -387,7 +389,7 @@ TEST_F(KernelTests, WhenIsSingleSubdevicePreferredIsCalledThenCorrectValuesAreRe
|
||||
kernel->singleSubdevicePreferredInCurrentEnqueue = singleSubdevicePreferredInCurrentEnqueue;
|
||||
|
||||
EXPECT_EQ(usesSyncBuffer, kernel->usesSyncBuffer());
|
||||
auto expectedSingleSubdevicePreferredInCurrentEnqueue = singleSubdevicePreferredInCurrentEnqueue || usesSyncBuffer;
|
||||
auto expectedSingleSubdevicePreferredInCurrentEnqueue = singleSubdevicePreferredInCurrentEnqueue || helper.singleTileExecImplicitScalingRequired(usesSyncBuffer);
|
||||
EXPECT_EQ(expectedSingleSubdevicePreferredInCurrentEnqueue, kernel->isSingleSubdevicePreferred());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -403,7 +403,7 @@ void EncodeDispatchKernel<Family>::encode(CommandContainer &container, EncodeDis
|
||||
!(container.getFlushTaskUsedForImmediate() || container.isUsingPrimaryBuffer()),
|
||||
!args.isKernelDispatchedFromImmediateCmdList,
|
||||
args.dcFlushEnable,
|
||||
args.isCooperative,
|
||||
gfxCoreHelper.singleTileExecImplicitScalingRequired(args.isCooperative),
|
||||
workPartitionAllocationGpuVa,
|
||||
hwInfo);
|
||||
} else {
|
||||
|
||||
@@ -182,6 +182,8 @@ class GfxCoreHelper {
|
||||
virtual bool is48ResourceNeededForCmdBuffer() const = 0;
|
||||
virtual uint32_t getKernelPrivateMemSize(const KernelDescriptor &kernelDescriptor) const = 0;
|
||||
|
||||
virtual bool singleTileExecImplicitScalingRequired(bool cooperativeKernel) const = 0;
|
||||
|
||||
virtual ~GfxCoreHelper() = default;
|
||||
|
||||
protected:
|
||||
@@ -402,6 +404,8 @@ class GfxCoreHelperHw : public GfxCoreHelper {
|
||||
|
||||
uint32_t getKernelPrivateMemSize(const KernelDescriptor &kernelDescriptor) const override;
|
||||
|
||||
bool singleTileExecImplicitScalingRequired(bool cooperativeKernel) const override;
|
||||
|
||||
~GfxCoreHelperHw() override = default;
|
||||
|
||||
protected:
|
||||
|
||||
@@ -740,4 +740,9 @@ bool GfxCoreHelperHw<GfxFamily>::is48ResourceNeededForCmdBuffer() const {
|
||||
return true;
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
bool GfxCoreHelperHw<GfxFamily>::singleTileExecImplicitScalingRequired(bool cooperativeKernel) const {
|
||||
return cooperativeKernel;
|
||||
}
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2021-2023 Intel Corporation
|
||||
* Copyright (C) 2021-2024 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
@@ -1084,7 +1084,14 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, CommandEncodeStatesImplicitScaling, givenCooperativ
|
||||
|
||||
auto partitionWalkerCmd = genCmdCast<DefaultWalkerType *>(*itor);
|
||||
EXPECT_EQ(DefaultWalkerType::PARTITION_TYPE::PARTITION_TYPE_X, partitionWalkerCmd->getPartitionType());
|
||||
|
||||
const auto &gfxCoreHelper = pDevice->getGfxCoreHelper();
|
||||
uint32_t expectedPartitionSize = dims[0];
|
||||
|
||||
if (!gfxCoreHelper.singleTileExecImplicitScalingRequired(isCooperative)) {
|
||||
expectedPartitionSize /= dispatchArgs.partitionCount;
|
||||
}
|
||||
|
||||
EXPECT_EQ(expectedPartitionSize, partitionWalkerCmd->getPartitionSize());
|
||||
}
|
||||
|
||||
|
||||
@@ -1657,6 +1657,13 @@ TEST_F(GfxCoreHelperTest, whenOnlyPerThreadPrivateMemorySizeIsDefinedThenItIsRet
|
||||
EXPECT_EQ(0x100u, getHelper<GfxCoreHelper>().getKernelPrivateMemSize(kernelDescriptor));
|
||||
}
|
||||
|
||||
HWTEST_F(GfxCoreHelperTest, givenCooperativeKernelWhenAskingForSingleTileDispatchThenReturnTrue) {
|
||||
auto &helper = getHelper<GfxCoreHelper>();
|
||||
|
||||
EXPECT_TRUE(helper.singleTileExecImplicitScalingRequired(true));
|
||||
EXPECT_FALSE(helper.singleTileExecImplicitScalingRequired(false));
|
||||
}
|
||||
|
||||
HWTEST2_F(GfxCoreHelperTest, whenPrivateScratchSizeIsDefinedThenItIsReturnedAsKernelPrivateMemorySize, IsAtLeastXeHpCore) {
|
||||
KernelDescriptor kernelDescriptor{};
|
||||
kernelDescriptor.kernelAttributes.perHwThreadPrivateMemorySize = 0x100u;
|
||||
|
||||
Reference in New Issue
Block a user