Disable EUFusion for odd work groups with DPAS on DG2

Related-To: NEO-7495, HSD-14017007475

Signed-off-by: Maciej Plewka <maciej.plewka@intel.com>
This commit is contained in:
Maciej Plewka
2023-01-26 09:55:59 +00:00
committed by Compute-Runtime-Automation
parent 4c58eda90d
commit 429be6b4cb
26 changed files with 495 additions and 48 deletions

View File

@@ -723,5 +723,4 @@ template <typename gfxProduct>
bool GfxCoreHelperHw<gfxProduct>::isRelaxedOrderingSupported() const {
return false;
}
} // namespace NEO

View File

@@ -197,6 +197,8 @@ class ProductHelper {
virtual uint32_t getDefaultRevisionId() const = 0;
virtual bool isMultiContextResourceDeferDeletionSupported() const = 0;
virtual bool isFusedEuDisabledForDpas(bool kernelHasDpasInstructions, const uint32_t *lws, const uint32_t *groupCount) const = 0;
virtual bool isCalculationForDisablingEuFusionWithDpasNeeded() const = 0;
virtual ~ProductHelper() = default;

View File

@@ -736,4 +736,13 @@ bool ProductHelperHw<gfxProduct>::isMultiContextResourceDeferDeletionSupported()
return false;
}
template <PRODUCT_FAMILY gfxProduct>
bool ProductHelperHw<gfxProduct>::isFusedEuDisabledForDpas(bool kernelHasDpasInstructions, const uint32_t *lws, const uint32_t *groupCount) const {
return false;
}
template <PRODUCT_FAMILY gfxProduct>
bool ProductHelperHw<gfxProduct>::isCalculationForDisablingEuFusionWithDpasNeeded() const {
return false;
}
} // namespace NEO

View File

@@ -156,6 +156,8 @@ class ProductHelperHw : public ProductHelper {
uint32_t getDefaultRevisionId() const override;
bool isMultiContextResourceDeferDeletionSupported() const override;
bool isFusedEuDisabledForDpas(bool kernelHasDpasInstructions, const uint32_t *lws, const uint32_t *groupCount) const override;
bool isCalculationForDisablingEuFusionWithDpasNeeded() const override;
~ProductHelperHw() override = default;

View File

@@ -230,5 +230,25 @@ template <>
std::optional<aub_stream::ProductFamily> ProductHelperHw<gfxProduct>::getAubStreamProductFamily() const {
return aub_stream::ProductFamily::Dg2;
};
template <>
bool ProductHelperHw<gfxProduct>::isFusedEuDisabledForDpas(bool kernelHasDpasInstructions, const uint32_t *lws, const uint32_t *groupCount) const {
if (!kernelHasDpasInstructions) {
return false;
} else if (lws == nullptr) {
return true;
} else if (size_t lwsCount = lws[0] * lws[1] * lws[2]; lwsCount > 1 && (lwsCount & 1) != 0) {
return true;
} else if (lwsCount > 1) {
return false;
} else if (groupCount == nullptr || (groupCount[0] & 1) != 0) {
return true;
} else {
return false;
}
}
template <>
bool ProductHelperHw<gfxProduct>::isCalculationForDisablingEuFusionWithDpasNeeded() const {
return true;
}
} // namespace NEO

View File

@@ -43,6 +43,5 @@ template <>
bool ProductHelperHw<gfxProduct>::isMultiContextResourceDeferDeletionSupported() const {
return false;
}
template class ProductHelperHw<gfxProduct>;
} // namespace NEO