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]
이 커밋은 다음에 포함됨:
@@ -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 = {};
|
||||
|
||||
@@ -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 = {};
|
||||
|
||||
@@ -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;
|
||||
|
||||
+560
-568
파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
Diff 로드
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
새 이슈에서 참조
사용자 차단