feature: Add debug flag for setting hw ip version

Signed-off-by: Daria Hinz <daria.hinz@intel.com>
Related-To: NEO-7954
This commit is contained in:
Daria Hinz
2023-05-12 13:46:58 +00:00
committed by Compute-Runtime-Automation
parent 4ecff31c26
commit 331f167cfe
50 changed files with 259 additions and 82 deletions

View File

@@ -111,6 +111,7 @@ DECLARE_DEBUG_VARIABLE(int32_t, MultiStorageGranularity, -1, "Forces granularity
DECLARE_DEBUG_VARIABLE(int32_t, LimitBlitterMaxWidth, -1, "-1: default, >=0: Max width")
DECLARE_DEBUG_VARIABLE(int32_t, LimitBlitterMaxHeight, -1, "-1: default, >=0: Max height")
DECLARE_DEBUG_VARIABLE(int32_t, PostBlitCommand, -1, "-1: default, 0: MI_ARB_CHECK, 1: MI_FLUSH, 2: Nothing")
DECLARE_DEBUG_VARIABLE(int32_t, OverrideHwIpVersion, -1, "-1: default, >=0: Hardware IP version")
DECLARE_DEBUG_VARIABLE(int32_t, OverridePreemptionSurfaceSizeInMb, -1, "-1: default, >=0 Override preemption surface size with value")
DECLARE_DEBUG_VARIABLE(int32_t, OverrideLeastOccupiedBank, -1, "-1: default, >=0 Override least occupied bank with value")
DECLARE_DEBUG_VARIABLE(int32_t, OverrideRevision, -1, "-1: default, >=0: Revision id")

View File

@@ -30,7 +30,7 @@ TargetDevice getTargetDevice(const RootDeviceEnvironment &rootDeviceEnvironment)
targetDevice.coreFamily = hwInfo.platform.eRenderCoreFamily;
targetDevice.productFamily = hwInfo.platform.eProductFamily;
targetDevice.aotConfig.value = productHelper.getProductConfigFromHwInfo(hwInfo);
targetDevice.aotConfig.value = productHelper.getHwIpVersion(hwInfo);
targetDevice.stepping = hwInfo.platform.usRevId;
targetDevice.maxPointerSizeInBytes = sizeof(uintptr_t);
targetDevice.grfSize = hwInfo.capabilityTable.grfSize;

View File

@@ -28,7 +28,7 @@ std::vector<DeviceAotInfo> &ProductConfigHelper::getDeviceAotInfo() {
return deviceAotInfo;
}
bool ProductConfigHelper::getDeviceAotInfoForProductConfig(AOT::PRODUCT_CONFIG config, DeviceAotInfo &out) const {
bool ProductConfigHelper::getDeviceAotInfoForProductConfig(uint32_t config, DeviceAotInfo &out) const {
auto ret = std::find_if(deviceAotInfo.begin(), deviceAotInfo.end(), findProductConfig(config));
if (ret == deviceAotInfo.end()) {
return false;

View File

@@ -107,7 +107,7 @@ struct ProductConfigHelper {
bool isSupportedFamily(uint32_t family) const;
bool isSupportedRelease(uint32_t release) const;
bool isSupportedProductConfig(uint32_t config) const;
bool getDeviceAotInfoForProductConfig(AOT::PRODUCT_CONFIG config, DeviceAotInfo &out) const;
bool getDeviceAotInfoForProductConfig(uint32_t config, DeviceAotInfo &out) const;
std::vector<DeviceAotInfo> &getDeviceAotInfo();
std::vector<NEO::ConstStringRef> getRepresentativeProductAcronyms();

View File

@@ -37,7 +37,11 @@ bool DeviceFactory::prepareDeviceEnvironmentsForProductFamilyOverride(ExecutionE
auto configStr = productFamily;
auto productConfigHelper = std::make_unique<ProductConfigHelper>();
ProductConfigHelper::adjustDeviceName(configStr);
auto productConfig = productConfigHelper->getProductConfigFromDeviceName(configStr);
uint32_t productConfig = productConfigHelper->getProductConfigFromDeviceName(configStr);
if (DebugManager.flags.OverrideHwIpVersion.get() != -1 && productConfigHelper->isSupportedProductConfig(DebugManager.flags.OverrideHwIpVersion.get())) {
productConfig = DebugManager.flags.OverrideHwIpVersion.get();
}
const HardwareInfo *hwInfoConst = getDefaultHwInfo();
DeviceAotInfo aotInfo{};
@@ -72,7 +76,6 @@ bool DeviceFactory::prepareDeviceEnvironmentsForProductFamilyOverride(ExecutionE
}
setHwInfoValuesFromConfig(hwInfoConfig, *hardwareInfo);
hardwareInfoSetup[hwInfoConst->platform.eProductFamily](hardwareInfo, true, hwInfoConfig, compilerProductHelper);
auto &productHelper = rootDeviceEnvironment.getProductHelper();
@@ -80,7 +83,13 @@ bool DeviceFactory::prepareDeviceEnvironmentsForProductFamilyOverride(ExecutionE
if (productConfigFound) {
compilerProductHelper.setProductConfigForHwInfo(*hardwareInfo, aotInfo.aotConfig);
hardwareInfo->platform.usDeviceID = aotInfo.deviceIds->front();
if (DebugManager.flags.ForceDeviceId.get() == "unk") {
hardwareInfo->platform.usDeviceID = aotInfo.deviceIds->front();
}
}
if (DebugManager.flags.OverrideHwIpVersion.get() != -1) {
hardwareInfo->ipVersion = DebugManager.flags.OverrideHwIpVersion.get();
}
if (DebugManager.flags.OverrideGpuAddressSpace.get() != -1) {

View File

@@ -59,7 +59,7 @@ void IoctlHelper::setupIpVersion() {
auto &rootDeviceEnvironment = drm.getRootDeviceEnvironment();
auto &hwInfo = *rootDeviceEnvironment.getMutableHardwareInfo();
auto &productHelper = rootDeviceEnvironment.getHelper<ProductHelper>();
hwInfo.ipVersion.value = productHelper.getProductConfigFromHwInfo(hwInfo);
hwInfo.ipVersion.value = productHelper.getHwIpVersion(hwInfo);
}
void IoctlHelper::logExecObject(const ExecObject &execObject, std::stringstream &logger, size_t size) {

View File

@@ -90,7 +90,7 @@ class ProductHelper {
virtual bool obtainBlitterPreference(const HardwareInfo &hwInfo) const = 0;
virtual bool isBlitterFullySupported(const HardwareInfo &hwInfo) const = 0;
virtual bool isPageTableManagerSupported(const HardwareInfo &hwInfo) const = 0;
virtual uint32_t getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const = 0;
virtual uint32_t getHwIpVersion(const HardwareInfo &hwInfo) const = 0;
virtual uint32_t getHwRevIdFromStepping(uint32_t stepping, const HardwareInfo &hwInfo) const = 0;
virtual uint32_t getSteppingFromHwRevId(const HardwareInfo &hwInfo) const = 0;
virtual uint32_t getAubStreamSteppingFromHwRevId(const HardwareInfo &hwInfo) const = 0;
@@ -214,5 +214,6 @@ class ProductHelper {
virtual LocalMemoryAccessMode getDefaultLocalMemoryAccessMode(const HardwareInfo &hwInfo) const = 0;
virtual void fillScmPropertiesSupportStructureBase(StateComputeModePropertiesSupport &propertiesSupport) const = 0;
virtual uint32_t getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const = 0;
};
} // namespace NEO

View File

@@ -212,6 +212,14 @@ uint32_t ProductHelperHw<gfxProduct>::getSteppingFromHwRevId(const HardwareInfo
return CommonConstants::invalidStepping;
}
template <PRODUCT_FAMILY gfxProduct>
uint32_t ProductHelperHw<gfxProduct>::getHwIpVersion(const HardwareInfo &hwInfo) const {
if (DebugManager.flags.OverrideHwIpVersion.get() != -1) {
return DebugManager.flags.OverrideHwIpVersion.get();
}
return getProductConfigFromHwInfo(hwInfo);
}
template <PRODUCT_FAMILY gfxProduct>
uint32_t ProductHelperHw<gfxProduct>::getAubStreamSteppingFromHwRevId(const HardwareInfo &hwInfo) const {
switch (getSteppingFromHwRevId(hwInfo)) {

View File

@@ -44,8 +44,8 @@ class ProductHelperHw : public ProductHelper {
bool isBlitterFullySupported(const HardwareInfo &hwInfo) const override;
bool isPageTableManagerSupported(const HardwareInfo &hwInfo) const override;
bool overrideGfxPartitionLayoutForWsl() const override;
uint32_t getHwIpVersion(const HardwareInfo &hwInfo) const override;
uint32_t getHwRevIdFromStepping(uint32_t stepping, const HardwareInfo &hwInfo) const override;
uint32_t getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const override;
uint32_t getSteppingFromHwRevId(const HardwareInfo &hwInfo) const override;
uint32_t getAubStreamSteppingFromHwRevId(const HardwareInfo &hwInfo) const override;
std::optional<aub_stream::ProductFamily> getAubStreamProductFamily() const override;
@@ -168,6 +168,7 @@ class ProductHelperHw : public ProductHelper {
void enableCompression(HardwareInfo *hwInfo) const;
void enableBlitterOperationsSupport(HardwareInfo *hwInfo) const;
bool getConcurrentAccessMemCapabilitiesSupported(UsmAccessCapabilities capability) const;
uint32_t getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const override;
uint64_t getHostMemCapabilitiesValue() const;
bool getHostMemCapabilitiesSupported(const HardwareInfo *hwInfo) const;
LocalMemoryAccessMode getDefaultLocalMemoryAccessMode(const HardwareInfo &hwInfo) const override;

View File

@@ -16,6 +16,6 @@ void Wddm::populateAdditionalAdapterInfoOptions(const ADAPTER_INFO_KMD &adapterI
}
void Wddm::populateIpVersion(HardwareInfo &hwInfo) {
auto &productHelper = rootDeviceEnvironment.getHelper<ProductHelper>();
hwInfo.ipVersion.value = productHelper.getProductConfigFromHwInfo(hwInfo);
hwInfo.ipVersion.value = productHelper.getHwIpVersion(hwInfo);
}
} // namespace NEO

View File

@@ -143,7 +143,7 @@ void ProductHelperHw<gfxProduct>::adjustIpVersionIfNeeded(HardwareInfo &hwInfo)
bool isIpVersionUninitialized = hwInfo.ipVersion.architecture == 0;
if (isIpVersionUninitialized) {
hwInfo.ipVersion.value = getProductConfigFromHwInfo(hwInfo);
hwInfo.ipVersion.value = getHwIpVersion(hwInfo);
}
}