[SWDEV-422195/SWDEV-440985] GPU metrics 1.6

Changes:
    - Added new GPU metrics:
      1) Violation status' (ex. PVIOL/TVIOL) accumulators
      2) XCP (Graphics Compute Partitions) statistics
      3) pcie other end recovery counter
    - CLI/API/tests changes were made accordingly

Change-Id: I589b9b1f570f25dda12d95bb501feca85da8b3bb
Signed-off-by: Charis Poag <Charis.Poag@amd.com>


[ROCm/amdsmi commit: 3a4abbd8c0]
Этот коммит содержится в:
Charis Poag
2024-05-21 20:30:16 -05:00
родитель 94d349573d
Коммит 7a35c805b0
23 изменённых файлов: 3260 добавлений и 942 удалений
+63
Просмотреть файл
@@ -114,6 +114,8 @@ class TestAmdSmiPythonInterface(unittest.TestCase):
kfd_info['kfd_id']))
print(" kfd_info['node_id'] is: {}".format(
kfd_info['node_id']))
print(" kfd_info['current_partition_id'] is: {}\n".format(
kfd_info['current_partition_id']))
print()
self.tearDown()
@@ -527,6 +529,8 @@ class TestAmdSmiPythonInterface(unittest.TestCase):
pcie_info['pcie_metric']['pcie_nak_sent_count']))
print(" pcie_info['pcie_metric']['pcie_nak_received_count'] is: {}".format(
pcie_info['pcie_metric']['pcie_nak_received_count']))
print(" pcie_info['pcie_metric']['pcie_lc_perf_other_end_recovery_count'] is: {}".format(
pcie_info['pcie_metric']['pcie_lc_perf_other_end_recovery_count']))
print()
self.tearDown()
@@ -844,6 +848,65 @@ class TestAmdSmiPythonInterface(unittest.TestCase):
self.tearDown()
# @unittest.SkipTest
@handle_exceptions
def test_accelerator_partition_profile(self):
self.setUp()
processors = amdsmi.amdsmi_get_processor_handles()
self.assertGreaterEqual(len(processors), 1)
self.assertLessEqual(len(processors), 32)
for i in range(0, len(processors)):
bdf = amdsmi.amdsmi_get_gpu_device_bdf(processors[i])
print("\n\n###Test Processor {}, bdf: {}".format(i, bdf))
print("\n###Test amdsmi_get_gpu_accelerator_partition_profile \n")
accelerator_partition = amdsmi.amdsmi_get_gpu_accelerator_partition_profile(processors[i])
print(" Current partition id: {}".format(
accelerator_partition['partition_id']))
print()
self.tearDown()
# Only supported on MI300+ ASICs
@handle_exceptions
def test_get_violation_status(self):
self.setUp()
processors = amdsmi.amdsmi_get_processor_handles()
self.assertGreaterEqual(len(processors), 1)
self.assertLessEqual(len(processors), 32)
for i in range(0, len(processors)):
bdf = amdsmi.amdsmi_get_gpu_device_bdf(processors[i])
print("\n\n###Test Processor {}, bdf: {}".format(i, bdf))
print("\n###Test amdsmi_get_violation_status \n")
violation_status = amdsmi.amdsmi_get_violation_status(processors[i])
print(" Reference Timestamp: {}".format(
violation_status['reference_timestamp']))
print(" Violation Timestamp: {}".format(
violation_status['violation_timestamp']))
print(" Prochot Thrm Violation (%): {}".format(
violation_status['per_prochot_thrm']))
print(" PVIOL (per_ppt_pwr) (%): {}".format(
violation_status['per_ppt_pwr']))
print(" TVIOL (per_socket_thrm) (%): {}".format(
violation_status['per_socket_thrm']))
print(" VR_THRM Violation (%): {}".format(
violation_status['per_vr_thrm']))
print(" HBM Thrm Violation (%): {}".format(
violation_status['per_hbm_thrm']))
print(" Prochot Thrm Violation (bool): {}".format(
violation_status['active_prochot_thrm']))
print(" PVIOL (active_ppt_pwr) (bool): {}".format(
violation_status['active_ppt_pwr']))
print(" TVIOL (active_socket_thrm) (bool): {}".format(
violation_status['active_socket_thrm']))
print(" VR_THRM Violation (bool): {}".format(
violation_status['active_vr_thrm']))
print(" HBM Thrm Violation (bool): {}".format(
violation_status['active_hbm_thrm']))
print()
self.tearDown()
def test_walkthrough(self):
print("\n\n#######################################################################")
print("========> test_walkthrough start <========\n")