SWDEV-463399: amdsmi_get_gpu_vram_info() adds bit-width

Driver info `amdgpu_gpu_info.vram_bit_width` is exposed through amdsmi_get_gpu_vram_info().

Code changes related to the following:
  * API
  * CLI
  * Unit tests
  * Examples

Change-Id: I8abd8db7a603078b2b1c008b2685cecf35caf3d2
Signed-off-by: Oliveira, Daniel <daniel.oliveira@amd.com>


[ROCm/amdsmi commit: 893f13ab98]
Этот коммит содержится в:
Oliveira, Daniel
2024-08-05 17:15:42 -05:00
коммит произвёл Maisam Arif
родитель ec14fe6ac7
Коммит e2e63055a6
7 изменённых файлов: 36 добавлений и 5 удалений
+5 -1
Просмотреть файл
@@ -693,7 +693,8 @@ class AMDSMICommands():
if args.vram:
vram_info_dict = {"type" : "N/A",
"vendor" : "N/A",
"size" : "N/A"}
"size" : "N/A",
"bit_width" : "N/A"}
try:
vram_info = amdsmi_interface.amdsmi_get_gpu_vram_info(args.gpu)
@@ -729,6 +730,9 @@ class AMDSMICommands():
vram_info_dict['size'] = {"value" : vram_info['vram_size'],
"unit" : vram_size_unit}
# Populate bit width
vram_info_dict['bit_width'] = vram_info['vram_bit_width']
except amdsmi_exception.AmdSmiLibraryException as e:
logging.debug("Failed to get vram info for gpu %s | %s", gpu_id, e.get_error_info())
+14
Просмотреть файл
@@ -303,6 +303,20 @@ int main() {
printf("\tRevisionID: 0x%x\n", asic_info.rev_id);
printf("\tAsic serial: 0x%s\n\n", asic_info.asic_serial);
// Get VRAM info
amdsmi_vram_info_t vram_info = {};
ret = amdsmi_get_gpu_vram_info(processor_handles[j], &vram_info);
if (ret != amdsmi_status_t::AMDSMI_STATUS_NOT_SUPPORTED) {
CHK_AMDSMI_RET(ret)
printf(" Output of amdsmi_get_gpu_vram_info:\n");
printf("\tVRAM Size: 0x%lx (%ld) \n", vram_info.vram_size, vram_info.vram_size);
printf("\tBIT Width: 0x%x (%d) \n\n", vram_info.vram_bit_width, vram_info.vram_bit_width);
}
else {
printf("\t**amdsmi_get_gpu_vram_info() not supported on this system.\n");
}
// Get VBIOS info
amdsmi_vbios_info_t vbios_info = {};
ret = amdsmi_get_gpu_vbios_info(processor_handles[j], &vbios_info);
+2 -1
Просмотреть файл
@@ -616,7 +616,8 @@ typedef struct {
amdsmi_vram_type_t vram_type;
amdsmi_vram_vendor_type_t vram_vendor;
uint64_t vram_size;
uint64_t reserved[6];
uint32_t vram_bit_width;
uint64_t reserved[5];
} amdsmi_vram_info_t;
+1
Просмотреть файл
@@ -1770,6 +1770,7 @@ def amdsmi_get_gpu_vram_info(
"vram_type": vram_info.vram_type,
"vram_vendor": vram_info.vram_vendor,
"vram_size": vram_info.vram_size,
"vram_bit_width": vram_info.vram_bit_width
}
+3 -1
Просмотреть файл
@@ -953,7 +953,9 @@ struct_amdsmi_vram_info_t._fields_ = [
('vram_type', amdsmi_vram_type_t),
('vram_vendor', amdsmi_vram_vendor_type_t),
('vram_size', ctypes.c_uint64),
('reserved', ctypes.c_uint64 * 6),
('vram_bit_width', ctypes.c_uint32),
('PADDING_0', ctypes.c_ubyte * 4),
('reserved', ctypes.c_uint64 * 5),
]
amdsmi_vram_info_t = struct_amdsmi_vram_info_t
+3
Просмотреть файл
@@ -55,6 +55,7 @@
#include <set>
#include <map>
#include <memory>
#include <limits>
#include <xf86drm.h>
#include "amd_smi/amdsmi.h"
#include "amd_smi/impl/fdinfo.h"
@@ -799,6 +800,7 @@ amdsmi_status_t amdsmi_get_gpu_vram_info(
info->vram_type = AMDSMI_VRAM_TYPE_UNKNOWN;
info->vram_size = 0;
info->vram_vendor = AMDSMI_VRAM_VENDOR__PLACEHOLDER0;
info->vram_bit_width = std::numeric_limits<decltype(info->vram_bit_width)>::max();
// Only can read vram type from libdrm
if (gpu_device->check_if_drm_is_supported()) {
@@ -808,6 +810,7 @@ amdsmi_status_t amdsmi_get_gpu_vram_info(
sizeof(struct drm_amdgpu_info_device), &dev_info);
if (r == AMDSMI_STATUS_SUCCESS) {
info->vram_type = amd::smi::vram_type_value(dev_info.vram_type);
info->vram_bit_width = dev_info.vram_bit_width;
}
}
+8 -2
Просмотреть файл
@@ -154,8 +154,14 @@ void TestIdInfoRead::Run(void) {
<< vram_info.vram_type << std::endl;
std::cout << "\t**Device Vram vendor id: "
<< vram_info.vram_vendor << std::endl;
std::cout << "\t**Device Vram size: "
<< vram_info.vram_size << std::endl;
std::cout << "\t**Device Vram size: 0x"
<< std::hex << vram_info.vram_size
<< " (" << std::dec << vram_info.vram_size << ")"
<< std::endl;
std::cout << "\t**Device Bit Width: 0x"
<< std::hex << vram_info.vram_bit_width
<< " (" << std::dec << vram_info.vram_bit_width << ")"
<< std::endl;
}
err = amdsmi_get_gpu_vendor_name(processor_handles_[i], buffer, kBufferLen);