From 9d25978a3fca211bd04e0fc83979c158ffec663f Mon Sep 17 00:00:00 2001 From: "Pryor, Adam" Date: Thu, 10 Apr 2025 17:46:08 -0500 Subject: [PATCH] [SWDEV-515192] Fix rdc topo (#146) Change-Id: I64a8077a56e2eaf99735fafb1010d869a1fdb0c3 Signed-off-by: adapryor [ROCm/rdc commit: 58811fecbb96f6036899fcf9ff275b3c472c5b3c] --- .../rdc_libs/rdc/src/RdcTopologyLinkImpl.cc | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/projects/rdc/rdc_libs/rdc/src/RdcTopologyLinkImpl.cc b/projects/rdc/rdc_libs/rdc/src/RdcTopologyLinkImpl.cc index 947ac1dacc..f1ee23fb84 100644 --- a/projects/rdc/rdc_libs/rdc/src/RdcTopologyLinkImpl.cc +++ b/projects/rdc/rdc_libs/rdc/src/RdcTopologyLinkImpl.cc @@ -22,10 +22,10 @@ THE SOFTWARE. #include "rdc_lib/impl/RdcTopologyLinkImpl.h" +#include #include #include -#include #include #include #include @@ -85,11 +85,15 @@ rdc_status_t RdcTopologyLinkImpl::rdc_device_topology_get(uint32_t gpu_index, results->numa_node = numa_node; for (uint32_t i = 0; i < count; i++) { + std::pair ph; + err = get_processor_handle_from_id(gpu_index_list[i], &ph.first); + if (err != AMDSMI_STATUS_SUCCESS) { + RDC_LOG(RDC_INFO, "Fail to get process GPUs processor handle information: " << err); + return status; + } for (uint32_t j = 0; j < count; j++) { if (gpu_index_list[i] == gpu_index_list[j]) continue; - std::pair ph; - err = get_processor_handle_from_id(gpu_index_list[i], &ph.first); - err = get_processor_handle_from_id(gpu_index_list[i], &ph.second); + err = get_processor_handle_from_id(gpu_index_list[j], &ph.second); if (err != AMDSMI_STATUS_SUCCESS) { RDC_LOG(RDC_INFO, "Fail to get process GPUs processor handle information: " << err); return status; @@ -116,7 +120,7 @@ rdc_status_t RdcTopologyLinkImpl::rdc_device_topology_get(uint32_t gpu_index, RDC_LOG(RDC_INFO, "Fail to get process GPUs hops and type information: " << err); } - bool accessible; + bool accessible = false; err = amdsmi_is_P2P_accessible(ph.first, ph.second, &accessible); if (err != AMDSMI_STATUS_SUCCESS) { RDC_LOG(RDC_INFO, "Fail to get process GPUs P2P accessible information: " << err); @@ -128,9 +132,9 @@ rdc_status_t RdcTopologyLinkImpl::rdc_device_topology_get(uint32_t gpu_index, results->link_infos[i].max_bandwidth = max_bandwidth; results->link_infos[i].hops = hops; results->link_infos[i].link_type = static_cast(type); + results->link_infos[i].is_p2p_accessible = accessible; } } - return RDC_ST_OK; } @@ -180,4 +184,4 @@ rdc_status_t RdcTopologyLinkImpl::rdc_link_status_get(rdc_link_status_t* results } } // namespace rdc -} // namespace amd \ No newline at end of file +} // namespace amd