From b47bd6138e25f41cddd678c8e92be143967fd425 Mon Sep 17 00:00:00 2001 From: Jason Tang Date: Thu, 23 Sep 2021 16:03:01 -0400 Subject: [PATCH] SWDEV-1 - Only check agent-binary ISA compatibility for online device Change-Id: I5c8395c646280b8316e2f1af9f1e624359166cba [ROCm/clr commit: e0bd4aad639a751f624f4817f2323d493fca0a82] --- projects/clr/rocclr/device/devprogram.cpp | 44 ++++++++++++----------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/projects/clr/rocclr/device/devprogram.cpp b/projects/clr/rocclr/device/devprogram.cpp index 0ba0eaee4c..14c2999415 100644 --- a/projects/clr/rocclr/device/devprogram.cpp +++ b/projects/clr/rocclr/device/devprogram.cpp @@ -2567,30 +2567,32 @@ bool Program::createKernelMetadataMap(void* binary, size_t binSize) { } amd_comgr_status_t status; - size_t requiredSize = 0; - status = amd::Comgr::get_data_isa_name(binaryData.data(), &requiredSize, nullptr); - if (status != AMD_COMGR_STATUS_SUCCESS) { - buildLog_ += "Error: COMGR failed to get code object ISA name.\n"; - return false; - } + if (device().isOnline()) { + size_t requiredSize = 0; + status = amd::Comgr::get_data_isa_name(binaryData.data(), &requiredSize, nullptr); + if (status != AMD_COMGR_STATUS_SUCCESS) { + buildLog_ += "Error: COMGR failed to get code object ISA name.\n"; + return false; + } - std::vector binaryIsaName(requiredSize); - status = amd::Comgr::get_data_isa_name(binaryData.data(), &requiredSize, binaryIsaName.data()); - if ((status != AMD_COMGR_STATUS_SUCCESS) || (requiredSize != binaryIsaName.size())) { - buildLog_ += "Error: COMGR failed to get code object ISA name.\n"; - return false; - } + std::vector binaryIsaName(requiredSize); + status = amd::Comgr::get_data_isa_name(binaryData.data(), &requiredSize, binaryIsaName.data()); + if ((status != AMD_COMGR_STATUS_SUCCESS) || (requiredSize != binaryIsaName.size())) { + buildLog_ += "Error: COMGR failed to get code object ISA name.\n"; + return false; + } - const amd::Isa *binaryIsa = amd::Isa::findIsa(binaryIsaName.data()); - if (!binaryIsa) { - buildLog_ += "Error: Could not find the program ISA " + std::string(binaryIsaName.data()); - return false; - } + const amd::Isa *binaryIsa = amd::Isa::findIsa(binaryIsaName.data()); + if (!binaryIsa) { + buildLog_ += "Error: Could not find the program ISA " + std::string(binaryIsaName.data()); + return false; + } - if (!amd::Isa::isCompatible(*binaryIsa, device().isa())) { - buildLog_ += "Error: The program ISA " + std::string(binaryIsaName.data()); - buildLog_ += " is not compatible with the device ISA " + device().isa().isaName(); - return false; + if (!amd::Isa::isCompatible(*binaryIsa, device().isa())) { + buildLog_ += "Error: The program ISA " + std::string(binaryIsaName.data()); + buildLog_ += " is not compatible with the device ISA " + device().isa().isaName(); + return false; + } } status = amd::Comgr::get_data_metadata(binaryData.data(), &metadata_);