From 6bd61827593e5aa52de9b929c2fcd10a20a4ec3b Mon Sep 17 00:00:00 2001 From: Michal Mrozek Date: Wed, 26 May 2021 10:38:32 +0000 Subject: [PATCH] Improve helper. Signed-off-by: Michal Mrozek --- opencl/source/command_queue/local_work_size.cpp | 2 +- opencl/test/unit_test/helpers/hw_helper_tests.cpp | 4 ++-- shared/source/helpers/hw_helper.h | 4 ++-- shared/source/helpers/hw_helper_bdw_plus.inl | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/opencl/source/command_queue/local_work_size.cpp b/opencl/source/command_queue/local_work_size.cpp index 7d2d2c8bba..1c05ecbd12 100644 --- a/opencl/source/command_queue/local_work_size.cpp +++ b/opencl/source/command_queue/local_work_size.cpp @@ -423,7 +423,7 @@ Vec3 computeWorkgroupSize(const DispatchInfo &dispatchInfo) { setSpecialWorkgroupSize(workGroupSize); } else if (DebugManager.flags.EnableComputeWorkSizeND.get()) { WorkSizeInfo wsInfo(dispatchInfo); - if (wsInfo.slmTotalSize == 0 && !wsInfo.hasBarriers && !wsInfo.imgUsed && hwHelper.preferSmallWorkgroupSizeForKernel(kernel->getKernelInfo().heapInfo.KernelUnpaddedSize) && + if (wsInfo.slmTotalSize == 0 && !wsInfo.hasBarriers && !wsInfo.imgUsed && hwHelper.preferSmallWorkgroupSizeForKernel(kernel->getKernelInfo().heapInfo.KernelUnpaddedSize, hwInfo) && ((dispatchInfo.getDim() == 1) && (dispatchInfo.getGWS().x % wsInfo.simdSize * 2 == 0))) { wsInfo.maxWorkGroupSize = wsInfo.simdSize * 2; } diff --git a/opencl/test/unit_test/helpers/hw_helper_tests.cpp b/opencl/test/unit_test/helpers/hw_helper_tests.cpp index 4133234df8..9e5a00ecd7 100644 --- a/opencl/test/unit_test/helpers/hw_helper_tests.cpp +++ b/opencl/test/unit_test/helpers/hw_helper_tests.cpp @@ -1278,8 +1278,8 @@ TEST_F(HwHelperTest, whenGettingNumberOfCacheRegionsThenReturnZero) { HWCMDTEST_F(IGFX_GEN8_CORE, HwHelperTest, whenCheckingForSmallKernelPreferenceThenFalseIsReturned) { auto &hwHelper = HwHelper::get(renderCoreFamily); - EXPECT_FALSE(hwHelper.preferSmallWorkgroupSizeForKernel(0u)); - EXPECT_FALSE(hwHelper.preferSmallWorkgroupSizeForKernel(20000u)); + EXPECT_FALSE(hwHelper.preferSmallWorkgroupSizeForKernel(0u, this->pClDevice->getHardwareInfo())); + EXPECT_FALSE(hwHelper.preferSmallWorkgroupSizeForKernel(20000u, this->pClDevice->getHardwareInfo())); } TEST_F(HwHelperTest, givenGenHelperWhenKernelArgumentIsNotPureStatefulThenRequireNonAuxMode) { diff --git a/shared/source/helpers/hw_helper.h b/shared/source/helpers/hw_helper.h index a28cb16688..b489c3b874 100644 --- a/shared/source/helpers/hw_helper.h +++ b/shared/source/helpers/hw_helper.h @@ -71,7 +71,7 @@ class HwHelper { virtual bool isFenceAllocationRequired(const HardwareInfo &hwInfo) const = 0; virtual const AubMemDump::LrcaHelper &getCsTraits(aub_stream::EngineType engineType) const = 0; virtual bool hvAlign4Required() const = 0; - virtual bool preferSmallWorkgroupSizeForKernel(const size_t size) const = 0; + virtual bool preferSmallWorkgroupSizeForKernel(const size_t size, const HardwareInfo &hwInfo) const = 0; virtual bool isBufferSizeSuitableForRenderCompression(const size_t size) const = 0; virtual bool obtainBlitterPreference(const HardwareInfo &hwInfo) const = 0; virtual FrontEndType getFrontEndType(const HardwareInfo &hwInfo) const = 0; @@ -389,7 +389,7 @@ class HwHelperHw : public HwHelper { void applyAdditionalCompressionSettings(Gmm &gmm, bool isNotCompressed) const override; - bool preferSmallWorkgroupSizeForKernel(const size_t size) const override; + bool preferSmallWorkgroupSizeForKernel(const size_t size, const HardwareInfo &hwInfo) const override; protected: LocalMemoryAccessMode getDefaultLocalMemoryAccessMode(const HardwareInfo &hwInfo) const override; diff --git a/shared/source/helpers/hw_helper_bdw_plus.inl b/shared/source/helpers/hw_helper_bdw_plus.inl index 9a8bdc8b75..bc432c87cd 100644 --- a/shared/source/helpers/hw_helper_bdw_plus.inl +++ b/shared/source/helpers/hw_helper_bdw_plus.inl @@ -104,7 +104,7 @@ uint64_t HwHelperHw::getGpuTimeStampInNS(uint64_t timeStamp, double f } template -inline bool HwHelperHw::preferSmallWorkgroupSizeForKernel(const size_t size) const { +inline bool HwHelperHw::preferSmallWorkgroupSizeForKernel(const size_t size, const HardwareInfo &hwInfo) const { return false; }