feature: Add default ip version values to helper

Signed-off-by: Daria Hinz <daria.hinz@intel.com>
Related-To: NEO-8021
This commit is contained in:
Daria Hinz 2023-05-31 11:29:22 +00:00 committed by Compute-Runtime-Automation
parent cf5100c134
commit 68b6cfebd2
36 changed files with 251 additions and 92 deletions

View File

@ -673,8 +673,16 @@ TEST_F(MockOfflineCompilerTests, givenDeprecatedAcronymsWithRevisionWhenInitHwIn
mockOfflineCompiler.deviceName = acronym.str();
mockOfflineCompiler.revisionId = 0x3;
EXPECT_EQ(OclocErrorCode::SUCCESS, mockOfflineCompiler.initHardwareInfo(mockOfflineCompiler.deviceName));
auto defaultIpVersion = mockOfflineCompiler.compilerProductHelper->getDefaultHwIpVersion();
auto productConfig = mockOfflineCompiler.compilerProductHelper->matchRevisionIdWithProductConfig(defaultIpVersion, mockOfflineCompiler.revisionId);
if (mockOfflineCompiler.argHelper->productConfigHelper->isSupportedProductConfig(productConfig)) {
EXPECT_EQ(mockOfflineCompiler.hwInfo.ipVersion.value, productConfig);
} else {
EXPECT_EQ(mockOfflineCompiler.hwInfo.ipVersion.value, defaultIpVersion);
}
EXPECT_EQ(mockOfflineCompiler.revisionId, static_cast<decltype(mockOfflineCompiler.revisionId)>(mockOfflineCompiler.hwInfo.platform.usRevId));
EXPECT_EQ(mockOfflineCompiler.revisionId, static_cast<decltype(mockOfflineCompiler.revisionId)>(mockOfflineCompiler.hwInfo.ipVersion.revision));
}
}

View File

@ -130,4 +130,34 @@ TEST_F(Dg2OfflineCompilerTests, givenDg2G10DeviceAndUnknownRevisionIdValueWhenIn
EXPECT_EQ(mockOfflineCompiler.deviceConfig, dg2G10Config);
}
DG2TEST_F(Dg2OfflineCompilerTests, givenDg2DeprecatedAcronymAndRevisionIdValueWhenInitHwInfoThenCorrectValuesAreSet) {
MockOfflineCompiler mockOfflineCompiler;
std::vector<std::pair<HardwareIpVersion, int>> dg2G10Configs = {
{AOT::DG2_G10_A0, REV_ID_A0},
{AOT::DG2_G10_A1, REV_ID_A1},
{AOT::DG2_G10_B0, REV_ID_B0},
{AOT::DG2_G10_C0, REV_ID_C0}};
std::string deprecatedAcronym = NEO::hardwarePrefix[IGFX_DG2];
for (const auto &[config, revisionID] : dg2G10Configs) {
mockOfflineCompiler.revisionId = revisionID;
mockOfflineCompiler.initHardwareInfo(deprecatedAcronym);
EXPECT_EQ(mockOfflineCompiler.hwInfo.platform.usRevId, revisionID);
EXPECT_EQ(mockOfflineCompiler.hwInfo.ipVersion.value, config.value);
}
}
DG2TEST_F(Dg2OfflineCompilerTests, givenDg2DeprecatedAcronymAndInvalisRevisionIdValueWhenInitHwInfoThenCorrectValuesAreSet) {
MockOfflineCompiler mockOfflineCompiler;
std::string deprecatedAcronym = NEO::hardwarePrefix[IGFX_DG2];
mockOfflineCompiler.revisionId = CommonConstants::invalidRevisionID;
mockOfflineCompiler.initHardwareInfo(deprecatedAcronym);
EXPECT_EQ(mockOfflineCompiler.hwInfo.platform.usRevId, CommonConstants::invalidRevisionID);
EXPECT_EQ(mockOfflineCompiler.hwInfo.ipVersion.value, AOT::DG2_G10_A0);
}
} // namespace NEO

View File

@ -443,9 +443,12 @@ int OfflineCompiler::initHardwareInfoForDeprecatedAcronyms(std::string deviceNam
hwInfo = *hardwareInfoTable[product];
if (revisionId != -1) {
hwInfo.platform.usRevId = revisionId;
hwInfo.ipVersion.revision = revisionId;
}
compilerProductHelper = NEO::CompilerProductHelper::create(hwInfo.platform.eProductFamily);
auto defaultIpVersion = compilerProductHelper->getDefaultHwIpVersion();
auto productConfig = compilerProductHelper->matchRevisionIdWithProductConfig(defaultIpVersion, revisionId);
hwInfo.ipVersion = argHelper->productConfigHelper->isSupportedProductConfig(productConfig) ? productConfig : defaultIpVersion;
uint64_t config = hwInfoConfig ? hwInfoConfig : compilerProductHelper->getHwInfoConfig(hwInfo);
setHwInfoValuesFromConfig(config, hwInfo);
hardwareInfoBaseSetup[hwInfo.platform.eProductFamily](&hwInfo, true, *compilerProductHelper);

View File

@ -101,6 +101,10 @@ macro(macro_for_each_platform)
if(EXISTS ${SRC_FILE})
list(APPEND ${CORE_TYPE}_SRC_LINK_BASE ${SRC_FILE})
endif()
set(SRC_FILE ${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR}${CORE_TYPE_LOWER}/compiler_product_helper_${PLATFORM_IT_LOWER}_base.inl)
if(EXISTS ${SRC_FILE})
list(APPEND ${CORE_TYPE}_SRC_LINK_BASE ${SRC_FILE})
endif()
set(SRC_FILE ${PATH_TO_CORE}enable_compiler_product_helper_${PLATFORM_IT_LOWER}.cpp)
if(EXISTS ${SRC_FILE})
list(APPEND ${CORE_TYPE}_SRC_LINK_BASE ${SRC_FILE})

View File

@ -14,6 +14,7 @@
#include "shared/source/helpers/compiler_product_helper_before_xe_hpc.inl"
#include "shared/source/helpers/compiler_product_helper_disable_split_matrix_multiply_accumulate.inl"
#include "shared/source/helpers/compiler_product_helper_enable_subgroup_local_block_io.inl"
#include "shared/source/helpers/compiler_product_helper_product_config_default.inl"
#include "platforms.h"
@ -24,7 +25,7 @@ uint64_t CompilerProductHelperHw<IGFX_ELKHARTLAKE>::getHwInfoConfig(const Hardwa
}
template <>
uint32_t CompilerProductHelperHw<IGFX_ELKHARTLAKE>::getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const {
uint32_t CompilerProductHelperHw<IGFX_ELKHARTLAKE>::getDefaultHwIpVersion() const {
return AOT::EHL;
}

View File

@ -14,6 +14,7 @@
#include "shared/source/helpers/compiler_product_helper_before_xe_hpc.inl"
#include "shared/source/helpers/compiler_product_helper_disable_split_matrix_multiply_accumulate.inl"
#include "shared/source/helpers/compiler_product_helper_enable_subgroup_local_block_io.inl"
#include "shared/source/helpers/compiler_product_helper_product_config_default.inl"
#include "platforms.h"
@ -24,7 +25,7 @@ uint64_t CompilerProductHelperHw<IGFX_ICELAKE_LP>::getHwInfoConfig(const Hardwar
}
template <>
uint32_t CompilerProductHelperHw<IGFX_ICELAKE_LP>::getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const {
uint32_t CompilerProductHelperHw<IGFX_ICELAKE_LP>::getDefaultHwIpVersion() const {
return AOT::ICL;
}

View File

@ -14,6 +14,7 @@
#include "shared/source/helpers/compiler_product_helper_before_xe_hpc.inl"
#include "shared/source/helpers/compiler_product_helper_disable_split_matrix_multiply_accumulate.inl"
#include "shared/source/helpers/compiler_product_helper_enable_subgroup_local_block_io.inl"
#include "shared/source/helpers/compiler_product_helper_product_config_default.inl"
#include "platforms.h"
@ -24,7 +25,7 @@ uint64_t CompilerProductHelperHw<IGFX_LAKEFIELD>::getHwInfoConfig(const Hardware
}
template <>
uint32_t CompilerProductHelperHw<IGFX_LAKEFIELD>::getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const {
uint32_t CompilerProductHelperHw<IGFX_LAKEFIELD>::getDefaultHwIpVersion() const {
return AOT::LKF;
}

View File

@ -13,15 +13,15 @@
#include "shared/source/helpers/compiler_product_helper_before_xe_hpc.inl"
#include "shared/source/helpers/compiler_product_helper_disable_split_matrix_multiply_accumulate.inl"
#include "shared/source/helpers/compiler_product_helper_enable_subgroup_local_block_io.inl"
#include "shared/source/helpers/compiler_product_helper_product_config_default.inl"
#include "shared/source/helpers/compiler_product_helper_tgllp_and_later.inl"
#include "compiler_product_helper_adln.inl"
#include "platforms.h"
namespace NEO {
template <>
uint32_t CompilerProductHelperHw<IGFX_ALDERLAKE_N>::getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const {
uint32_t CompilerProductHelperHw<IGFX_ALDERLAKE_N>::getDefaultHwIpVersion() const {
return AOT::ADL_N;
}

View File

@ -13,15 +13,15 @@
#include "shared/source/helpers/compiler_product_helper_before_xe_hpc.inl"
#include "shared/source/helpers/compiler_product_helper_disable_split_matrix_multiply_accumulate.inl"
#include "shared/source/helpers/compiler_product_helper_enable_subgroup_local_block_io.inl"
#include "shared/source/helpers/compiler_product_helper_product_config_default.inl"
#include "shared/source/helpers/compiler_product_helper_tgllp_and_later.inl"
#include "compiler_product_helper_adlp.inl"
#include "platforms.h"
namespace NEO {
template <>
uint32_t CompilerProductHelperHw<IGFX_ALDERLAKE_P>::getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const {
uint32_t CompilerProductHelperHw<IGFX_ALDERLAKE_P>::getDefaultHwIpVersion() const {
return AOT::ADL_P;
}

View File

@ -13,6 +13,7 @@
#include "shared/source/helpers/compiler_product_helper_before_xe_hpc.inl"
#include "shared/source/helpers/compiler_product_helper_disable_split_matrix_multiply_accumulate.inl"
#include "shared/source/helpers/compiler_product_helper_enable_subgroup_local_block_io.inl"
#include "shared/source/helpers/compiler_product_helper_product_config_default.inl"
#include "shared/source/helpers/compiler_product_helper_tgllp_and_later.inl"
#include "platforms.h"
@ -24,7 +25,7 @@ uint64_t CompilerProductHelperHw<IGFX_ALDERLAKE_S>::getHwInfoConfig(const Hardwa
}
template <>
uint32_t CompilerProductHelperHw<IGFX_ALDERLAKE_S>::getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const {
uint32_t CompilerProductHelperHw<IGFX_ALDERLAKE_S>::getDefaultHwIpVersion() const {
return AOT::ADL_S;
}

View File

@ -13,6 +13,7 @@
#include "shared/source/helpers/compiler_product_helper_before_xe_hpc.inl"
#include "shared/source/helpers/compiler_product_helper_disable_split_matrix_multiply_accumulate.inl"
#include "shared/source/helpers/compiler_product_helper_enable_subgroup_local_block_io.inl"
#include "shared/source/helpers/compiler_product_helper_product_config_default.inl"
#include "shared/source/helpers/compiler_product_helper_tgllp_and_later.inl"
#include "platforms.h"
@ -24,7 +25,7 @@ uint64_t CompilerProductHelperHw<IGFX_DG1>::getHwInfoConfig(const HardwareInfo &
}
template <>
uint32_t CompilerProductHelperHw<IGFX_DG1>::getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const {
uint32_t CompilerProductHelperHw<IGFX_DG1>::getDefaultHwIpVersion() const {
return AOT::DG1;
}

View File

@ -13,6 +13,7 @@
#include "shared/source/helpers/compiler_product_helper_before_xe_hpc.inl"
#include "shared/source/helpers/compiler_product_helper_disable_split_matrix_multiply_accumulate.inl"
#include "shared/source/helpers/compiler_product_helper_enable_subgroup_local_block_io.inl"
#include "shared/source/helpers/compiler_product_helper_product_config_default.inl"
#include "shared/source/helpers/compiler_product_helper_tgllp_and_later.inl"
#include "platforms.h"
@ -29,7 +30,7 @@ bool CompilerProductHelperHw<IGFX_ROCKETLAKE>::isForceEmuInt32DivRemSPRequired()
}
template <>
uint32_t CompilerProductHelperHw<IGFX_ROCKETLAKE>::getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const {
uint32_t CompilerProductHelperHw<IGFX_ROCKETLAKE>::getDefaultHwIpVersion() const {
return AOT::RKL;
}

View File

@ -13,6 +13,7 @@
#include "shared/source/helpers/compiler_product_helper_before_xe_hpc.inl"
#include "shared/source/helpers/compiler_product_helper_disable_split_matrix_multiply_accumulate.inl"
#include "shared/source/helpers/compiler_product_helper_enable_subgroup_local_block_io.inl"
#include "shared/source/helpers/compiler_product_helper_product_config_default.inl"
#include "shared/source/helpers/compiler_product_helper_tgllp_and_later.inl"
#include "platforms.h"
@ -24,7 +25,7 @@ uint64_t CompilerProductHelperHw<IGFX_TIGERLAKE_LP>::getHwInfoConfig(const Hardw
}
template <>
uint32_t CompilerProductHelperHw<IGFX_TIGERLAKE_LP>::getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const {
uint32_t CompilerProductHelperHw<IGFX_TIGERLAKE_LP>::getDefaultHwIpVersion() const {
return AOT::TGL;
}

View File

@ -14,12 +14,13 @@
#include "shared/source/helpers/compiler_product_helper_before_xe_hpc.inl"
#include "shared/source/helpers/compiler_product_helper_disable_split_matrix_multiply_accumulate.inl"
#include "shared/source/helpers/compiler_product_helper_disable_subgroup_local_block_io.inl"
#include "shared/source/helpers/compiler_product_helper_product_config_default.inl"
#include "platforms.h"
namespace NEO {
template <>
uint32_t CompilerProductHelperHw<IGFX_BROADWELL>::getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const {
uint32_t CompilerProductHelperHw<IGFX_BROADWELL>::getDefaultHwIpVersion() const {
return AOT::BDW;
}

View File

@ -14,6 +14,7 @@
#include "shared/source/helpers/compiler_product_helper_before_xe_hpc.inl"
#include "shared/source/helpers/compiler_product_helper_disable_split_matrix_multiply_accumulate.inl"
#include "shared/source/helpers/compiler_product_helper_disable_subgroup_local_block_io.inl"
#include "shared/source/helpers/compiler_product_helper_product_config_default.inl"
#include "platforms.h"
@ -30,7 +31,7 @@ uint32_t CompilerProductHelperHw<IGFX_BROXTON>::getNumThreadsPerEu() const {
}
template <>
uint32_t CompilerProductHelperHw<IGFX_BROXTON>::getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const {
uint32_t CompilerProductHelperHw<IGFX_BROXTON>::getDefaultHwIpVersion() const {
return AOT::APL;
}

View File

@ -26,6 +26,11 @@ uint64_t CompilerProductHelperHw<IGFX_COFFEELAKE>::getHwInfoConfig(const Hardwar
return 0x100030006;
}
template <>
uint32_t CompilerProductHelperHw<IGFX_COFFEELAKE>::getDefaultHwIpVersion() const {
return AOT::CFL;
}
template <>
uint32_t CompilerProductHelperHw<IGFX_COFFEELAKE>::getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const {
auto deviceId = hwInfo.platform.usDeviceID;
@ -40,7 +45,7 @@ uint32_t CompilerProductHelperHw<IGFX_COFFEELAKE>::getProductConfigFromHwInfo(co
} else if (isWhl) {
return AOT::WHL;
}
return AOT::UNKNOWN_ISA;
return getDefaultHwIpVersion();
}
static EnableCompilerProductHelper<IGFX_COFFEELAKE> enableCompilerProductHelperCFL;

View File

@ -14,6 +14,7 @@
#include "shared/source/helpers/compiler_product_helper_before_xe_hpc.inl"
#include "shared/source/helpers/compiler_product_helper_disable_split_matrix_multiply_accumulate.inl"
#include "shared/source/helpers/compiler_product_helper_disable_subgroup_local_block_io.inl"
#include "shared/source/helpers/compiler_product_helper_product_config_default.inl"
#include "platforms.h"
@ -29,7 +30,7 @@ uint32_t CompilerProductHelperHw<IGFX_GEMINILAKE>::getNumThreadsPerEu() const {
}
template <>
uint32_t CompilerProductHelperHw<IGFX_GEMINILAKE>::getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const {
uint32_t CompilerProductHelperHw<IGFX_GEMINILAKE>::getDefaultHwIpVersion() const {
return AOT::GLK;
}

View File

@ -26,6 +26,11 @@ uint64_t CompilerProductHelperHw<IGFX_KABYLAKE>::getHwInfoConfig(const HardwareI
return 0x100030006;
}
template <>
uint32_t CompilerProductHelperHw<IGFX_KABYLAKE>::getDefaultHwIpVersion() const {
return AOT::KBL;
}
template <>
uint32_t CompilerProductHelperHw<IGFX_KABYLAKE>::getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const {
auto deviceId = hwInfo.platform.usDeviceID;
@ -37,7 +42,7 @@ uint32_t CompilerProductHelperHw<IGFX_KABYLAKE>::getProductConfigFromHwInfo(cons
} else if (isAml) {
return AOT::AML;
}
return AOT::UNKNOWN_ISA;
return getDefaultHwIpVersion();
}
static EnableCompilerProductHelper<IGFX_KABYLAKE> enableCompilerProductHelperKBL;

View File

@ -14,6 +14,7 @@
#include "shared/source/helpers/compiler_product_helper_before_xe_hpc.inl"
#include "shared/source/helpers/compiler_product_helper_disable_split_matrix_multiply_accumulate.inl"
#include "shared/source/helpers/compiler_product_helper_disable_subgroup_local_block_io.inl"
#include "shared/source/helpers/compiler_product_helper_product_config_default.inl"
#include "platforms.h"
@ -25,7 +26,7 @@ uint64_t CompilerProductHelperHw<IGFX_SKYLAKE>::getHwInfoConfig(const HardwareIn
}
template <>
uint32_t CompilerProductHelperHw<IGFX_SKYLAKE>::getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const {
uint32_t CompilerProductHelperHw<IGFX_SKYLAKE>::getDefaultHwIpVersion() const {
return AOT::SKL;
}

View File

@ -50,6 +50,7 @@ set(NEO_CORE_HELPERS
${CMAKE_CURRENT_SOURCE_DIR}/compiler_product_helper_disable_subgroup_local_block_io.inl
${CMAKE_CURRENT_SOURCE_DIR}/compiler_product_helper_enable_split_matrix_multiply_accumulate.inl
${CMAKE_CURRENT_SOURCE_DIR}/compiler_product_helper_enable_subgroup_local_block_io.inl
${CMAKE_CURRENT_SOURCE_DIR}/compiler_product_helper_product_config_default.inl
${CMAKE_CURRENT_SOURCE_DIR}/compiler_product_helper_tgllp_and_later.inl
${CMAKE_CURRENT_SOURCE_DIR}/compiler_product_helper_xe_hp_and_later.inl
${CMAKE_CURRENT_SOURCE_DIR}/compiler_product_helper_xe_hpc_and_later.inl

View File

@ -51,6 +51,7 @@ class CompilerProductHelper {
virtual void setProductConfigForHwInfo(HardwareInfo &hwInfo, HardwareIpVersion config) const = 0;
virtual const char *getCachingPolicyOptions(bool isDebuggerActive) const = 0;
virtual uint64_t getHwInfoConfig(const HardwareInfo &hwInfo) const = 0;
virtual uint32_t getDefaultHwIpVersion() const = 0;
virtual uint32_t getNumThreadsPerEu() const = 0;
virtual uint32_t matchRevisionIdWithProductConfig(HardwareIpVersion ipVersion, uint32_t revisionID) const = 0;
virtual std::string getDeviceExtensions(const HardwareInfo &hwInfo, const ReleaseHelper *releaseHelper) const = 0;
@ -88,6 +89,7 @@ class CompilerProductHelperHw : public CompilerProductHelper {
void setProductConfigForHwInfo(HardwareInfo &hwInfo, HardwareIpVersion config) const override;
const char *getCachingPolicyOptions(bool isDebuggerActive) const override;
uint64_t getHwInfoConfig(const HardwareInfo &hwInfo) const override;
uint32_t getDefaultHwIpVersion() const override;
uint32_t getNumThreadsPerEu() const override;
uint32_t matchRevisionIdWithProductConfig(HardwareIpVersion ipVersion, uint32_t revisionID) const override;
std::string getDeviceExtensions(const HardwareInfo &hwInfo, const ReleaseHelper *releaseHelper) const override;

View File

@ -11,10 +11,11 @@
namespace NEO {
template <PRODUCT_FAMILY gfxProduct>
uint32_t CompilerProductHelperHw<gfxProduct>::getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const {
return hwInfo.ipVersion.value;
return hwInfo.ipVersion.value ? hwInfo.ipVersion.value : getDefaultHwIpVersion();
}
template <PRODUCT_FAMILY gfxProduct>
void CompilerProductHelperHw<gfxProduct>::setProductConfigForHwInfo(HardwareInfo &hwInfo, HardwareIpVersion config) const {
hwInfo.ipVersion = config;
}
} // namespace NEO

View File

@ -0,0 +1,15 @@
/*
* Copyright (C) 2023 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "shared/source/helpers/compiler_product_helper.h"
namespace NEO {
template <PRODUCT_FAMILY gfxProduct>
uint32_t CompilerProductHelperHw<gfxProduct>::getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const {
return getDefaultHwIpVersion();
}
} // namespace NEO

View File

@ -20,6 +20,10 @@
#include "compiler_product_helper_pvc.inl"
#include "platforms.h"
namespace NEO {
template <>
uint32_t CompilerProductHelperHw<IGFX_PVC>::getDefaultHwIpVersion() const {
return AOT::PVC_XT_C0;
}
template <>
uint32_t CompilerProductHelperHw<IGFX_PVC>::getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const {
@ -47,7 +51,7 @@ uint32_t CompilerProductHelperHw<IGFX_PVC>::getProductConfigFromHwInfo(const Har
return AOT::PVC_XT_C0;
}
}
return AOT::UNKNOWN_ISA;
return getDefaultHwIpVersion();
}
template <>
uint32_t CompilerProductHelperHw<IGFX_PVC>::matchRevisionIdWithProductConfig(HardwareIpVersion ipVersion, uint32_t revisionID) const {

View File

@ -5,19 +5,9 @@
*
*/
#include "shared/source/xe_hpg_core/hw_cmds_dg2.h"
#include "platforms.h"
#include "shared/source/xe_hpg_core/definitions/compiler_product_helper_dg2_base.inl"
namespace NEO {
template <>
uint64_t CompilerProductHelperHw<IGFX_DG2>::getHwInfoConfig(const HardwareInfo &hwInfo) const {
if (DG2::isG10(hwInfo)) {
return 0x800040010;
}
return 0x200040010;
}
template <>
uint32_t CompilerProductHelperHw<IGFX_DG2>::getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const {
if (DG2::isG10(hwInfo)) {
@ -43,6 +33,6 @@ uint32_t CompilerProductHelperHw<IGFX_DG2>::getProductConfigFromHwInfo(const Har
} else if (DG2::isG12(hwInfo)) {
return AOT::DG2_G12_A0;
}
return AOT::UNKNOWN_ISA;
return getDefaultHwIpVersion();
}
} // namespace NEO

View File

@ -0,0 +1,32 @@
/*
* Copyright (C) 2023 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "shared/source/xe_hpg_core/hw_cmds_dg2.h"
#include "platforms.h"
namespace NEO {
template <>
uint64_t CompilerProductHelperHw<IGFX_DG2>::getHwInfoConfig(const HardwareInfo &hwInfo) const {
if (DG2::isG10(hwInfo)) {
return 0x800040010;
}
return 0x200040010;
}
template <>
uint32_t CompilerProductHelperHw<IGFX_DG2>::getDefaultHwIpVersion() const {
return AOT::DG2_G10_A0;
}
template <>
uint32_t CompilerProductHelperHw<IGFX_DG2>::matchRevisionIdWithProductConfig(HardwareIpVersion ipVersion, uint32_t revisionID) const {
HardwareIpVersion dg2Config = ipVersion;
dg2Config.revision = revisionID;
return dg2Config.value;
}
} // namespace NEO

View File

@ -16,15 +16,7 @@
#include "shared/source/helpers/compiler_product_helper_xe_hp_and_later.inl"
#include "compiler_product_helper_dg2.inl"
namespace NEO {
static EnableCompilerProductHelper<IGFX_DG2> enableCompilerProductHelperDG2;
template <>
uint32_t CompilerProductHelperHw<IGFX_DG2>::matchRevisionIdWithProductConfig(HardwareIpVersion ipVersion, uint32_t revisionID) const {
HardwareIpVersion dg2Config = ipVersion;
dg2Config.revision = revisionID;
return dg2Config.value;
}
} // namespace NEO

View File

@ -16,10 +16,15 @@
#include "shared/source/xe_hpg_core/hw_cmds_mtl.h"
#include "compiler_product_helper_mtl.inl"
#include "platforms.h"
constexpr auto gfxProduct = IGFX_METEORLAKE;
namespace NEO {
template <>
uint32_t CompilerProductHelperHw<gfxProduct>::getDefaultHwIpVersion() const {
return AOT::MTL_M_A0;
}
template <>
bool CompilerProductHelperHw<gfxProduct>::isSplitMatrixMultiplyAccumulateSupported(const HardwareInfo &hwInfo) const {

View File

@ -107,7 +107,13 @@ CFLTEST_F(CflProductHelper, givenCompilerProductHelperWhenGetProductConfigThenCo
}
pInHwInfo.platform.usDeviceID = 0u;
EXPECT_EQ(compilerProductHelper->getHwIpVersion(pInHwInfo), AOT::UNKNOWN_ISA);
EXPECT_EQ(compilerProductHelper->getHwIpVersion(pInHwInfo), AOT::CFL);
}
CFLTEST_F(CflProductHelper, givenCompilerProductHelperWhenGetIpVersionAndDeviceIdIsUnknownThenDefaultConfigIsReturned) {
pInHwInfo.platform.usDeviceID = 0u;
EXPECT_EQ(compilerProductHelper->getHwIpVersion(pInHwInfo), AOT::CFL);
EXPECT_EQ(compilerProductHelper->getDefaultHwIpVersion(), AOT::CFL);
}
CFLTEST_F(CflProductHelper, givenProductHelperWhenGettingEvictIfNecessaryFlagSupportedThenExpectTrue) {

View File

@ -110,9 +110,12 @@ KBLTEST_F(KblProductHelper, givenCompilerProductHelperWhenGetProductConfigThenCo
pInHwInfo.platform.usDeviceID = deviceId;
EXPECT_EQ(compilerProductHelper->getHwIpVersion(pInHwInfo), AOT::KBL);
}
}
KBLTEST_F(KblProductHelper, givenCompilerProductHelperWhenGetIpVersionAndDeviceIdIsUnknownThenDefaultConfigIsReturned) {
pInHwInfo.platform.usDeviceID = 0u;
EXPECT_EQ(compilerProductHelper->getHwIpVersion(pInHwInfo), AOT::UNKNOWN_ISA);
EXPECT_EQ(compilerProductHelper->getHwIpVersion(pInHwInfo), AOT::KBL);
EXPECT_EQ(compilerProductHelper->getDefaultHwIpVersion(), AOT::KBL);
}
KBLTEST_F(KblProductHelper, givenProductHelperWhenGettingEvictIfNecessaryFlagSupportedThenExpectTrue) {

View File

@ -25,10 +25,10 @@ HWTEST2_P(ProductConfigHwInfoTests, givenAotConfigWhenSetHwInfoGmdIdThenCorrectV
EXPECT_EQ(ret, productConfig);
}
HWTEST2_P(ProductConfigHwInfoTests, givenUnknownAotConfigWhenGetProductConfigThenUnknownIsaIsReturned, IsAtLeastMtl) {
HWTEST2_P(ProductConfigHwInfoTests, givenUnknownAotConfigWhenGetProductConfigThenDefaultConfigIsReturned, IsAtLeastMtl) {
hwInfo.ipVersion = {};
auto ret = compilerProductHelper->getHwIpVersion(hwInfo);
EXPECT_EQ(ret, AOT::UNKNOWN_ISA);
EXPECT_EQ(ret, compilerProductHelper->getDefaultHwIpVersion());
}
HWTEST2_P(ProductConfigHwInfoTests, givenAotConfigWhenGetProductConfigThenCorrectValueIsReturned, IsAtLeastMtl) {

View File

@ -22,3 +22,13 @@ TEST_F(WddmTest, WhenPopulateIpVersionWddmIsCalledThenIpVersionIsSet) {
EXPECT_EQ(config, hwInfo.ipVersion.value);
}
HWTEST2_F(WddmTest, WhenPopulateIpVersionWddmIsCalledAndIpVersionIsZeroThenDefaultValueIsSet, IsAtLeastMtl) {
auto &compilerProductHelper = wddm->rootDeviceEnvironment.getHelper<CompilerProductHelper>();
HardwareInfo hwInfo = *defaultHwInfo;
hwInfo.ipVersion = 0;
auto config = compilerProductHelper.getDefaultHwIpVersion();
wddm->populateIpVersion(hwInfo);
EXPECT_EQ(config, hwInfo.ipVersion.value);
}

View File

@ -120,14 +120,8 @@ PVCTEST_F(ProductConfigTests, givenInvalidRevisionIdForPvcXlWhenGetProductConfig
}
}
PVCTEST_F(ProductConfigTests, givenInvalidDeviceIdWhenGetProductConfigThenInvalidConfigIsReturned) {
PVCTEST_F(ProductConfigTests, givenUnknownDeviceIdWhenGetProductConfigThenDefaultConfigIsReturned) {
hwInfo.platform.usDeviceID = 0;
hwInfo.platform.usRevId = 0x0;
productConfig = compilerProductHelper->getHwIpVersion(hwInfo);
EXPECT_EQ(productConfig, AOT::UNKNOWN_ISA);
hwInfo.platform.usRevId = 0x3;
productConfig = compilerProductHelper->getHwIpVersion(hwInfo);
EXPECT_EQ(productConfig, AOT::UNKNOWN_ISA);
EXPECT_EQ(productConfig, AOT::PVC_XT_C0);
}

View File

@ -273,24 +273,27 @@ DG2TEST_F(ProductHelperTestDg2, givenDg2G11OrG12WhenAskingIfMaxThreadsForWorkgro
}
DG2TEST_F(ProductHelperTestDg2, givenDg2G10A0OrA1SteppingWhenAskingIfWAIsRequiredThenReturnTrue) {
auto hwInfo = *defaultHwInfo;
for (uint8_t revision : {REVISION_A0, REVISION_A1, REVISION_B, REVISION_C}) {
for (auto deviceId : {dg2G10DeviceIds[0], dg2G11DeviceIds[0], dg2G12DeviceIds[0]}) {
hwInfo.platform.usRevId = productHelper->getHwRevIdFromStepping(revision, hwInfo);
hwInfo.platform.usDeviceID = deviceId;
hwInfo.ipVersion.value = compilerProductHelper->getHwIpVersion(hwInfo);
if (hwInfo.ipVersion.value == AOT::UNKNOWN_ISA) {
continue;
}
std::vector<std::pair<unsigned short, uint16_t>> dg2Configs =
{{dg2G10DeviceIds[0], REV_ID_A0},
{dg2G10DeviceIds[0], REV_ID_A1},
{dg2G10DeviceIds[0], REV_ID_B0},
{dg2G10DeviceIds[0], REV_ID_C0},
{dg2G11DeviceIds[0], REV_ID_A0},
{dg2G11DeviceIds[0], REV_ID_B0},
{dg2G11DeviceIds[0], REV_ID_B1},
{dg2G12DeviceIds[0], REV_ID_A0}};
auto expectedValue = DG2::isG10(hwInfo) && revision < REVISION_B;
refreshReleaseHelper(&hwInfo);
for (const auto &[deviceID, revisionID] : dg2Configs) {
hwInfo.platform.usRevId = revisionID;
hwInfo.platform.usDeviceID = deviceID;
hwInfo.ipVersion.value = compilerProductHelper->getHwIpVersion(hwInfo);
auto expectedValue = DG2::isG10(hwInfo) && revisionID < REV_ID_B0;
refreshReleaseHelper(&hwInfo);
EXPECT_EQ(expectedValue, productHelper->isDefaultEngineTypeAdjustmentRequired(hwInfo));
EXPECT_EQ(expectedValue, productHelper->isAllocationSizeAdjustmentRequired(hwInfo));
EXPECT_EQ(expectedValue, productHelper->isPrefetchDisablingRequired(releaseHelper));
}
EXPECT_EQ(expectedValue, productHelper->isDefaultEngineTypeAdjustmentRequired(hwInfo));
EXPECT_EQ(expectedValue, productHelper->isAllocationSizeAdjustmentRequired(hwInfo));
EXPECT_EQ(expectedValue, productHelper->isPrefetchDisablingRequired(releaseHelper));
}
}
@ -325,6 +328,24 @@ DG2TEST_F(ProductHelperTestDg2, givenDg2G12WhenAskingForSBAWaThenReturnSuccess)
}
}
DG2TEST_F(ProductHelperTestDg2, givenInvalidArchitectureInIpVersionWhenRefreshReleaseHelperThenNullptrIsReturned) {
auto hwInfo = *defaultHwInfo;
hwInfo.ipVersion.value = AOT::DG2_G10_A0;
hwInfo.ipVersion.architecture = 0;
refreshReleaseHelper(&hwInfo);
EXPECT_EQ(releaseHelper, nullptr);
}
DG2TEST_F(ProductHelperTestDg2, givenInvalidReleaseInIpVersionWhenRefreshReleaseHelperThenNullptrIsReturned) {
auto hwInfo = *defaultHwInfo;
hwInfo.ipVersion.value = AOT::DG2_G10_A0;
hwInfo.ipVersion.release = 0;
refreshReleaseHelper(&hwInfo);
EXPECT_EQ(releaseHelper, nullptr);
}
DG2TEST_F(ProductHelperTestDg2, givenProgramExtendedPipeControlPriorToNonPipelinedStateCommandEnabledWhenIsPipeControlPriorToNonPipelinedStateCommandsWARequiredIsCalledOnCcsThenTrueIsReturned) {
DebugManagerStateRestore restorer;
DebugManager.flags.ProgramExtendedPipeControlPriorToNonPipelinedStateCommand.set(true);
@ -729,12 +750,12 @@ DG2TEST_F(ProductConfigTests, givenDg2G12DeviceIdsWhenConfigIsCheckedThenCorrect
}
}
DG2TEST_F(ProductConfigTests, givenInvalidRevisionIdWhenDeviceIdIsDefaultThenUnknownIsaIsReturned) {
DG2TEST_F(ProductConfigTests, givenInvalidRevisionIdWhenDeviceIdIsDefaultThenDefaultConfigIsReturned) {
hwInfo.platform.usDeviceID = 0;
hwInfo.platform.usRevId = CommonConstants::invalidRevisionID;
productConfig = compilerProductHelper->getHwIpVersion(hwInfo);
EXPECT_EQ(productConfig, AOT::UNKNOWN_ISA);
EXPECT_EQ(productConfig, AOT::DG2_G10_A0);
}
DG2TEST_F(ProductConfigTests, givenDg2G10DeviceIdWhenDifferentRevisionIsPassedThenCorrectProductConfigIsReturned) {
@ -759,13 +780,13 @@ DG2TEST_F(ProductConfigTests, givenDg2G10DeviceIdWhenDifferentRevisionIsPassedTh
}
}
DG2TEST_F(ProductConfigTests, givenDg2DeviceIdWhenIncorrectRevisionIsPassedThenCorrectProductConfigIsReturned) {
DG2TEST_F(ProductConfigTests, givenDg2DeviceIdWhenIncorrectRevisionIsPassedThenDefaultConfigIsReturned) {
for (const auto *dg2 : {&dg2G10DeviceIds, &dg2G11DeviceIds}) {
for (const auto &deviceId : *dg2) {
hwInfo.platform.usDeviceID = deviceId;
hwInfo.platform.usRevId = CommonConstants::invalidRevisionID;
productConfig = compilerProductHelper->getHwIpVersion(hwInfo);
EXPECT_EQ(productConfig, AOT::UNKNOWN_ISA);
EXPECT_EQ(productConfig, AOT::DG2_G10_A0);
}
}
}
@ -796,12 +817,12 @@ DG2TEST_F(ProductConfigTests, givenDg2G12DeviceIdWhenGetProductConfigThenCorrect
}
}
DG2TEST_F(ProductConfigTests, givenNotSetDeviceAndRevisionIdWhenGetProductConfigThenUnknownIsaIsReturned) {
DG2TEST_F(ProductConfigTests, givenNotSetDeviceAndRevisionIdWhenGetProductConfigThenDefaultConfigIsReturned) {
hwInfo.platform.usRevId = 0x0;
hwInfo.platform.usDeviceID = 0x0;
productConfig = compilerProductHelper->getHwIpVersion(hwInfo);
EXPECT_EQ(productConfig, AOT::UNKNOWN_ISA);
EXPECT_EQ(productConfig, AOT::DG2_G10_A0);
}
DG2TEST_F(ProductHelperTestDg2, givenProductHelperWhenAskedIfStorageInfoAdjustmentIsRequiredThenTrueIsReturned) {

View File

@ -63,32 +63,35 @@ DG2TEST_F(CommandEncodeDG2Test, whenProgramComputeWalkerThenApplyL3WAForDg2G10A0
using COMPUTE_WALKER = typename FamilyType::COMPUTE_WALKER;
auto walkerCmd = FamilyType::cmdInitGpgpuWalker;
MockExecutionEnvironment executionEnvironment{};
auto &productHelper = executionEnvironment.rootDeviceEnvironments[0]->getHelper<ProductHelper>();
auto &compilerProductHelper = executionEnvironment.rootDeviceEnvironments[0]->getHelper<CompilerProductHelper>();
auto &rootDeviceEnvironment = *executionEnvironment.rootDeviceEnvironments[0];
auto &hwInfo = *rootDeviceEnvironment.getMutableHardwareInfo();
std::vector<std::pair<unsigned short, uint16_t>> dg2Configs =
{{dg2G10DeviceIds[0], REV_ID_A0},
{dg2G10DeviceIds[0], REV_ID_A1},
{dg2G10DeviceIds[0], REV_ID_B0},
{dg2G10DeviceIds[0], REV_ID_C0},
{dg2G11DeviceIds[0], REV_ID_A0},
{dg2G11DeviceIds[0], REV_ID_B0},
{dg2G11DeviceIds[0], REV_ID_B1},
{dg2G12DeviceIds[0], REV_ID_A0}};
KernelDescriptor kernelDescriptor;
EncodeWalkerArgs walkerArgs{KernelExecutionType::Default, true, kernelDescriptor};
for (uint8_t revision : {REVISION_A0, REVISION_A1, REVISION_B, REVISION_C}) {
for (auto deviceId : {dg2G10DeviceIds[0], dg2G11DeviceIds[0], dg2G12DeviceIds[0]}) {
hwInfo.platform.usRevId = productHelper.getHwRevIdFromStepping(revision, hwInfo);
hwInfo.platform.usDeviceID = deviceId;
hwInfo.ipVersion = compilerProductHelper.getHwIpVersion(hwInfo);
if (hwInfo.ipVersion.value == AOT::UNKNOWN_ISA) {
continue;
}
for (const auto &[deviceID, revisionID] : dg2Configs) {
hwInfo.platform.usRevId = revisionID;
hwInfo.platform.usDeviceID = deviceID;
hwInfo.ipVersion = compilerProductHelper.getHwIpVersion(hwInfo);
rootDeviceEnvironment.releaseHelper = ReleaseHelper::create(hwInfo.ipVersion);
rootDeviceEnvironment.releaseHelper = ReleaseHelper::create(hwInfo.ipVersion);
EncodeDispatchKernel<FamilyType>::encodeAdditionalWalkerFields(rootDeviceEnvironment, walkerCmd, walkerArgs);
EncodeDispatchKernel<FamilyType>::encodeAdditionalWalkerFields(rootDeviceEnvironment, walkerCmd, walkerArgs);
if (DG2::isG10(hwInfo) && revision < REVISION_B) {
EXPECT_TRUE(walkerCmd.getL3PrefetchDisable());
} else {
EXPECT_FALSE(walkerCmd.getL3PrefetchDisable());
}
if (DG2::isG10(hwInfo) && revisionID < REV_ID_B0) {
EXPECT_TRUE(walkerCmd.getL3PrefetchDisable());
} else {
EXPECT_FALSE(walkerCmd.getL3PrefetchDisable());
}
}
}

View File

@ -186,6 +186,16 @@ MTLTEST_F(MtlProductHelper, givenHwIpVersionWhenIsPipeControlPriorToNonPipelined
}
}
MTLTEST_F(MtlProductHelper, givenNoReleaseHelperWhenisPipeControlPriorToNonPipelinedStateCommandsWARequiredThenCorrectValuesAreReturned) {
auto &rootDeviceEnvironment = *this->executionEnvironment->rootDeviceEnvironments[0].get();
auto &hwInfo = *rootDeviceEnvironment.getMutableHardwareInfo();
ReleaseHelper *releaseHelper = nullptr;
const auto &[isBasicWARequired, isExtendedWARequired] = productHelper->isPipeControlPriorToNonPipelinedStateCommandsWARequired(hwInfo, false, releaseHelper);
EXPECT_FALSE(isExtendedWARequired);
EXPECT_TRUE(isBasicWARequired);
}
MTLTEST_F(MtlProductHelper, givenMtlNotLpgWhenIsBFloat16ConversionSupportedIsCalledThenTrueIsReturned) {
auto hwInfo = *defaultHwInfo.get();
uint32_t notLpgArchitecture = 10;
@ -299,6 +309,10 @@ MTLTEST_F(MtlProductHelper, givenVariousMtlReleasesWhenGetExtensionsIsCalledThen
}
}
MTLTEST_F(MtlProductHelper, givenCompilerProductHelperWhenGetDefaultHwIpVersionThenCorrectValueIsSet) {
EXPECT_EQ(compilerProductHelper->getDefaultHwIpVersion(), AOT::MTL_M_A0);
}
using ProductHelperTestMtl = Test<DeviceFixture>;
MTLTEST_F(ProductHelperTestMtl, givenPatIndexAndAllocationTypeWhenCallOverridePatIndexThenForTimestampPacketTagBufferReturnTwo) {