fix: allow legacy device binary validation logic for Blender on DG2 and MTL

Temporarily opt-out from additional compatibility checks
on DG2 and MTL for Blender and its derivatives AOT-compiled kernels.
This prevents a long kernel recompilation.

Additionally, same behavior can be enforced for other applications
manually via NEO debug key named DoNotUseProductConfigForValidationWa.

Signed-off-by: Kacper Nowak <kacper.nowak@intel.com>
Related-To: NEO-9240
This commit is contained in:
Kacper Nowak
2023-10-18 23:43:21 +00:00
committed by Compute-Runtime-Automation
parent ee6e6cfbab
commit 1b932bf119
15 changed files with 165 additions and 3 deletions

View File

@@ -30,6 +30,9 @@ const std::vector<ApplicationKernelFixDg2> applicationsKernelFixesDG2 =
{{"FAHBench-gui", "findBlocksWithInteractions", 0xa39732fc26656899, 12651u, "else { SYNC_WARPS; }"},
{"FAHBench-cmd", "findBlocksWithInteractions", 0xa39732fc26656899, 12651u, "else { SYNC_WARPS; }"}};
constexpr std::array<std::string_view, 3> applicationsLegacyValidationPathDg2 = {
"blender", "bforartists", "cycles"};
template <>
void AILConfigurationHw<IGFX_DG2>::modifyKernelIfRequired(std::string &kernelsSources) {
@@ -45,6 +48,14 @@ void AILConfigurationHw<IGFX_DG2>::modifyKernelIfRequired(std::string &kernelsSo
}
}
template <>
bool AILConfigurationHw<IGFX_DG2>::useLegacyValidationLogic() {
auto it = std::find_if(applicationsLegacyValidationPathDg2.begin(), applicationsLegacyValidationPathDg2.end(), [this](const auto &appName) {
return this->processName == appName;
});
return it != applicationsLegacyValidationPathDg2.end() ? true : false;
}
template class AILConfigurationHw<IGFX_DG2>;
} // namespace NEO

View File

@@ -10,6 +10,7 @@
#include "aubstream/engine_node.h"
#include <algorithm>
#include <map>
#include <vector>
@@ -19,6 +20,9 @@ extern std::map<std::string_view, std::vector<AILEnumeration>> applicationMapMTL
static EnableAIL<IGFX_METEORLAKE> enableAILMTL;
constexpr std::array<std::string_view, 3> applicationsLegacyValidationPathMtl = {
"blender", "bforartists", "cycles"};
template <>
void AILConfigurationHw<IGFX_METEORLAKE>::applyExt(RuntimeCapabilityTable &runtimeCapabilityTable) {
auto search = applicationMapMTL.find(processName);
@@ -40,6 +44,14 @@ bool AILConfigurationHw<IGFX_METEORLAKE>::isContextSyncFlagRequired() {
return iterator != applicationsContextSyncFlag.end();
}
template <>
bool AILConfigurationHw<IGFX_METEORLAKE>::useLegacyValidationLogic() {
auto it = std::find_if(applicationsLegacyValidationPathMtl.begin(), applicationsLegacyValidationPathMtl.end(), [this](const auto &appName) {
return this->processName == appName;
});
return it != applicationsLegacyValidationPathMtl.end() ? true : false;
}
template class AILConfigurationHw<IGFX_METEORLAKE>;
} // namespace NEO