diff --git a/include/amd_smi/amdsmi.h b/include/amd_smi/amdsmi.h index 33ac03e1b9..4a1a80721a 100644 --- a/include/amd_smi/amdsmi.h +++ b/include/amd_smi/amdsmi.h @@ -4923,6 +4923,17 @@ amdsmi_status_t amdsmi_get_cpu_socket_energy(amdsmi_processor_handle processor_h * @{ */ +/** + * @brief Get Number of threads Per Core. + * + * @platform{cpu_bm} + * + * @param[in,out] threads_per_core - Input buffer to return the Number of threads Per Core + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_threads_per_core(uint32_t *threads_per_core); + /** * @brief Get SMU Firmware Version. * diff --git a/py-interface/amdsmi_wrapper.py b/py-interface/amdsmi_wrapper.py index 570dc7418e..6332e2ee0f 100644 --- a/py-interface/amdsmi_wrapper.py +++ b/py-interface/amdsmi_wrapper.py @@ -2259,6 +2259,9 @@ amdsmi_get_cpu_core_energy.argtypes = [amdsmi_processor_handle, ctypes.POINTER(c amdsmi_get_cpu_socket_energy = _libraries['libamd_smi.so'].amdsmi_get_cpu_socket_energy amdsmi_get_cpu_socket_energy.restype = amdsmi_status_t amdsmi_get_cpu_socket_energy.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint64)] +amdsmi_get_threads_per_core = _libraries['libamd_smi.so'].amdsmi_get_threads_per_core +amdsmi_get_threads_per_core.restype = amdsmi_status_t +amdsmi_get_threads_per_core.argtypes = [ctypes.POINTER(ctypes.c_uint32)] amdsmi_get_cpu_smu_fw_version = _libraries['libamd_smi.so'].amdsmi_get_cpu_smu_fw_version amdsmi_get_cpu_smu_fw_version.restype = amdsmi_status_t amdsmi_get_cpu_smu_fw_version.argtypes = [amdsmi_processor_handle, ctypes.POINTER(struct_amdsmi_smu_fw_version_t)] @@ -2610,6 +2613,7 @@ __all__ = \ 'amdsmi_get_cpu_fclk_mclk', 'amdsmi_get_cpu_hsmp_proto_ver', 'amdsmi_get_cpu_model', 'amdsmi_get_cpu_prochot_status', 'amdsmi_get_cpu_pwr_svi_telemetry_all_rails', + 'amdsmi_get_threads_per_core', 'amdsmi_get_cpu_smu_fw_version', 'amdsmi_get_cpu_socket_c0_residency', 'amdsmi_get_cpu_socket_current_active_freq_limit', diff --git a/src/amd_smi/amd_smi.cc b/src/amd_smi/amd_smi.cc index 79c82d52bc..0d5443eaff 100644 --- a/src/amd_smi/amd_smi.cc +++ b/src/amd_smi/amd_smi.cc @@ -2231,6 +2231,22 @@ static amdsmi_status_t amdsmi_errno_to_esmi_status(amdsmi_status_t status) return AMDSMI_STATUS_SUCCESS; } +amdsmi_status_t amdsmi_get_threads_per_core(uint32_t *threads_per_core) +{ + amdsmi_status_t status; + uint32_t esmi_threads_per_core; + + AMDSMI_CHECK_INIT(); + + status = static_cast(esmi_threads_per_core_get(&esmi_threads_per_core)); + if (status != AMDSMI_STATUS_SUCCESS) + return amdsmi_errno_to_esmi_status(status); + + *threads_per_core = esmi_threads_per_core; + + return AMDSMI_STATUS_SUCCESS; +} + amdsmi_status_t amdsmi_get_cpu_hsmp_proto_ver(amdsmi_processor_handle processor_handle, uint32_t *proto_ver) {