SWDEV-263435 - Get code object version the correct way
Change-Id: I18877c116e2f013ec9d04411258c0df8cc0159b3
[ROCm/clr commit: b9520ce4cd]
This commit is contained in:
@@ -1136,7 +1136,8 @@ bool Kernel::GetAttrCodePropMetadata() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3: {
|
case 3:
|
||||||
|
case 4: {
|
||||||
status = amd::Comgr::iterate_map_metadata(kernelMetaNode, populateKernelMetaV3,
|
status = amd::Comgr::iterate_map_metadata(kernelMetaNode, populateKernelMetaV3,
|
||||||
static_cast<void*>(this));
|
static_cast<void*>(this));
|
||||||
}
|
}
|
||||||
@@ -1284,7 +1285,7 @@ void Kernel::InitParameters(const amd_comgr_metadata_node_t kernelMD) {
|
|||||||
if (codeObjectVer() == 2) {
|
if (codeObjectVer() == 2) {
|
||||||
status = amd::Comgr::iterate_map_metadata(argsNode, populateArgs, data);
|
status = amd::Comgr::iterate_map_metadata(argsNode, populateArgs, data);
|
||||||
}
|
}
|
||||||
else if (codeObjectVer() == 3) {
|
else if ((codeObjectVer() == 3) || (codeObjectVer() == 4)) {
|
||||||
status = amd::Comgr::iterate_map_metadata(argsNode, populateArgsV3, data);
|
status = amd::Comgr::iterate_map_metadata(argsNode, populateArgsV3, data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2340,12 +2340,72 @@ bool Program::createKernelMetadataMap() {
|
|||||||
codeObjectVer_ = 2;
|
codeObjectVer_ = 2;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
amd_comgr_metadata_node_t versionMD, versionNode;
|
||||||
|
char major_version, minor_version;
|
||||||
|
|
||||||
|
status = amd::Comgr::metadata_lookup(metadata_, "amdhsa.version", &versionMD);
|
||||||
|
|
||||||
|
if (status != AMD_COMGR_STATUS_SUCCESS) {
|
||||||
|
ClPrint(amd::LOG_ERROR, amd::LOG_CODE, "No amdhsa.version metadata found.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
status = amd::Comgr::index_list_metadata(versionMD, 0, &versionNode);
|
||||||
|
if (status != AMD_COMGR_STATUS_SUCCESS) {
|
||||||
|
ClPrint(amd::LOG_ERROR, amd::LOG_CODE, "Cannot get code object metadata major version node.");
|
||||||
|
amd::Comgr::destroy_metadata(versionMD);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
size = 1;
|
||||||
|
status = amd::Comgr::get_metadata_string(versionNode, &size, &major_version);
|
||||||
|
if (status != AMD_COMGR_STATUS_SUCCESS) {
|
||||||
|
ClPrint(amd::LOG_ERROR, amd::LOG_CODE, "Cannot get code object metadata major version.");
|
||||||
|
amd::Comgr::destroy_metadata(versionNode);
|
||||||
|
amd::Comgr::destroy_metadata(versionMD);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
amd::Comgr::destroy_metadata(versionNode);
|
||||||
|
|
||||||
|
status = amd::Comgr::index_list_metadata(versionMD, 1, &versionNode);
|
||||||
|
if (status != AMD_COMGR_STATUS_SUCCESS) {
|
||||||
|
ClPrint(amd::LOG_ERROR, amd::LOG_CODE, "Cannot get code object metadata minor version node.");
|
||||||
|
amd::Comgr::destroy_metadata(versionMD);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
size = 1;
|
||||||
|
status = amd::Comgr::get_metadata_string(versionNode, &size, &minor_version);
|
||||||
|
if (status != AMD_COMGR_STATUS_SUCCESS) {
|
||||||
|
ClPrint(amd::LOG_ERROR, amd::LOG_CODE, "Cannot get code object metadata minor version.");
|
||||||
|
amd::Comgr::destroy_metadata(versionNode);
|
||||||
|
amd::Comgr::destroy_metadata(versionMD);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
amd::Comgr::destroy_metadata(versionNode);
|
||||||
|
|
||||||
|
amd::Comgr::destroy_metadata(versionMD);
|
||||||
|
|
||||||
|
if (major_version == '1') {
|
||||||
|
if (minor_version == '0') {
|
||||||
|
ClPrint(amd::LOG_INFO, amd::LOG_CODE, "Using Code Object V3.");
|
||||||
|
codeObjectVer_ = 3;
|
||||||
|
} else if (minor_version == '1') {
|
||||||
|
ClPrint(amd::LOG_INFO, amd::LOG_CODE, "Using Code Object V4.");
|
||||||
|
codeObjectVer_ = 4;
|
||||||
|
} else {
|
||||||
|
ClPrint(amd::LOG_ERROR, amd::LOG_CODE,
|
||||||
|
"Unknown code object metadata minor version [%s.%s].", major_version, minor_version);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ClPrint(amd::LOG_ERROR, amd::LOG_CODE,
|
||||||
|
"Unknown code object metadata major version [%s.%s].", major_version, minor_version);
|
||||||
|
}
|
||||||
|
|
||||||
status = amd::Comgr::metadata_lookup(metadata_, "amdhsa.kernels", &kernelsMD);
|
status = amd::Comgr::metadata_lookup(metadata_, "amdhsa.kernels", &kernelsMD);
|
||||||
|
|
||||||
if (status == AMD_COMGR_STATUS_SUCCESS) {
|
if (status == AMD_COMGR_STATUS_SUCCESS) {
|
||||||
ClPrint(amd::LOG_INFO, amd::LOG_CODE, "Using Code Object V3.");
|
|
||||||
hasKernelMD = true;
|
hasKernelMD = true;
|
||||||
codeObjectVer_ = 3;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user