From 33d2a40cc8ae05ba23533bd9a1922699f6890e4e Mon Sep 17 00:00:00 2001 From: Mateusz Jablonski Date: Tue, 12 Nov 2024 11:34:19 +0000 Subject: [PATCH] fix: setup threads per EU configs based on real threads per eu count Signed-off-by: Mateusz Jablonski --- shared/source/device/device_caps.cpp | 2 +- shared/source/release_helper/release_helper.h | 4 ++-- shared/source/release_helper/release_helper_base.inl | 2 +- shared/test/common/mocks/mock_release_helper.h | 2 +- .../unit_test/release_helper/release_helper_tests_base.cpp | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/shared/source/device/device_caps.cpp b/shared/source/device/device_caps.cpp index bc37fc7cc4..9c8756b974 100644 --- a/shared/source/device/device_caps.cpp +++ b/shared/source/device/device_caps.cpp @@ -135,7 +135,7 @@ void Device::initializeCaps() { deviceInfo.numThreadsPerEU = systemInfo.ThreadCount / systemInfo.EUCount; if (releaseHelper) { - deviceInfo.threadsPerEUConfigs = releaseHelper->getThreadsPerEUConfigs(); + deviceInfo.threadsPerEUConfigs = releaseHelper->getThreadsPerEUConfigs(deviceInfo.numThreadsPerEU); } auto maxWS = productHelper.getMaxThreadsForWorkgroupInDSSOrSS(hwInfo, static_cast(deviceInfo.maxNumEUsPerSubSlice), static_cast(deviceInfo.maxNumEUsPerDualSubSlice)) * simdSizeUsed; diff --git a/shared/source/release_helper/release_helper.h b/shared/source/release_helper/release_helper.h index 20df0ba2cb..a7eaa298ee 100644 --- a/shared/source/release_helper/release_helper.h +++ b/shared/source/release_helper/release_helper.h @@ -52,7 +52,7 @@ class ReleaseHelper { virtual bool isGlobalBindlessAllocatorEnabled() const = 0; virtual uint32_t getNumThreadsPerEu() const = 0; virtual uint64_t getTotalMemBankSize() const = 0; - virtual const ThreadsPerEUConfigs getThreadsPerEUConfigs() const = 0; + virtual const ThreadsPerEUConfigs getThreadsPerEUConfigs(uint32_t numThreadsPerEu) const = 0; virtual const std::string getDeviceConfigString(uint32_t tileCount, uint32_t sliceCount, uint32_t subSliceCount, uint32_t euPerSubSliceCount) const = 0; virtual bool isRayTracingSupported() const = 0; virtual uint32_t getL3BankCount() const = 0; @@ -94,7 +94,7 @@ class ReleaseHelperHw : public ReleaseHelper { bool isGlobalBindlessAllocatorEnabled() const override; uint32_t getNumThreadsPerEu() const override; uint64_t getTotalMemBankSize() const override; - const StackVec getThreadsPerEUConfigs() const override; + const StackVec getThreadsPerEUConfigs(uint32_t numThreadsPerEu) const override; const std::string getDeviceConfigString(uint32_t tileCount, uint32_t sliceCount, uint32_t subSliceCount, uint32_t euPerSubSliceCount) const override; bool isRayTracingSupported() const override; uint32_t getL3BankCount() const override; diff --git a/shared/source/release_helper/release_helper_base.inl b/shared/source/release_helper/release_helper_base.inl index 96ec80d06b..29c70aec40 100644 --- a/shared/source/release_helper/release_helper_base.inl +++ b/shared/source/release_helper/release_helper_base.inl @@ -100,7 +100,7 @@ uint64_t ReleaseHelperHw::getTotalMemBankSize() const { } template -const ThreadsPerEUConfigs ReleaseHelperHw::getThreadsPerEUConfigs() const { +const ThreadsPerEUConfigs ReleaseHelperHw::getThreadsPerEUConfigs(uint32_t numThreadsPerEu) const { return {4, 8}; } diff --git a/shared/test/common/mocks/mock_release_helper.h b/shared/test/common/mocks/mock_release_helper.h index 3fa2c750e0..4410e361cb 100644 --- a/shared/test/common/mocks/mock_release_helper.h +++ b/shared/test/common/mocks/mock_release_helper.h @@ -32,7 +32,7 @@ class MockReleaseHelper : public ReleaseHelper { ADDMETHOD_CONST_NOBASE(isGlobalBindlessAllocatorEnabled, bool, false, ()); ADDMETHOD_CONST_NOBASE(getNumThreadsPerEu, uint32_t, 8u, ()); ADDMETHOD_CONST_NOBASE(getTotalMemBankSize, uint64_t, 32ull * MemoryConstants::gigaByte, ()); - ADDMETHOD_CONST_NOBASE(getThreadsPerEUConfigs, const ThreadsPerEUConfigs, {}, ()); + ADDMETHOD_CONST_NOBASE(getThreadsPerEUConfigs, const ThreadsPerEUConfigs, {}, (uint32_t numThreadsPerEu)); ADDMETHOD_CONST_NOBASE(getDeviceConfigString, const std::string, {}, (uint32_t tileCount, uint32_t sliceCount, uint32_t subSliceCount, uint32_t euPerSubSliceCount)); ADDMETHOD_CONST_NOBASE(isRayTracingSupported, bool, true, ()); ADDMETHOD_CONST_NOBASE(getL3BankCount, uint32_t, 0u, ()); diff --git a/shared/test/unit_test/release_helper/release_helper_tests_base.cpp b/shared/test/unit_test/release_helper/release_helper_tests_base.cpp index d710dbb2ca..e2929c1629 100644 --- a/shared/test/unit_test/release_helper/release_helper_tests_base.cpp +++ b/shared/test/unit_test/release_helper/release_helper_tests_base.cpp @@ -52,7 +52,7 @@ void ReleaseHelperTestsBase::whenGettingThreadsPerEuConfigsThen4And8AreReturned( ipVersion.revision = revision; releaseHelper = ReleaseHelper::create(ipVersion); ASSERT_NE(nullptr, releaseHelper); - auto &configs = releaseHelper->getThreadsPerEUConfigs(); + auto &configs = releaseHelper->getThreadsPerEUConfigs(8u); EXPECT_EQ(2U, configs.size()); EXPECT_EQ(4U, configs[0]);