Don't use static variable for monitors

Change-Id: I24b5ccfa94b2d722b070a6c6385af9201d21d9c5


[ROCm/rocm_smi_lib commit: 02e4a9c14f]
This commit is contained in:
Chris Freehill
2020-05-14 14:59:49 -05:00
parent 2862d311da
commit d4dda0017c
2 changed files with 7 additions and 9 deletions
@@ -73,8 +73,8 @@ class RocmSMI {
void Initialize(uint64_t flags);
void Cleanup(void);
static std::vector<std::shared_ptr<amd::smi::Device>>&
monitor_devices() {return s_monitor_devices;}
std::vector<std::shared_ptr<amd::smi::Device>>&
monitor_devices() {return monitor_devices_;}
uint32_t DiscoverAmdgpuDevices(void);
uint32_t DiscoverAMDPowerMonitors(bool force_update = false);
@@ -117,7 +117,7 @@ class RocmSMI {
void GetEnvVariables(void);
uint32_t DiscoverAMDMonitors(void);
static std::vector<std::shared_ptr<amd::smi::Device>> s_monitor_devices;
std::vector<std::shared_ptr<amd::smi::Device>> monitor_devices_;
RocmSMI_env_vars env_vars_;
uint64_t init_options_;
+4 -6
View File
@@ -237,8 +237,6 @@ static uint32_t GetMonitorDevices(const std::shared_ptr<amd::smi::Device> &d,
return 0;
}
std::vector<std::shared_ptr<amd::smi::Device>> RocmSMI::s_monitor_devices;
void
RocmSMI::Initialize(uint64_t flags) {
auto i = 0;
@@ -268,7 +266,7 @@ RocmSMI::Initialize(uint64_t flags) {
// IterateSMIDevices will iterate through all the known devices and apply
// the provided call-back to each device found.
ret = IterateSMIDevices(GetMonitorDevices,
reinterpret_cast<void *>(&s_monitor_devices));
reinterpret_cast<void *>(&monitor_devices_));
if (ret != 0) {
throw amd::smi::rsmi_exception(RSMI_INITIALIZATION_ERROR,
@@ -287,8 +285,8 @@ RocmSMI::Initialize(uint64_t flags) {
// 1. construct kfd_node_map_ with gpu_id as key and *Device as value
// 2. for each kfd node, write the corresponding dv_ind
// 3. for each amdgpu device, write the corresponding gpu_id
for (uint32_t dv_ind = 0; dv_ind < s_monitor_devices.size(); ++dv_ind) {
dev = s_monitor_devices[dv_ind];
for (uint32_t dv_ind = 0; dv_ind < monitor_devices_.size(); ++dv_ind) {
dev = monitor_devices_[dv_ind];
uint64_t bdfid = dev->bdfid();
assert(tmp_map.find(bdfid) != tmp_map.end());
if (tmp_map.find(bdfid) == tmp_map.end()) {
@@ -305,7 +303,7 @@ RocmSMI::Initialize(uint64_t flags) {
void
RocmSMI::Cleanup() {
s_monitor_devices.clear();
monitor_devices_.clear();
devices_.clear();
monitors_.clear();