From 95b035a07125895aaca231c899ccd85d101057c2 Mon Sep 17 00:00:00 2001 From: Kamil Kopryk Date: Thu, 5 Sep 2024 15:43:24 +0000 Subject: [PATCH] fix: global stateless heap creation in heapless path Related-To: NEO-10681 Signed-off-by: Kamil Kopryk --- .../core/source/helpers/api_specific_config_l0.cpp | 9 +++++++++ opencl/source/helpers/api_specific_config_ocl.cpp | 5 +++++ shared/source/helpers/api_specific_config.h | 2 ++ shared/test/unit_test/api_specific_config_ult.cpp | 13 +++++++++++++ 4 files changed, 29 insertions(+) diff --git a/level_zero/core/source/helpers/api_specific_config_l0.cpp b/level_zero/core/source/helpers/api_specific_config_l0.cpp index f4e13d23c5..f13bd0d89d 100644 --- a/level_zero/core/source/helpers/api_specific_config_l0.cpp +++ b/level_zero/core/source/helpers/api_specific_config_l0.cpp @@ -6,10 +6,12 @@ */ #include "shared/source/debug_settings/debug_settings_manager.h" +#include "shared/source/execution_environment/root_device_environment.h" #include "shared/source/helpers/api_specific_config.h" #include "shared/source/release_helper/release_helper.h" #include "level_zero/core/source/compiler_interface/l0_reg_path.h" +#include "level_zero/core/source/gfx_core_helpers/l0_gfx_core_helper.h" #include #include @@ -93,4 +95,11 @@ std::string ApiSpecificConfig::compilerCacheFileExtension() { int64_t ApiSpecificConfig::compilerCacheDefaultEnabled() { return 1l; } + +bool ApiSpecificConfig::isGlobalStatelessEnabled(const RootDeviceEnvironment &rootDeviceEnvironment) { + + auto &l0GfxCoreHelper = rootDeviceEnvironment.getHelper(); + return l0GfxCoreHelper.getHeapAddressModel(rootDeviceEnvironment) == HeapAddressModel::globalStateless; +} + } // namespace NEO diff --git a/opencl/source/helpers/api_specific_config_ocl.cpp b/opencl/source/helpers/api_specific_config_ocl.cpp index 50099c623e..f80c3adacc 100644 --- a/opencl/source/helpers/api_specific_config_ocl.cpp +++ b/opencl/source/helpers/api_specific_config_ocl.cpp @@ -84,4 +84,9 @@ std::string ApiSpecificConfig::compilerCacheFileExtension() { int64_t ApiSpecificConfig::compilerCacheDefaultEnabled() { return 1l; } + +bool ApiSpecificConfig::isGlobalStatelessEnabled(const RootDeviceEnvironment &rootDeviceEnvironment) { + return false; +} + } // namespace NEO diff --git a/shared/source/helpers/api_specific_config.h b/shared/source/helpers/api_specific_config.h index 91a6a898ee..fcf6685bef 100644 --- a/shared/source/helpers/api_specific_config.h +++ b/shared/source/helpers/api_specific_config.h @@ -15,6 +15,7 @@ namespace NEO { class ReleaseHelper; +struct RootDeviceEnvironment; struct ApiSpecificConfig { enum ApiType { OCL, @@ -26,6 +27,7 @@ struct ApiSpecificConfig { static bool isHostAllocationCacheEnabled(); static bool isDeviceUsmPoolingEnabled(); static bool isHostUsmPoolingEnabled(); + static bool isGlobalStatelessEnabled(const RootDeviceEnvironment &rootDeviceEnvironment); static ApiType getApiType(); static std::string getName(); static uint64_t getReducedMaxAllocSize(uint64_t maxAllocSize); diff --git a/shared/test/unit_test/api_specific_config_ult.cpp b/shared/test/unit_test/api_specific_config_ult.cpp index b6febd3af2..ea220632a8 100644 --- a/shared/test/unit_test/api_specific_config_ult.cpp +++ b/shared/test/unit_test/api_specific_config_ult.cpp @@ -15,6 +15,9 @@ namespace NEO { class ReleaseHelper; ApiSpecificConfig::ApiType apiTypeForUlts = ApiSpecificConfig::OCL; + +bool globalStatelessL0 = false; +bool globalStatelessOcl = false; bool isStatelessCompressionSupportedForUlts = true; StackVec validUltL0Prefixes = {"NEO_L0_", "NEO_", ""}; @@ -113,4 +116,14 @@ int64_t ApiSpecificConfig::compilerCacheDefaultEnabled() { return 1l; } +bool ApiSpecificConfig::isGlobalStatelessEnabled(const RootDeviceEnvironment &rootDeviceEnvironment) { + + if (apiTypeForUlts == ApiSpecificConfig::L0) { + return globalStatelessL0; + + } else { + return globalStatelessOcl; + } +} + } // namespace NEO