Added amdsmi cpu family & cpu model
- Updated header and source files - Updated python interface - Generated python wrapper for updated header - Updated the CLI to have cpu family & cpu model as part of metric table Change-Id: Iea440251797270d5d29ffe883b0ad6db790be658
This commit is contained in:
committed by
Maisam Arif
parent
8adf3eba1b
commit
6f7273fda5
@@ -1969,6 +1969,18 @@ class AMDSMICommands():
|
||||
|
||||
if (args.cpu_metrics_table):
|
||||
static_dict["metrics_table"] = {}
|
||||
try:
|
||||
cpu_fam = amdsmi_interface.amdsmi_get_cpu_family()
|
||||
static_dict["metrics_table"]["cpu_family"] = cpu_fam
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
static_dict["metrics_table"]["cpu_family"] = "N/A"
|
||||
logging.debug("Failed to get cpu family | %s", e.get_error_info())
|
||||
try:
|
||||
cpu_mod = amdsmi_interface.amdsmi_get_cpu_model()
|
||||
static_dict["metrics_table"]["cpu_model"] = cpu_mod
|
||||
except amdsmi_exception.AmdSmiLibraryException as e:
|
||||
static_dict["metrics_table"]["cpu_model"] = "N/A"
|
||||
logging.debug("Failed to get cpu model | %s", e.get_error_info())
|
||||
try:
|
||||
metrics_table = amdsmi_interface.amdsmi_get_metrics_table(args.cpu)
|
||||
static_dict["metrics_table"]["response"] = metrics_table
|
||||
|
||||
@@ -4963,6 +4963,24 @@ amdsmi_status_t amdsmi_get_metrics_table(amdsmi_processor_handle processor_handl
|
||||
amdsmi_status_t amdsmi_first_online_core_on_cpu_socket(amdsmi_processor_handle processor_handle,
|
||||
uint32_t *pcore_ind);
|
||||
|
||||
/**
|
||||
* @brief Get CPU family.
|
||||
*
|
||||
* @param[in,out] cpu_family - Input buffer to return the cpu family
|
||||
*
|
||||
* @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail
|
||||
*/
|
||||
amdsmi_status_t amdsmi_get_cpu_family(uint32_t *cpu_family);
|
||||
|
||||
/**
|
||||
* @brief Get CPU model.
|
||||
*
|
||||
* @param[in,out] cpu_model - Input buffer to return the cpu model
|
||||
*
|
||||
* @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail
|
||||
*/
|
||||
amdsmi_status_t amdsmi_get_cpu_model(uint32_t *cpu_model);
|
||||
|
||||
/**
|
||||
* @brief Get a description of provided AMDSMI error status for esmi errors.
|
||||
*
|
||||
|
||||
@@ -75,6 +75,9 @@ class AMDSmiSystem {
|
||||
amdsmi_status_t gpu_index_to_handle(uint32_t gpu_index,
|
||||
amdsmi_processor_handle* processor_handle);
|
||||
|
||||
amdsmi_status_t get_cpu_family(uint32_t *cpu_family);
|
||||
|
||||
amdsmi_status_t get_cpu_model(uint32_t *cpu_model);
|
||||
private:
|
||||
AMDSmiSystem() : init_flag_(AMDSMI_INIT_AMD_GPUS) {}
|
||||
|
||||
|
||||
@@ -6038,3 +6038,43 @@ try:
|
||||
except AmdSmiException as e:
|
||||
print(e)
|
||||
```
|
||||
|
||||
### amdsmi_get_cpu_family
|
||||
|
||||
Description: Get cpu family.
|
||||
|
||||
Output: cpu family
|
||||
|
||||
Exceptions that can be thrown by `amdsmi_get_cpu_family` function:
|
||||
|
||||
* `AmdSmiLibraryException`
|
||||
|
||||
Example:
|
||||
|
||||
```python
|
||||
try:
|
||||
cpu_family = amdsmi_get_cpu_family()
|
||||
print(cpu_family)
|
||||
except AmdSmiException as e:
|
||||
print(e)
|
||||
```
|
||||
|
||||
### amdsmi_get_cpu_model
|
||||
|
||||
Description: Get cpu model.
|
||||
|
||||
Output: cpu model
|
||||
|
||||
Exceptions that can be thrown by `amdsmi_get_cpu_model` function:
|
||||
|
||||
* `AmdSmiLibraryException`
|
||||
|
||||
Example:
|
||||
|
||||
```python
|
||||
try:
|
||||
cpu_model = amdsmi_get_cpu_model()
|
||||
print(cpu_model)
|
||||
except AmdSmiException as e:
|
||||
print(e)
|
||||
```
|
||||
|
||||
@@ -72,6 +72,8 @@ try:
|
||||
from .amdsmi_interface import amdsmi_get_metrics_table_version
|
||||
from .amdsmi_interface import amdsmi_get_metrics_table
|
||||
from .amdsmi_interface import amdsmi_first_online_core_on_cpu_socket
|
||||
from .amdsmi_interface import amdsmi_get_cpu_family
|
||||
from .amdsmi_interface import amdsmi_get_cpu_model
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
|
||||
@@ -1496,6 +1496,20 @@ def amdsmi_first_online_core_on_cpu_socket(
|
||||
|
||||
return pcore_ind.value
|
||||
|
||||
def amdsmi_get_cpu_family():
|
||||
family = ctypes.c_uint32()
|
||||
_check_res(
|
||||
amdsmi_wrapper.amdsmi_get_cpu_family(ctypes.byref(family))
|
||||
)
|
||||
return family.value
|
||||
|
||||
def amdsmi_get_cpu_model():
|
||||
model = ctypes.c_uint32()
|
||||
_check_res(
|
||||
amdsmi_wrapper.amdsmi_get_cpu_model(ctypes.byref(model))
|
||||
)
|
||||
return model.value
|
||||
|
||||
def amdsmi_init(flag=AmdSmiInitFlags.INIT_AMD_GPUS):
|
||||
if not isinstance(flag, AmdSmiInitFlags):
|
||||
raise AmdSmiParameterException(flag, AmdSmiInitFlags)
|
||||
|
||||
@@ -2294,6 +2294,12 @@ amdsmi_get_metrics_table.argtypes = [amdsmi_processor_handle, ctypes.POINTER(str
|
||||
amdsmi_first_online_core_on_cpu_socket = _libraries['libamd_smi.so'].amdsmi_first_online_core_on_cpu_socket
|
||||
amdsmi_first_online_core_on_cpu_socket.restype = amdsmi_status_t
|
||||
amdsmi_first_online_core_on_cpu_socket.argtypes = [amdsmi_processor_handle, ctypes.POINTER(ctypes.c_uint32)]
|
||||
amdsmi_get_cpu_family = _libraries['libamd_smi.so'].amdsmi_get_cpu_family
|
||||
amdsmi_get_cpu_family.restype = amdsmi_status_t
|
||||
amdsmi_get_cpu_family.argtypes = [ctypes.POINTER(ctypes.c_uint32)]
|
||||
amdsmi_get_cpu_model = _libraries['libamd_smi.so'].amdsmi_get_cpu_model
|
||||
amdsmi_get_cpu_model.restype = amdsmi_status_t
|
||||
amdsmi_get_cpu_model.argtypes = [ctypes.POINTER(ctypes.c_uint32)]
|
||||
amdsmi_get_esmi_err_msg = _libraries['libamd_smi.so'].amdsmi_get_esmi_err_msg
|
||||
amdsmi_get_esmi_err_msg.restype = amdsmi_status_t
|
||||
amdsmi_get_esmi_err_msg.argtypes = [amdsmi_status_t, ctypes.POINTER(ctypes.POINTER(ctypes.c_char))]
|
||||
@@ -2490,8 +2496,9 @@ __all__ = \
|
||||
'amdsmi_get_cpu_current_xgmi_bw', 'amdsmi_get_cpu_ddr_bw',
|
||||
'amdsmi_get_cpu_dimm_power_consumption',
|
||||
'amdsmi_get_cpu_dimm_temp_range_and_refresh_rate',
|
||||
'amdsmi_get_cpu_dimm_thermal_sensor', 'amdsmi_get_cpu_fclk_mclk',
|
||||
'amdsmi_get_cpu_hsmp_proto_ver', 'amdsmi_get_cpu_prochot_status',
|
||||
'amdsmi_get_cpu_dimm_thermal_sensor', 'amdsmi_get_cpu_family',
|
||||
'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_cpu_smu_fw_version',
|
||||
'amdsmi_get_cpu_socket_c0_residency',
|
||||
|
||||
@@ -3081,6 +3081,38 @@ amdsmi_status_t amdsmi_first_online_core_on_cpu_socket(amdsmi_processor_handle p
|
||||
return AMDSMI_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
amdsmi_status_t amdsmi_get_cpu_family(uint32_t *cpu_family)
|
||||
{
|
||||
amdsmi_status_t status;
|
||||
uint32_t family;
|
||||
|
||||
AMDSMI_CHECK_INIT();
|
||||
|
||||
status = amd::smi::AMDSmiSystem::getInstance().get_cpu_family(&family);
|
||||
if (status != AMDSMI_STATUS_SUCCESS)
|
||||
return amdsmi_errno_to_esmi_status(status);
|
||||
|
||||
*cpu_family = family;
|
||||
|
||||
return AMDSMI_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
amdsmi_status_t amdsmi_get_cpu_model(uint32_t *cpu_model)
|
||||
{
|
||||
amdsmi_status_t status;
|
||||
uint32_t model;
|
||||
|
||||
AMDSMI_CHECK_INIT();
|
||||
|
||||
status = amd::smi::AMDSmiSystem::getInstance().get_cpu_model(&model);
|
||||
if (status != AMDSMI_STATUS_SUCCESS)
|
||||
return amdsmi_errno_to_esmi_status(status);
|
||||
|
||||
*cpu_model = model;
|
||||
|
||||
return AMDSMI_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
amdsmi_status_t amdsmi_get_esmi_err_msg(amdsmi_status_t status, const char **status_string)
|
||||
{
|
||||
for (auto& iter : amd::smi::esmi_status_map) {
|
||||
|
||||
@@ -56,7 +56,7 @@ namespace smi {
|
||||
|
||||
#define AMD_SMI_INIT_FLAG_RESRV_TEST1 0x800000000000000 //!< Reserved for test
|
||||
|
||||
static amdsmi_status_t get_cpu_family(uint32_t *cpu_family) {
|
||||
amdsmi_status_t AMDSmiSystem::get_cpu_family(uint32_t *cpu_family) {
|
||||
amdsmi_status_t ret;
|
||||
ret = static_cast<amdsmi_status_t>(esmi_cpu_family_get(cpu_family));
|
||||
|
||||
@@ -68,7 +68,7 @@ static amdsmi_status_t get_cpu_family(uint32_t *cpu_family) {
|
||||
}
|
||||
|
||||
|
||||
static amdsmi_status_t get_cpu_model(uint32_t *cpu_model) {
|
||||
amdsmi_status_t AMDSmiSystem::get_cpu_model(uint32_t *cpu_model) {
|
||||
amdsmi_status_t ret;
|
||||
ret = static_cast<amdsmi_status_t>(esmi_cpu_model_get(cpu_model));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user