fix: Compile built-ins per release

- Preserve releases on CMake level.
- Instead of generating builtins per platform, generate them per-release
(+ correct naming accordingly).
- Stop using revisions in builtin compilation logic path, as they are
already embedded in release (device ip).
- Remove platform names & revisions from names for generated files
(related to builtins).
- Remove unnecessary code, refactor ULT logic.

Related-To: NEO-7783
Signed-off-by: Kacper Nowak <kacper.nowak@intel.com>
This commit is contained in:
Kacper Nowak
2023-07-07 12:09:44 +00:00
committed by Compute-Runtime-Automation
parent 1a398c7199
commit b908203001
26 changed files with 133 additions and 253 deletions

View File

@@ -82,11 +82,14 @@ std::string createBuiltinResourceName(EBuiltInOps::Type builtin, const std::stri
StackVec<std::string, 3> getBuiltinResourceNames(EBuiltInOps::Type builtin, BuiltinCode::ECodeType type, const Device &device) {
auto &hwInfo = device.getHardwareInfo();
auto &gfxCoreHelper = device.getGfxCoreHelper();
auto &productHelper = device.getRootDeviceEnvironment().getHelper<ProductHelper>();
const auto platformName = hardwarePrefix[hwInfo.platform.eProductFamily];
const auto revisionId = std::to_string(hwInfo.platform.usRevId);
auto createDeviceIdFilenameComponent = [](const NEO::HardwareIpVersion &hwIpVersion) {
std::ostringstream deviceId;
deviceId << hwIpVersion.architecture << "_" << hwIpVersion.release << "_" << hwIpVersion.revision;
return deviceId.str();
};
const auto deviceIp = createDeviceIdFilenameComponent(hwInfo.ipVersion);
const auto builtinName = getBuiltinAsString(builtin);
const auto extension = BuiltinCode::getExtension(type);
auto getAddressingMode = [type, &productHelper, builtin]() {
@@ -105,22 +108,19 @@ StackVec<std::string, 3> getBuiltinResourceNames(EBuiltInOps::Type builtin, Buil
};
const auto addressingMode = getAddressingMode();
auto createBuiltinResourceName = [](ConstStringRef platformName, ConstStringRef revisionId, ConstStringRef addressingMode, ConstStringRef builtinName, ConstStringRef extension) {
auto createBuiltinResourceName = [](ConstStringRef deviceIpPath, ConstStringRef addressingMode, ConstStringRef builtinName, ConstStringRef extension) {
std::ostringstream outResourceName;
if (false == platformName.empty()) {
outResourceName << platformName.str() << "_" << revisionId.str() << "_";
if (false == deviceIpPath.empty()) {
outResourceName << deviceIpPath.str() << "_";
}
outResourceName << addressingMode.str() << builtinName.str() << extension.str();
return outResourceName.str();
};
StackVec<std::string, 3> resourcesToLookup = {};
resourcesToLookup.push_back(createBuiltinResourceName(platformName, revisionId, addressingMode, builtinName, extension));
resourcesToLookup.push_back(createBuiltinResourceName(deviceIp, addressingMode, builtinName, extension));
const bool requiresSpecificResource = (BuiltinCode::ECodeType::Binary == type && gfxCoreHelper.isRevisionSpecificBinaryBuiltinRequired());
if (false == requiresSpecificResource) {
const auto defaultRevisionId = std::to_string(productHelper.getDefaultRevisionId());
resourcesToLookup.push_back(createBuiltinResourceName(platformName, defaultRevisionId, addressingMode, builtinName, extension));
resourcesToLookup.push_back(createBuiltinResourceName("", "", addressingMode, builtinName, extension));
if (BuiltinCode::ECodeType::Binary != type) {
resourcesToLookup.push_back(createBuiltinResourceName("", addressingMode, builtinName, extension));
}
return resourcesToLookup;
}