feature: Add support for Media frequncy Domain on linux

Related-To: LOCI-4552

Signed-off-by: Mayank Raghuwanshi <mayank.raghuwanshi@intel.com>
This commit is contained in:
Mayank Raghuwanshi
2023-06-20 11:15:02 +00:00
committed by Compute-Runtime-Automation
parent 46007dde5b
commit 085293b230
18 changed files with 230 additions and 5 deletions

View File

@@ -208,6 +208,7 @@ class ProductHelper {
virtual bool disableL3CacheForDebug(const HardwareInfo &hwInfo) const = 0;
virtual bool isCachingOnCpuAvailable() const = 0;
virtual bool isSkippingStatefulInformationRequired(const KernelDescriptor &kernelDescriptor) const = 0;
virtual bool getMediaFrequencyTileIndex(const ReleaseHelper *releaseHelper, uint32_t &tileIndex) const = 0;
virtual ~ProductHelper() = default;

View File

@@ -752,6 +752,14 @@ bool ProductHelperHw<gfxProduct>::isDummyBlitWaRequired() const {
return false;
}
template <PRODUCT_FAMILY gfxProduct>
bool ProductHelperHw<gfxProduct>::getMediaFrequencyTileIndex(const ReleaseHelper *releaseHelper, uint32_t &tileIndex) const {
if (releaseHelper) {
return releaseHelper->getMediaFrequencyTileIndex(tileIndex);
}
return false;
}
template <PRODUCT_FAMILY gfxProduct>
bool ProductHelperHw<gfxProduct>::is48bResourceNeededForRayTracing() const {
return true;

View File

@@ -160,6 +160,7 @@ class ProductHelperHw : public ProductHelper {
bool disableL3CacheForDebug(const HardwareInfo &hwInfo) const override;
bool isCachingOnCpuAvailable() const override;
bool isSkippingStatefulInformationRequired(const KernelDescriptor &kernelDescriptor) const override;
bool getMediaFrequencyTileIndex(const ReleaseHelper *releaseHelper, uint32_t &tileIndex) const override;
~ProductHelperHw() override = default;

View File

@@ -29,6 +29,7 @@ class ReleaseHelper {
virtual bool isPipeControlPriorToNonPipelinedStateCommandsWARequired() const = 0;
virtual bool isPrefetchDisablingRequired() const = 0;
virtual int getProductMaxPreferredSlmSize(int preferredEnumValue) const = 0;
virtual bool getMediaFrequencyTileIndex(uint32_t &tileIndex) const = 0;
protected:
ReleaseHelper(HardwareIpVersion hardwareIpVersion) : hardwareIpVersion(hardwareIpVersion) {}
@@ -47,6 +48,7 @@ class ReleaseHelperHw : public ReleaseHelper {
bool isPipeControlPriorToNonPipelinedStateCommandsWARequired() const override;
bool isPrefetchDisablingRequired() const override;
int getProductMaxPreferredSlmSize(int preferredEnumValue) const override;
bool getMediaFrequencyTileIndex(uint32_t &tileIndex) const override;
private:
ReleaseHelperHw(HardwareIpVersion hardwareIpVersion) : ReleaseHelper(hardwareIpVersion) {}

View File

@@ -28,6 +28,12 @@ int ReleaseHelperHw<release>::getProductMaxPreferredSlmSize(int preferredEnumVal
return std::min(preferredEnumValue, static_cast<int>(PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_96K));
}
template <>
bool ReleaseHelperHw<release>::getMediaFrequencyTileIndex(uint32_t &tileIndex) const {
tileIndex = 1;
return true;
}
} // namespace NEO
#include "shared/source/release_helper/release_helper_common_xe_lpg.inl"

View File

@@ -28,6 +28,12 @@ int ReleaseHelperHw<release>::getProductMaxPreferredSlmSize(int preferredEnumVal
return std::min(preferredEnumValue, static_cast<int>(PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_96K));
}
template <>
bool ReleaseHelperHw<release>::getMediaFrequencyTileIndex(uint32_t &tileIndex) const {
tileIndex = 1;
return true;
}
} // namespace NEO
#include "shared/source/release_helper/release_helper_common_xe_lpg.inl"

View File

@@ -33,4 +33,9 @@ int ReleaseHelperHw<releaseType>::getProductMaxPreferredSlmSize(int preferredEnu
return preferredEnumValue;
}
template <ReleaseType releaseType>
bool ReleaseHelperHw<releaseType>::getMediaFrequencyTileIndex(uint32_t &tileIndex) const {
return false;
}
} // namespace NEO

View File

@@ -80,6 +80,7 @@ using IsAtLeastMtl = IsAtLeastProduct<IGFX_METEORLAKE>;
using IsAtMostDg2 = IsAtMostProduct<IGFX_DG2>;
using IsNotPVC = IsNotWithinProducts<IGFX_PVC, IGFX_PVC>;
using IsNotMtl = IsNotWithinProducts<IGFX_METEORLAKE, IGFX_METEORLAKE>;
using IsNotPvcOrDg2 = IsNotWithinProducts<IGFX_DG2, IGFX_PVC>;
using HasStatefulSupport = IsNotAnyGfxCores<IGFX_XE_HPC_CORE>;

View File

@@ -637,6 +637,17 @@ HWTEST_F(ProductHelperTest, givenProductHelperWhenIsAdjustWalkOrderAvailableCall
EXPECT_FALSE(productHelper->isAdjustWalkOrderAvailable(releaseHelper));
}
HWTEST_F(ProductHelperTest, givenProductHelperWhenGetMediaFrequencyTileIndexCallThenFalseReturn) {
uint32_t tileIndex = 0;
EXPECT_FALSE(productHelper->getMediaFrequencyTileIndex(releaseHelper, tileIndex));
}
HWTEST_F(ProductHelperTest, givenProductHelperAndReleaseHelperNullptrWhenCallingGetMediaFrequencyTileIndexThenReturnFalse) {
uint32_t tileIndex = 0;
ReleaseHelper *releaseHelper = nullptr;
EXPECT_FALSE(productHelper->getMediaFrequencyTileIndex(releaseHelper, tileIndex));
}
HWTEST_F(ProductHelperTest, givenProductHelperWhenIsPrefetcherDisablingInDirectSubmissionRequiredThenTrueIsReturned) {
EXPECT_TRUE(productHelper->isPrefetcherDisablingInDirectSubmissionRequired());
}

View File

@@ -27,3 +27,4 @@ HWTEST_EXCLUDE_PRODUCT(ProductHelperCommonTest, givenPatIndexAndAllocationTypeWh
HWTEST_EXCLUDE_PRODUCT(CompilerProductHelperFixture, GivenXeHpAndLaterThenBFloat16ConversionIsSupported_IsAtLeastXeHpCore, IGFX_METEORLAKE);
HWTEST_EXCLUDE_PRODUCT(CompilerProductHelperFixture, GivenXeHpAndLaterThenMatrixMultiplyAccumulateIsSupported_IsAtLeastXeHpCore, IGFX_METEORLAKE);
HWTEST_EXCLUDE_PRODUCT(CompilerProductHelperFixture, GivenXeFamilyThenSplitMatrixMultiplyAccumulateIsSupported_IsWithinXeGfxFamily, IGFX_METEORLAKE);
HWTEST_EXCLUDE_PRODUCT(ProductHelperTest, givenProductHelperWhenGetMediaFrequencyTileIndexCallThenFalseReturn, IGFX_METEORLAKE);

View File

@@ -270,6 +270,25 @@ MTLTEST_F(MtlProductHelper, givenMtlWhenCallIsAdjustWalkOrderAvailableThenReturn
}
}
MTLTEST_F(MtlProductHelper, givenMtlWhenCallIsGetMediaFrequencyTileIndexThenReturnProperValue) {
VariableBackup<HardwareInfo> backupHwInfo(defaultHwInfo.get());
unsigned int gmdReleases[] = {70, 71};
defaultHwInfo->ipVersion.architecture = 12;
for (auto gmdRelease : gmdReleases) {
defaultHwInfo->ipVersion.release = gmdRelease;
refreshReleaseHelper(defaultHwInfo.get());
uint32_t tileIndex = 0;
EXPECT_TRUE(productHelper->getMediaFrequencyTileIndex(releaseHelper, tileIndex));
}
}
MTLTEST_F(MtlProductHelper, givenMtlAndReleaseHelperNullptrWhenCallingGetMediaFrequencyTileIndexThenReturnFalse) {
uint32_t tileIndex = 0;
ReleaseHelper *releaseHelper = nullptr;
EXPECT_FALSE(productHelper->getMediaFrequencyTileIndex(releaseHelper, tileIndex));
}
MTLTEST_F(MtlProductHelper, givenMtlAndReleaseHelperNullptrWhengetIsMatrixMultiplyAccumulateSupportedThenReturnsFalse) {
auto &compilerProductHelper = this->executionEnvironment->rootDeviceEnvironments[0]->getHelper<CompilerProductHelper>();
ReleaseHelper *releaseHelper = nullptr;