From 30471a9fd935e6087ec0e646f38c08d084715cf5 Mon Sep 17 00:00:00 2001 From: Ioannis Assiouras Date: Thu, 21 Dec 2023 01:09:55 +0000 Subject: [PATCH] SWDEV-438299 - Simplified the code in ExtractFatBinaryUsingCOMGR Change-Id: Ic15f2b71ae87ab3ca36ed5af2c816d57d09b3e70 [ROCm/clr commit: 411bccff5b601829bca56bbf1137c1daea94c1b9] --- projects/clr/hipamd/src/hip_fatbin.cpp | 46 +++++++++++--------------- 1 file changed, 20 insertions(+), 26 deletions(-) diff --git a/projects/clr/hipamd/src/hip_fatbin.cpp b/projects/clr/hipamd/src/hip_fatbin.cpp index 56e963287d..9d5591d053 100644 --- a/projects/clr/hipamd/src/hip_fatbin.cpp +++ b/projects/clr/hipamd/src/hip_fatbin.cpp @@ -215,41 +215,39 @@ hipError_t FatBinaryInfo::ExtractFatBinaryUsingCOMGR(const std::vector> unique_isa_names; - for (size_t dev_idx = 0; dev_idx < devices.size(); ++dev_idx) { - std::string device_name = devices[dev_idx]->devices()[0]->isa().isaName(); - if (unique_isa_names.cend() == unique_isa_names.find(device_name)) { - unique_isa_names.insert({device_name, std::make_pair(0,0)}); - } + for (auto device : devices) { + std::string device_name = device->devices()[0]->isa().isaName(); + unique_isa_names.insert({device_name, std::make_pair(0,0)}); } // Create a query list using COMGR info for unique ISAs. - query_list_array = new amd_comgr_code_object_info_t[unique_isa_names.size()]; - auto isa_it = unique_isa_names.begin(); - for (size_t isa_idx = 0; isa_idx < unique_isa_names.size(); ++isa_idx) { - query_list_array[isa_idx].isa = isa_it->first.c_str(); - query_list_array[isa_idx].size = 0; - query_list_array[isa_idx].offset = 0; - isa_it ++; + std::vector query_list_array; + query_list_array.reserve(unique_isa_names.size()); + for (const auto &isa_name : unique_isa_names) { + auto &item = query_list_array.emplace_back(); + item.isa = isa_name.first.c_str(); + item.size = 0; + item.offset = 0; } // Look up the code object info passing the query list. - if ((comgr_status = amd_comgr_lookup_code_object(data_object, query_list_array, + if ((comgr_status = amd_comgr_lookup_code_object(data_object, query_list_array.data(), unique_isa_names.size())) != AMD_COMGR_STATUS_SUCCESS) { LogPrintfError("Setting data from file slice failed with status %d ", comgr_status); hip_status = hipErrorInvalidValue; break; } - for (size_t isa_idx = 0; isa_idx < unique_isa_names.size(); ++isa_idx) { - auto unique_it = unique_isa_names.find(query_list_array[isa_idx].isa); + for (const auto &item : query_list_array) { + auto unique_it = unique_isa_names.find(item.isa); guarantee(unique_isa_names.cend() != unique_it, "Cannot find unique isa "); unique_it->second = std::pair - (static_cast(query_list_array[isa_idx].size), - static_cast(query_list_array[isa_idx].offset)); + (static_cast(item.size), + static_cast(item.offset)); } - for (size_t dev_idx = 0; dev_idx < devices.size(); ++dev_idx) { - std::string device_name = devices[dev_idx]->devices()[0]->isa().isaName(); + for (auto device : devices) { + std::string device_name = device->devices()[0]->isa().isaName(); auto dev_it = unique_isa_names.find(device_name); // If the size is 0, then COMGR API could not find the CO for this GPU device/ISA if (dev_it->second.first == 0) { @@ -261,12 +259,12 @@ hipError_t FatBinaryInfo::ExtractFatBinaryUsingCOMGR(const std::vectordeviceId()] + fatbin_dev_info_[device->deviceId()] = new FatBinaryDeviceInfo(reinterpret_cast
(const_cast(image_)) + dev_it->second.second, dev_it->second.first, dev_it->second.second); - fatbin_dev_info_[devices[dev_idx]->deviceId()]->program_ - = new amd::Program(*devices[dev_idx]->asContext()); + fatbin_dev_info_[device->deviceId()]->program_ + = new amd::Program(*(device->asContext())); } if ((comgr_status = amd_comgr_release_data(data_object)) != AMD_COMGR_STATUS_SUCCESS) { @@ -276,10 +274,6 @@ hipError_t FatBinaryInfo::ExtractFatBinaryUsingCOMGR(const std::vector