Revert "Re-enable rocm-smi with new c api"

This reverts commit 2e81d33395.

Change-Id: I9866610597a6de97a3c06ef9646f0afc85f149f4
Dieser Commit ist enthalten in:
Chris Freehill
2018-04-07 19:59:13 -04:00
Ursprung 2e81d33395
Commit 0d9e71a63a
5 geänderte Dateien mit 116 neuen und 103 gelöschten Zeilen
+38 -6
Datei anzeigen
@@ -58,9 +58,28 @@
#include "suites/test_common/test_case_template.h"
#include "suites/test_common/main.h"
#include "suites/test_common/test_common.h"
#if ENABLE_SMI
#include "rocm_smi/rocm_smi.h"
#endif
static RocrTstGlobals *sRocrtstGlvalues = nullptr;
#if ENABLE_SMI
static bool GetMonitorDevices(const std::shared_ptr<amd::smi::Device> &d,
void *p) {
std::string val_str;
assert(p != nullptr);
std::vector<std::shared_ptr<amd::smi::Device>> *device_list =
reinterpret_cast<std::vector<std::shared_ptr<amd::smi::Device>> *>(p);
if (d->monitor() != nullptr) {
device_list->push_back(d);
}
return false;
}
#endif
static void SetFlags(TestBase *test) {
assert(sRocrtstGlvalues != nullptr);
@@ -68,6 +87,9 @@ static void SetFlags(TestBase *test) {
test->set_num_iteration(sRocrtstGlvalues->num_iterations);
test->set_verbosity(sRocrtstGlvalues->verbosity);
test->set_monitor_verbosity(sRocrtstGlvalues->monitor_verbosity);
#if ENABLE_SMI
test->set_monitor_devices(&sRocrtstGlvalues->monitor_devices);
#endif
}
@@ -192,12 +214,22 @@ int main(int argc, char** argv) {
return 1;
}
sRocrtstGlvalues = &settings;
rsmi_status_t rsmi_ret = rsmi_init(0);
if (rsmi_ret != RSMI_STATUS_SUCCESS) {
std::cout << "Failed to initialize ROCm smi" << std::endl;
return 1;
}
DumpMonitorInfo();
#if ENABLE_SMI
amd::smi::RocmSMI hw;
hw.DiscoverDevices();
hw.IterateSMIDevices(
GetMonitorDevices, reinterpret_cast<void *>(&settings.monitor_devices));
sRocrtstGlvalues = &settings;
// Use this dummy test to get one output of monitors at the beginning
{
TestExample dummy;
dummy.set_monitor_devices(&sRocrtstGlvalues->monitor_devices);
std::cout << "*** Initial Hardware Monitor Values:" << std::endl;
DumpMonitorInfo(&dummy);
}
#endif
return RUN_ALL_TESTS();
}
+3 -1
Datei anzeigen
@@ -103,7 +103,9 @@ void TestBase::Close(void) {
if (monitor_verbosity() > 0) {
DumpMonitorInfo();
#if ENABLE_SMI
DumpMonitorInfo(this);
#endif
}
err = rocrtst::CommonCleanUp(this);
+16 -2
Datei anzeigen
@@ -50,7 +50,9 @@
#include <vector>
#include "common/base_rocr.h"
#if ENABLE_SMI
#include "rocm_smi/rocm_smi.h"
#endif
class TestBase : public rocrtst::BaseRocR {
public:
TestBase(void);
@@ -78,9 +80,21 @@ class TestBase : public rocrtst::BaseRocR {
const std::string & description(void) const {return description_;}
void set_description(std::string d);
#if ENABLE_SMI
void set_monitor_devices(
std::vector<std::shared_ptr<amd::smi::Device>> *m) {
monitor_devices_ = m;
}
std::vector<std::shared_ptr<amd::smi::Device>> *
monitor_devices(void) const {
return monitor_devices_;
}
#endif
private:
std::string description_;
#if ENABLE_SMI
std::vector<std::shared_ptr<amd::smi::Device>> *monitor_devices_;
#endif
};
#endif // ROCRTST_SUITES_TEST_COMMON_TEST_BASE_H_
+50 -92
Datei anzeigen
@@ -49,11 +49,9 @@
#include <iostream>
#include <string>
#include <sstream>
#include "suites/test_common/test_base.h"
#include "suites/test_common/test_common.h"
#include "rocm_smi/rocm_smi.h"
static const struct option long_options[] = {
{"iterations", required_argument, nullptr, 'i'},
@@ -122,28 +120,17 @@ uint32_t ProcessCmdline(RocrTstGlobals* test, int arg_cnt, char** arg_list) {
}
return 0;
}
template<typename T>
static std::string IntegerToString(T intVal, bool hex = true) {
std::stringstream stream;
if (hex) {
stream << "0x" << std::hex << intVal;
} else {
stream << std::dec << intVal;
}
return stream.str();
}
int DumpMonitorInfo() {
#if ENABLE_SMI
void DumpMonitorInfo(const TestBase *test) {
int ret = 0;
uint64_t value_u64;
int64_t value_i64;
uint32_t value;
uint32_t value2;
std::string val_str;
std::vector<std::string> val_vec;
rsmi_status_t rsmi_ret;
int dump_ret = 0;
assert(test != nullptr);
assert(test->monitor_devices() != nullptr &&
"Make sure to call test->set_monitor_devices()");
auto print_attr_label =
[&](std::string attrib) -> bool {
std::cout << "\t** " << attrib;
@@ -159,91 +146,62 @@ int DumpMonitorInfo() {
std::cout << "\t***** Hardware monitor values *****" << std::endl;
std::cout << delim << std::endl;
std::cout.setf(std::ios::dec, std::ios::basefield);
uint32_t num_mon_devices;
rsmi_ret = rsmi_num_monitor_devices(&num_mon_devices);
if (rsmi_ret != RSMI_STATUS_SUCCESS) {
std::cout << "rsmi_num_monitor_device() returned" << rsmi_ret << std::endl;
return 1;
}
for (uint32_t dindx = 0; dindx < num_mon_devices; ++dindx) {
auto print_frequencies = [&](rsmi_frequencies *freqs, std::string label) {
for (auto dev : *test->monitor_devices()) {
auto print_vector =
[&](amd::smi::DevInfoTypes type, std::string label) {
ret = dev->readDevInfo(type, &val_vec);
if (print_attr_label(label)) {
for (uint32_t i = 0; i < freqs->num_supported; ++i) {
std::cout << "\t** " << i << ": " <<
freqs->frequency[i]/1000000 << "Mhz";
if (i == freqs->current) {
std::cout << " *";
}
std::cout << std::endl;
for (auto vs : val_vec) {
std::cout << "\t** " << vs << std::endl;
}
val_vec.clear();
}
};
auto print_val_str = [&](std::string val, std::string label) {
auto print_val_str =
[&](amd::smi::DevInfoTypes type, std::string label) {
ret = dev->readDevInfo(type, &val_str);
std::cout << "\t** " << label;
if (ret != RSMI_STATUS_SUCCESS) {
std::cout << "not available; rsmi call returned" << rsmi_ret;
dump_ret = 1;
if (ret == -1) {
std::cout << "not available";
} else {
std::cout << val;
std::cout << val_str;
}
std::cout << std:: endl;
};
rsmi_ret = rsmi_dev_get_id(dindx, &value_u64);
print_val_str(IntegerToString(value_u64), "Device ID: ");
print_val_str(amd::smi::kDevDevID, "Device ID: ");
print_val_str(amd::smi::kDevPerfLevel, "Performance Level: ");
print_val_str(amd::smi::kDevOverDriveLevel, "OverDrive Level: ");
print_vector(amd::smi::kDevGPUMClk,
"Supported GPU Memory clock frequencies:\n");
print_vector(amd::smi::kDevGPUSClk,
"Supported GPU clock frequencies:\n");
rsmi_dev_perf_level perf;
std::string perf_str;
rsmi_ret = rsmi_dev_get_perf_level(dindx, &perf);
switch (perf) {
case RSMI_DEV_PERF_LEVEL_AUTO:
perf_str = "auto";
break;
default:
perf_str = "unknown";
if (dev->monitor() != nullptr) {
ret = dev->monitor()->readMonitor(amd::smi::kMonName, &val_str);
if (print_attr_label("Monitor name: ")) {
std::cout << val_str << std::endl;
}
ret = dev->monitor()->readMonitor(amd::smi::kMonTemp, &value);
if (print_attr_label("Temperature: ")) {
std::cout << static_cast<float>(value)/1000.0 << "C" << std::endl;
}
std::cout.setf(std::ios::dec, std::ios::basefield);
ret = dev->monitor()->readMonitor(amd::smi::kMonMaxFanSpeed, &value);
if (ret == 0) {
ret = dev->monitor()->readMonitor(amd::smi::kMonFanSpeed, &value2);
}
if (print_attr_label("Current Fan Speed: ")) {
std::cout << value2/static_cast<float>(value) * 100 << "% (" <<
value2 << "/" << value << ")" << std::endl;
}
}
print_val_str(perf_str, "Performance Level: ");
rsmi_ret = rsmi_dev_get_overdrive_level(dindx, &value_u64);
print_val_str(IntegerToString(value_u64, false) + "%", "OverDrive Level: ");
rsmi_frequencies freqs;
rsmi_ret = rsmi_dev_get_gpu_sys_freq(dindx, &freqs);
print_frequencies(&freqs, "Supported GPU clock frequencies:\n");
rsmi_ret = rsmi_dev_get_gpu_mem_freq(dindx, &freqs);
print_frequencies(&freqs, "Supported GPU Memory clock frequencies:\n");
char mon_name[32];
rsmi_ret = rsmi_dev_mon_get_name(dindx, mon_name, 32);
print_val_str(mon_name, "Monitor name: ");
rsmi_ret = rsmi_dev_mon_get_temp(dindx, &value_i64);
print_val_str(IntegerToString(value_i64/1000, false) + "C",
"Temperature: ");
rsmi_ret = rsmi_dev_mon_get_fan_speed(dindx, &value_i64);
if (ret != RSMI_STATUS_SUCCESS) {
std::cout << "not available; rsmi call returned" << rsmi_ret;
dump_ret = 1;
}
rsmi_ret = rsmi_dev_mon_get_max_fan_speed(dindx, &value_u64);
if (ret != RSMI_STATUS_SUCCESS) {
std::cout << "not available; rsmi call returned" << rsmi_ret;
dump_ret = 1;
}
if (print_attr_label("Current Fan Speed: ")) {
std::cout << static_cast<float>(value_i64)/value_u64 * 100 << "% (" <<
value_i64 << "/" << value_u64 << ")" << std::endl;
}
std::cout << "\t=======" << std::endl;
}
std::cout << delim << std::endl;
return dump_ret;
}
#endif
+9 -2
Datei anzeigen
@@ -48,15 +48,22 @@
#include <memory>
#include <vector>
#if ENABLE_SMI
#include "rocm_smi/rocm_smi.h"
#endif
struct RocrTstGlobals {
uint32_t verbosity;
uint32_t monitor_verbosity;
uint32_t num_iterations;
#if ENABLE_SMI
std::vector<std::shared_ptr<amd::smi::Device>> monitor_devices;
#endif
};
uint32_t ProcessCmdline(RocrTstGlobals* test, int arg_cnt, char** arg_list);
int DumpMonitorInfo(void);
#if ENABLE_SMI
void DumpMonitorInfo(const TestBase *test);
#endif
#endif // ROCRTST_SUITES_TEST_COMMON_TEST_COMMON_H_