2
0

Use sysfs file to get average power instead of debugfs

Este cometimento está contido em:
Chris Freehill
2018-10-29 17:59:24 -05:00
ascendente 767fa53d8c
cometimento 62ba2f578e
8 ficheiros modificados com 12 adições e 19 eliminações
+2 -3
Ver ficheiro
@@ -851,11 +851,10 @@ rsmi_dev_power_ave_get(uint32_t dv_ind, uint32_t sensor_ind, uint64_t *power) {
if (power == nullptr) {
return RSMI_STATUS_INVALID_ARGS;
}
(void)sensor_ind; // Not used yet
// ++sensor_ind; // power sysfs files have 1-based indices
++sensor_ind; // power sysfs files have 1-based indices
rsmi_status_t ret;
ret = get_power_mon_value(amd::smi::kPowerAveGPUPower, dv_ind, power);
ret = get_dev_mon_value(amd::smi::kMonPowerAve, dv_ind, sensor_ind, power);
return ret;
CATCH
+2 -1
Ver ficheiro
@@ -74,7 +74,7 @@ static const char *kMonNameFName = "name";
static const char *kMonPowerCapName = "power#_cap";
static const char *kMonPowerCapMaxName = "power#_cap_max";
static const char *kMonPowerCapMinName = "power#_cap_min";
static const char *kMonPowerAveName = "power#_average";
static const char *kMonTempMaxName = "temp#_max";
static const char *kMonTempMinName = "temp#_min";
static const char *kMonTempMaxHystName = "temp#_max_hyst";
@@ -99,6 +99,7 @@ static const std::map<MonitorTypes, const char *> kMonitorNameMap = {
{kMonPowerCap, kMonPowerCapName},
{kMonPowerCapMax, kMonPowerCapMaxName},
{kMonPowerCapMin, kMonPowerCapMinName},
{kMonPowerAve, kMonPowerAveName},
{kMonTempMax, kMonTempMaxName},
{kMonTempMin, kMonTempMinName},
{kMonTempMaxHyst, kMonTempMaxHystName},
-6
Ver ficheiro
@@ -66,7 +66,6 @@ static const char *kPowerMonPMName = "amdgpu_pm_info";
// Using this map in case we add other files from dri directory to parse.
static const std::map<PowerMonTypes, const char *> kMonitorNameMap = {
{kPowerMaxGPUPower, kPowerMonPMName},
{kPowerAveGPUPower, kPowerMonPMName},
};
PowerMon::PowerMon(std::string path, RocmSMI_env_vars const *e) :
@@ -87,10 +86,6 @@ static int parse_power_str(std::string s, PowerMonTypes type, uint64_t *val) {
search_str = "(max GPU)";
break;
case kPowerAveGPUPower:
search_str = "(average GPU)";
break;
default:
assert(!"Invalid search Power type requested");
return EINVAL;
@@ -118,7 +113,6 @@ static int parse_power_str(std::string s, PowerMonTypes type, uint64_t *val) {
switch (type) {
case kPowerMaxGPUPower:
case kPowerAveGPUPower:
l_ss >> num_units;
l_ss >> sz;
assert(sz == "W"); // We only expect Watts at this time