diff --git a/CHANGELOG.md b/CHANGELOG.md index fa1d0cc9ea..3bf3868545 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -143,6 +143,10 @@ Full documentation for amd_smi_lib is available at [https://rocm.docs.amd.com/pr ### Removed +- **Removed unnecessary API, `amdsmi_free_name_value_pairs(),` from amdsmi.h** + - This API is only used internally to free up memory from the python interface and does not need to be + exposed to the User. + - **Removed unused definitions** - `AMDSMI_MAX_NAME` - `AMDSMI_256_LENGTH` diff --git a/include/amd_smi/amdsmi.h b/include/amd_smi/amdsmi.h index 18bbb39841..11f8c8867d 100644 --- a/include/amd_smi/amdsmi.h +++ b/include/amd_smi/amdsmi.h @@ -4177,21 +4177,6 @@ amdsmi_status_t amdsmi_set_gpu_clk_limit(amdsmi_processor_handle processor_handl amdsmi_clk_limit_type_t limit_type, uint64_t clk_value); -/** - * @brief Frees heap memory allocated by reg_table and pm_metrics - * - * @ingroup tagClkPowerPerfQuery - * - * @platform{gpu_bm_linux} - * - * @details Frees heap memory. - * - * @param[in] p a pointer to the memory to free. - * - * @return ::void - */ -void amdsmi_free_name_value_pairs(void *p); - /** * @brief This function sets the clock frequency information. It is not supported on * virtual machine guest diff --git a/include/amd_smi/impl/amd_smi_utils.h b/include/amd_smi/impl/amd_smi_utils.h index 0b209b1fef..64e6cbe108 100644 --- a/include/amd_smi/impl/amd_smi_utils.h +++ b/include/amd_smi/impl/amd_smi_utils.h @@ -42,6 +42,10 @@ return AMDSMI_STATUS_BUSY; \ } +extern "C" { + void amdsmi_free_name_value_pairs(void *p); +} + amdsmi_status_t smi_amdgpu_find_hwmon_dir(amd::smi::AMDSmiGPUDevice* device, std::string* full_path); amdsmi_status_t smi_amdgpu_get_board_info(amd::smi::AMDSmiGPUDevice* device, amdsmi_board_info_t *info); amdsmi_status_t smi_amdgpu_get_power_cap(amd::smi::AMDSmiGPUDevice* device, int *cap); diff --git a/py-interface/amdsmi_wrapper.py b/py-interface/amdsmi_wrapper.py index 63cdf2d7c3..b42713e808 100644 --- a/py-interface/amdsmi_wrapper.py +++ b/py-interface/amdsmi_wrapper.py @@ -207,6 +207,11 @@ except OSError as e: print(e) print("Unable to find libamd_smi.so library try installing amd-smi-lib from your package manager") +#Add support for amdsmi_free_name_value_pairs +amdsmi_free_name_value_pairs = _libraries['libamd_smi.so'].amdsmi_free_name_value_pairs +amdsmi_free_name_value_pairs.restype = None +amdsmi_free_name_value_pairs.argtypes = [ctypes.POINTER(None)] + # values for enumeration 'amdsmi_init_flags_t' @@ -861,6 +866,21 @@ amdsmi_card_form_factor_t = ctypes.c_uint32 # enum class struct_amdsmi_pcie_info_t(Structure): pass +class struct_pcie_static_(Structure): + pass + +struct_pcie_static_._pack_ = 1 # source:False +struct_pcie_static_._fields_ = [ + ('max_pcie_width', ctypes.c_uint16), + ('PADDING_0', ctypes.c_ubyte * 2), + ('max_pcie_speed', ctypes.c_uint32), + ('pcie_interface_version', ctypes.c_uint32), + ('slot_type', amdsmi_card_form_factor_t), + ('max_pcie_interface_version', ctypes.c_uint32), + ('PADDING_1', ctypes.c_ubyte * 4), + ('reserved', ctypes.c_uint64 * 9), +] + class struct_pcie_metric_(Structure): pass @@ -881,21 +901,6 @@ struct_pcie_metric_._fields_ = [ ('reserved', ctypes.c_uint64 * 12), ] -class struct_pcie_static_(Structure): - pass - -struct_pcie_static_._pack_ = 1 # source:False -struct_pcie_static_._fields_ = [ - ('max_pcie_width', ctypes.c_uint16), - ('PADDING_0', ctypes.c_ubyte * 2), - ('max_pcie_speed', ctypes.c_uint32), - ('pcie_interface_version', ctypes.c_uint32), - ('slot_type', amdsmi_card_form_factor_t), - ('max_pcie_interface_version', ctypes.c_uint32), - ('PADDING_1', ctypes.c_ubyte * 4), - ('reserved', ctypes.c_uint64 * 9), -] - struct_amdsmi_pcie_info_t._pack_ = 1 # source:False struct_amdsmi_pcie_info_t._fields_ = [ ('pcie_static', struct_pcie_static_), @@ -2544,9 +2549,6 @@ amdsmi_set_gpu_clk_range.argtypes = [amdsmi_processor_handle, uint64_t, uint64_t amdsmi_set_gpu_clk_limit = _libraries['libamd_smi.so'].amdsmi_set_gpu_clk_limit amdsmi_set_gpu_clk_limit.restype = amdsmi_status_t amdsmi_set_gpu_clk_limit.argtypes = [amdsmi_processor_handle, amdsmi_clk_type_t, amdsmi_clk_limit_type_t, uint64_t] -amdsmi_free_name_value_pairs = _libraries['libamd_smi.so'].amdsmi_free_name_value_pairs -amdsmi_free_name_value_pairs.restype = None -amdsmi_free_name_value_pairs.argtypes = [ctypes.POINTER(None)] amdsmi_set_gpu_od_clk_info = _libraries['libamd_smi.so'].amdsmi_set_gpu_od_clk_info amdsmi_set_gpu_od_clk_info.restype = amdsmi_status_t amdsmi_set_gpu_od_clk_info.argtypes = [amdsmi_processor_handle, amdsmi_freq_ind_t, uint64_t, amdsmi_clk_type_t] @@ -3207,8 +3209,7 @@ __all__ = \ 'amdsmi_event_group_t', 'amdsmi_event_handle_t', 'amdsmi_event_type_t', 'amdsmi_evt_notification_data_t', 'amdsmi_evt_notification_type_t', - 'amdsmi_first_online_core_on_cpu_socket', - 'amdsmi_free_name_value_pairs', 'amdsmi_freq_ind_t', + 'amdsmi_first_online_core_on_cpu_socket', 'amdsmi_freq_ind_t', 'amdsmi_freq_volt_region_t', 'amdsmi_frequencies_t', 'amdsmi_frequency_range_t', 'amdsmi_fw_block_t', 'amdsmi_fw_info_t', 'amdsmi_get_afids_from_cper', diff --git a/src/amd_smi/amd_smi.cc b/src/amd_smi/amd_smi.cc index 979243da73..e8168148d4 100644 --- a/src/amd_smi/amd_smi.cc +++ b/src/amd_smi/amd_smi.cc @@ -62,6 +62,7 @@ #include "rocm_smi/rocm_smi_utils.h" #include "rocm_smi/rocm_smi_kfd.h" + // a global instance of std::mutex to protect data passed during threads std::mutex myMutex; static bool initialized_lib = false; diff --git a/tools/generator.py b/tools/generator.py index 86e01fb691..46852e55f2 100644 --- a/tools/generator.py +++ b/tools/generator.py @@ -220,7 +220,12 @@ try: #print(f"found smi lib in [", location, "]") except OSError as e: print(e) - print("Unable to find {library_name} library try installing amd-smi-lib from your package manager")""" + print("Unable to find {library_name} library try installing amd-smi-lib from your package manager") + +#Add support for amdsmi_free_name_value_pairs +amdsmi_free_name_value_pairs = _libraries['libamd_smi.so'].amdsmi_free_name_value_pairs +amdsmi_free_name_value_pairs.restype = None +amdsmi_free_name_value_pairs.argtypes = [ctypes.POINTER(None)]""" else: print("Unknown operating system. It is only supporing Linux and Windows.") return