From 914dee641d46f12bf56571ee6e7fba7bbdd9b71d Mon Sep 17 00:00:00 2001 From: "Bill(Shuzhou) Liu" Date: Thu, 24 Aug 2023 13:08:47 -0500 Subject: [PATCH] Numa affinity shows large number Change the affinity from unsigned int to integer to represent -1. Change-Id: I82dc6f476b45fa4ec03a3c686fe8e6e2b7761b56 [ROCm/amdsmi commit: 471fbfddc1dd6786542c4e4d1753346c5225840e] --- projects/amdsmi/include/rocm_smi/rocm_smi.h | 2 +- projects/amdsmi/python_smi_tools/rocm_smi.py | 2 +- projects/amdsmi/src/rocm_smi.cc | 7 ++++--- projects/amdsmi/src/rocm_smi_device.cc | 2 +- .../amdsmi/tests/rocm_smi_test/functional/sys_info_read.cc | 7 ++++--- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/projects/amdsmi/include/rocm_smi/rocm_smi.h b/projects/amdsmi/include/rocm_smi/rocm_smi.h index 053447b501..9fa7de0b35 100755 --- a/projects/amdsmi/include/rocm_smi/rocm_smi.h +++ b/projects/amdsmi/include/rocm_smi/rocm_smi.h @@ -1534,7 +1534,7 @@ rsmi_status_t rsmi_dev_pci_id_get(uint32_t dv_ind, uint64_t *bdfid); * support this function with the given arguments * @retval ::RSMI_STATUS_INVALID_ARGS the provided arguments are not valid */ -rsmi_status_t rsmi_topo_numa_affinity_get(uint32_t dv_ind, uint32_t *numa_node); +rsmi_status_t rsmi_topo_numa_affinity_get(uint32_t dv_ind, int32_t *numa_node); /** * @brief Get PCIe traffic information diff --git a/projects/amdsmi/python_smi_tools/rocm_smi.py b/projects/amdsmi/python_smi_tools/rocm_smi.py index 08f2652665..4771a29f8f 100755 --- a/projects/amdsmi/python_smi_tools/rocm_smi.py +++ b/projects/amdsmi/python_smi_tools/rocm_smi.py @@ -3077,7 +3077,7 @@ def showNumaTopology(deviceList): @param deviceList: List of DRM devices (can be a single-item list) """ printLogSpacer(' Numa Nodes ') - numa_numbers = c_uint32() + numa_numbers = c_int32() for device in deviceList: ret = rocmsmi.rsmi_topo_get_numa_node_number(device, byref(numa_numbers)) if rsmi_ret_ok(ret, device, 'get_numa_node_number'): diff --git a/projects/amdsmi/src/rocm_smi.cc b/projects/amdsmi/src/rocm_smi.cc index b3347a155d..5c2e3f8fd5 100755 --- a/projects/amdsmi/src/rocm_smi.cc +++ b/projects/amdsmi/src/rocm_smi.cc @@ -756,7 +756,7 @@ rsmi_dev_pci_id_get(uint32_t dv_ind, uint64_t *bdfid) { } rsmi_status_t -rsmi_topo_numa_affinity_get(uint32_t dv_ind, uint32_t *numa_node) { +rsmi_topo_numa_affinity_get(uint32_t dv_ind, int32_t *numa_node) { TRY rsmi_status_t ret; uint64_t val = 0; @@ -764,9 +764,10 @@ rsmi_topo_numa_affinity_get(uint32_t dv_ind, uint32_t *numa_node) { CHK_SUPPORT_NAME_ONLY(numa_node) DEVICE_MUTEX - ret = get_dev_value_int(amd::smi::kDevNumaNode, dv_ind, &val); + std::string str_val; + ret = get_dev_value_str(amd::smi::kDevNumaNode, dv_ind, &str_val); + *numa_node = std::stol(str_val, 0); - *numa_node = static_cast(val); return ret; CATCH } diff --git a/projects/amdsmi/src/rocm_smi_device.cc b/projects/amdsmi/src/rocm_smi_device.cc index ddaf41a44a..f859a9812e 100755 --- a/projects/amdsmi/src/rocm_smi_device.cc +++ b/projects/amdsmi/src/rocm_smi_device.cc @@ -928,7 +928,6 @@ int Device::readDevInfo(DevInfoTypes type, uint64_t *val) { case kDevDFCountersAvailable: case kDevMemBusyPercent: case kDevXGMIError: - case kDevNumaNode: ret = readDevInfoStr(type, &tempStr); RET_IF_NONZERO(ret); if (tempStr == "") { @@ -1046,6 +1045,7 @@ int Device::readDevInfo(DevInfoTypes type, std::string *val) { case kDevAvailableComputePartition: case kDevComputePartition: case kDevMemoryPartition: + case kDevNumaNode: return readDevInfoStr(type, val); break; diff --git a/projects/amdsmi/tests/rocm_smi_test/functional/sys_info_read.cc b/projects/amdsmi/tests/rocm_smi_test/functional/sys_info_read.cc index dcff82aa84..1a2d9ff4df 100755 --- a/projects/amdsmi/tests/rocm_smi_test/functional/sys_info_read.cc +++ b/projects/amdsmi/tests/rocm_smi_test/functional/sys_info_read.cc @@ -90,6 +90,7 @@ void TestSysInfoRead::Run(void) { rsmi_status_t err; uint64_t val_ui64; uint32_t val_ui32; + int32_t val_i32; char buffer[80]; rsmi_version_t ver = {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, nullptr}; @@ -136,11 +137,11 @@ void TestSysInfoRead::Run(void) { err = rsmi_dev_pci_id_get(i, nullptr); ASSERT_EQ(err, RSMI_STATUS_INVALID_ARGS); - err = rsmi_topo_numa_affinity_get(i, &val_ui32); + err = rsmi_topo_numa_affinity_get(i, &val_i32); CHK_ERR_ASRT(err) IF_VERB(STANDARD) { - std::cout << "\t**NUMA NODE: 0x" << std::hex << val_ui32; - std::cout << " (" << std::dec << val_ui32 << ")" << std::endl; + std::cout << "\t**NUMA NODE: 0x" << std::hex << val_i32; + std::cout << " (" << std::dec << val_i32 << ")" << std::endl; } // Verify api support checking functionality is working err = rsmi_topo_numa_affinity_get(i, nullptr);