diff --git a/include/rocm_smi/rocm_smi_counters.h b/include/rocm_smi/rocm_smi_counters.h index 3d6addb2e2..091c89d90d 100755 --- a/include/rocm_smi/rocm_smi_counters.h +++ b/include/rocm_smi/rocm_smi_counters.h @@ -110,7 +110,7 @@ class Event { uint32_t dev_ind_; int32_t fd_; perf_event_attr attr_; - + uint64_t prev_cntr_val_; int32_t get_event_file_info(void); int32_t get_event_type(uint32_t *ev_type); }; diff --git a/src/rocm_smi_counters.cc b/src/rocm_smi_counters.cc index cb58cc3d32..9f82798183 100755 --- a/src/rocm_smi_counters.cc +++ b/src/rocm_smi_counters.cc @@ -164,7 +164,7 @@ GetSupportedEventGroups(uint32_t dev_num, dev_evt_grp_set_t *supported_grps) { } // /sys/bus/event_source/devices/_/type Event::Event(rsmi_event_type_t event, uint32_t dev_ind) : - event_type_(event) { + event_type_(event), prev_cntr_val_(0) { fd_ = -1; rsmi_event_group_t grp = EvtGrpFromEvtID(event); assert(grp != RSMI_EVNT_GRP_INVALID); // This should have failed before now @@ -425,7 +425,8 @@ amd::smi::evt::Event::getValue(rsmi_counter_value_t *val) { return EIO; } - val->value = pvalue.value; + val->value = pvalue.value - prev_cntr_val_; + prev_cntr_val_ = pvalue.value; val->time_enabled = pvalue.enabled_time; val->time_running = pvalue.run_time;