Fix GPU metric tests & cleanup test output

- CLI: Added average_power to display if current_power is empty
    - CLI: fixed PCIe current_speed not displaying GT/s
    - ROCm API: 1.3 & 1.4
                -> commented out setting avg clocks to current clock value
(leave as max uint value, not re-assign; these are not same values)
                    -> commented out setting current_socket_power = average_power
(leave as max uint value, not re-assign; these are not same values)
                    -> For all non-array clocks, placed value in first
                        array[0] to keep outputs consistent
                    (helps xcd calc)
      - ROCm API: rsmi_dev_metrics_curr_gfxclk_get fixed to count
        XCDs using backwards compatible rsmi_dev_gpu_metrics_info_get.
      - ^ Fixes XCD count overall + assigning clock[0] in 1.3 to curr
        freq
      - AMD SMI API: amdsmi_get_gpu_metrics_info() initialized all new
        1.5 metric values for all lower metric tables
      - AMD SMI API: wrapper -> fix is here + returns correct AMD SMI return
      - AMD SMI API: wrapper -> now displays amdsmi return status as
        string in logs
      - gpu_metrics_read.cc -> now has better overview of backwards
        compatible output
      - gpu_metrics_read.cc -> Cleaned up output, added units, and
        display all array output

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


[ROCm/amdsmi commit: 5ff5af0b5a]
This commit is contained in:
Charis Poag
2023-12-19 02:49:52 -06:00
parent e924266a25
commit 601a254f37
6 changed files with 600 additions and 113 deletions
+21 -1
View File
@@ -116,7 +116,13 @@ amdsmi_status_t rsmi_wrapper(F && f,
uint32_t gpu_index = gpu_device->get_gpu_id();
auto rstatus = std::forward<F>(f)(gpu_index,
std::forward<Args>(args)...);
return amd::smi::rsmi_to_amdsmi_status(rstatus);
r = amd::smi::rsmi_to_amdsmi_status(rstatus);
std::ostringstream ss;
const char *status_string;
amdsmi_status_code_to_string(r, &status_string);
ss << __PRETTY_FUNCTION__ << " | returning status = " << status_string;
LOG_INFO(ss);
return r;
}
amdsmi_status_t
@@ -1098,7 +1104,21 @@ amdsmi_status_t amdsmi_get_gpu_metrics_info(
(sizeof(pgpu_metrics->jpeg_activity) /
sizeof(pgpu_metrics->jpeg_activity[0])),
std::numeric_limits<uint16_t>::max());
pgpu_metrics->mem_bandwidth_acc =
static_cast<uint64_t>(std::numeric_limits<uint64_t>::max());
pgpu_metrics->mem_max_bandwidth =
static_cast<uint32_t>(std::numeric_limits<uint32_t>::max());
pgpu_metrics->pcie_nak_sent_count_acc =
static_cast<uint32_t>(std::numeric_limits<uint32_t>::max());
pgpu_metrics->pcie_nak_rcvd_count_acc =
static_cast<uint32_t>(std::numeric_limits<uint32_t>::max());
}
std::ostringstream ss;
const char *status_string;
amdsmi_status_code_to_string(ret, &status_string);
ss << __PRETTY_FUNCTION__
<< " | END, returning status = " << status_string;
LOG_TRACE(ss);
// END: REMOVE WHATS ABOVE ME
return ret;
}