Use sysfs file to get average power instead of debugfs
Este cometimento está contido em:
+2
-3
@@ -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
|
||||
|
||||
@@ -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},
|
||||
|
||||
@@ -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
|
||||
|
||||
Criar uma nova questão referindo esta
Bloquear um utilizador