SWDEV-361376 - Add README for python tool

- Add up to date README file for python tool

Change-Id: I7a02f79469e990870398b3741b033ea447998fdd
Signed-off-by: Dalibor Stanisavljevic <Dalibor.Stanisavljevic@amd.com>


[ROCm/amdsmi commit: 9cad9e5216]
이 커밋은 다음에 포함됨:
Dalibor Stanisavljevic
2022-11-09 16:17:43 +01:00
부모 b155d429c9
커밋 a16b55507d
8개의 변경된 파일621개의 추가작업 그리고 619개의 파일을 삭제
+3 -3
파일 보기
@@ -190,11 +190,11 @@ int main() {
CHK_AMDSMI_RET(ret)
printf(" Output of amdsmi_get_gpu_activity:\n");
printf("\tAverage GFX Activity: %d\n",
engine_usage.average_gfx_activity);
engine_usage.gfx_activity);
printf("\tAverage MM Activity: %d\n",
engine_usage.average_mm_activity[0]);
engine_usage.mm_activity[0]);
printf("\tAverage UMC Activity: %d\n\n",
engine_usage.average_umc_activity);
engine_usage.umc_activity);
// Get firmware info
amdsmi_fw_info_t fw_information = {};
+3 -3
파일 보기
@@ -155,11 +155,11 @@ int main() {
CHK_AMDSMI_RET(ret)
printf(" Output of amdsmi_get_gpu_activity:\n");
printf("\tAverage GFX Activity: %d\n",
engine_usage.average_gfx_activity);
engine_usage.gfx_activity);
printf("\tAverage MM Activity: %d\n",
engine_usage.average_mm_activity[0]);
engine_usage.mm_activity[0]);
printf("\tAverage UMC Activity: %d\n\n",
engine_usage.average_umc_activity);
engine_usage.umc_activity);
// Get firmware info
amdsmi_fw_info_t fw_information = {};
+3 -3
파일 보기
@@ -362,9 +362,9 @@ typedef struct amdsmi_clk_measure {
} amdsmi_clk_measure_t;
typedef struct amdsmi_engine_usage {
uint32_t average_gfx_activity;
uint32_t average_umc_activity;
uint32_t average_mm_activity[AMDSMI_MAX_MM_IP_COUNT];
uint32_t gfx_activity;
uint32_t umc_activity;
uint32_t mm_activity[AMDSMI_MAX_MM_IP_COUNT];
} amdsmi_engine_usage_t;
typedef uint32_t amdsmi_process_handle;
파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다. Diff 로드
+2 -2
파일 보기
@@ -21,7 +21,7 @@
# Library Initialization
from .amdsmi_interface import amdsmi_init
from .amdsmi_interface import amdsmi_fini
from .amdsmi_interface import amdsmi_shut_down
# Device Descovery
from .amdsmi_interface import amdsmi_get_device_type
@@ -35,7 +35,7 @@ from .amdsmi_interface import amdsmi_get_driver_version
# # ASIC and Bus Static Information
from .amdsmi_interface import amdsmi_get_asic_info
from .amdsmi_interface import amdsmi_get_power_info
from .amdsmi_interface import amdsmi_get_power_cap_info
from .amdsmi_interface import amdsmi_get_caps_info
# # Microcode and VBIOS Information
+24 -14
파일 보기
@@ -359,7 +359,7 @@ def _parse_fw_info(fw_info: amdsmi_wrapper.amdsmi_fw_info_t) -> Dict[str, Any]:
"""
if not isinstance(fw_info, amdsmi_wrapper.amdsmi_fw_info_t):
raise AmdSmiParameterException(fw_info, amdsmi_wrapper.amdsmi_fw_info_t)
formatted_fw_info = {"num_fw_info": fw_info.num_fw_info}
formatted_fw_info = dict()
for index, value in amdsmi_wrapper.amdsmi_fw_block__enumvalues.items():
if value == "FW_ID_FIRST":
value = "FW_ID_SMU"
@@ -503,11 +503,13 @@ def amdsmi_get_device_handles() -> List[amdsmi_wrapper.amdsmi_device_handle]:
return devices
def amdsmi_init():
_check_res(amdsmi_wrapper.amdsmi_init(AmdSmiInitFlags.AMD_GPUS))
def amdsmi_init(flag=AmdSmiInitFlags.AMD_GPUS):
if not isinstance(flag, AmdSmiInitFlags):
raise AmdSmiParameterException(flag, AmdSmiInitFlags)
_check_res(amdsmi_wrapper.amdsmi_init(flag))
def amdsmi_fini():
def amdsmi_shut_down():
_check_res(amdsmi_wrapper.amdsmi_shut_down())
@@ -563,7 +565,7 @@ def amdsmi_get_asic_info(
}
def amdsmi_get_power_info(
def amdsmi_get_power_cap_info(
device_handle: amdsmi_wrapper.amdsmi_device_handle,
) -> Dict[str, Any]:
if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle):
@@ -645,9 +647,9 @@ def amdsmi_get_gpu_activity(
)
return {
"average_gfx_activity": engine_usage.average_gfx_activity,
"average_umc_activity": engine_usage.average_umc_activity,
"average_mm_activity": list(engine_usage.average_mm_activity),
"gfx_activity": engine_usage.gfx_activity,
"umc_activity": engine_usage.umc_activity,
"mm_activity": list(engine_usage.mm_activity),
}
@@ -888,22 +890,22 @@ def amdsmi_get_process_list(
def amdsmi_get_process_info(
device_handle: amdsmi_wrapper.amdsmi_device_handle,
procces_handle: amdsmi_wrapper.amdsmi_process_handle,
process: amdsmi_wrapper.amdsmi_process_handle,
) -> Dict[str, Any]:
if not isinstance(device_handle, amdsmi_wrapper.amdsmi_device_handle):
raise AmdSmiParameterException(
device_handle, amdsmi_wrapper.amdsmi_device_handle
)
if not isinstance(procces_handle, amdsmi_wrapper.amdsmi_process_handle):
if not isinstance(process, amdsmi_wrapper.amdsmi_process_handle):
raise AmdSmiParameterException(
procces_handle, amdsmi_wrapper.amdsmi_process_handle
process, amdsmi_wrapper.amdsmi_process_handle
)
info = amdsmi_wrapper.amdsmi_process_info()
_check_res(
amdsmi_wrapper.amdsmi_get_process_info(
device_handle, procces_handle, ctypes.byref(info)
device_handle, process, ctypes.byref(info)
)
)
@@ -1055,11 +1057,19 @@ def amdsmi_get_pcie_link_caps(
def amdsmi_get_device_handle_from_bdf(
bdf_info: amdsmi_wrapper.amdsmi_bdf_t,
bdf_info: Union[amdsmi_wrapper.amdsmi_bdf_t, str],
) -> amdsmi_wrapper.amdsmi_device_handle:
if not isinstance(bdf_info, amdsmi_wrapper.amdsmi_bdf_t):
if not isinstance(bdf_info, amdsmi_wrapper.amdsmi_bdf_t) and not isinstance(bdf_info, str):
raise AmdSmiParameterException(bdf_info, amdsmi_wrapper.amdsmi_bdf_t)
if isinstance(bdf_info, str):
bdf = amdsmi_wrapper.amdsmi_bdf_t()
bdf.amdsmi_bdf_0.domain_number = int(bdf_info[:4])
bdf.amdsmi_bdf_0.bus_number = int(bdf_info[5:7])
bdf.amdsmi_bdf_0.device_number = int(bdf_info[8:10])
bdf.amdsmi_bdf_0.function_number = int(bdf_info[11])
bdf_info = bdf
device_handles_pylist = amdsmi_get_device_handles()
device_handles = (amdsmi_wrapper.amdsmi_device_handle * len(device_handles_pylist))(
*device_handles_pylist
+23 -23
파일 보기
@@ -28,7 +28,7 @@ import os
# -*- coding: utf-8 -*-
#
# TARGET arch is: ['-I/usr/lib/llvm-14/lib/clang/14.0.0/include/']
# TARGET arch is: ['-I/usr/lib/llvm-6.0/lib/clang/6.0.0/include/']
# WORD_SIZE is: 8
# POINTER_SIZE is: 8
# LONGDOUBLE_SIZE is: 16
@@ -424,15 +424,6 @@ amdsmi_xgmi_info_t = amdsmi_xgmi_info
class amdsmi_gpu_caps(Structure):
pass
class amdsmi_gpu_caps_1(Structure):
pass
amdsmi_gpu_caps_1._pack_ = 1 # source:False
amdsmi_gpu_caps_1._fields_ = [
('mm_ip_count', ctypes.c_ubyte),
('mm_ip_list', ctypes.c_ubyte * 8),
]
class amdsmi_gpu_caps_0(Structure):
pass
@@ -444,6 +435,15 @@ amdsmi_gpu_caps_0._fields_ = [
('PADDING_0', ctypes.c_ubyte * 2),
]
class amdsmi_gpu_caps_1(Structure):
pass
amdsmi_gpu_caps_1._pack_ = 1 # source:False
amdsmi_gpu_caps_1._fields_ = [
('mm_ip_count', ctypes.c_ubyte),
('mm_ip_list', ctypes.c_ubyte * 8),
]
amdsmi_gpu_caps._pack_ = 1 # source:False
amdsmi_gpu_caps._fields_ = [
('gfx', amdsmi_gpu_caps_0),
@@ -634,9 +634,9 @@ class amdsmi_engine_usage(Structure):
amdsmi_engine_usage._pack_ = 1 # source:False
amdsmi_engine_usage._fields_ = [
('average_gfx_activity', ctypes.c_uint32),
('average_umc_activity', ctypes.c_uint32),
('average_mm_activity', ctypes.c_uint32 * 8),
('gfx_activity', ctypes.c_uint32),
('umc_activity', ctypes.c_uint32),
('mm_activity', ctypes.c_uint32 * 8),
]
amdsmi_engine_usage_t = amdsmi_engine_usage
@@ -644,16 +644,6 @@ amdsmi_process_handle = ctypes.c_uint32
class amdsmi_process_info(Structure):
pass
class amdsmi_process_info_1(Structure):
pass
amdsmi_process_info_1._pack_ = 1 # source:False
amdsmi_process_info_1._fields_ = [
('gtt_mem', ctypes.c_uint64),
('cpu_mem', ctypes.c_uint64),
('vram_mem', ctypes.c_uint64),
]
class amdsmi_process_info_0(Structure):
pass
@@ -666,6 +656,16 @@ amdsmi_process_info_0._fields_ = [
('dec', ctypes.c_uint16 * 8),
]
class amdsmi_process_info_1(Structure):
pass
amdsmi_process_info_1._pack_ = 1 # source:False
amdsmi_process_info_1._fields_ = [
('gtt_mem', ctypes.c_uint64),
('cpu_mem', ctypes.c_uint64),
('vram_mem', ctypes.c_uint64),
]
amdsmi_process_info._pack_ = 1 # source:False
amdsmi_process_info._fields_ = [
('name', ctypes.c_char * 32),
+3 -3
파일 보기
@@ -1322,9 +1322,9 @@ amdsmi_get_gpu_activity(amdsmi_device_handle dev, amdsmi_engine_usage_t *info) {
if (status != AMDSMI_STATUS_SUCCESS) {
return status;
}
info->average_gfx_activity = metrics.average_gfx_activity;
info->average_mm_activity[0] = metrics.average_mm_activity;
info->average_umc_activity = metrics.average_umc_activity;
info->gfx_activity = metrics.average_gfx_activity;
info->mm_activity[0] = metrics.average_mm_activity;
info->umc_activity = metrics.average_umc_activity;
return AMDSMI_STATUS_SUCCESS;
}