diff --git a/projects/rocm-smi-lib/src/rocm_smi.cc b/projects/rocm-smi-lib/src/rocm_smi.cc index 31902531f8..7963b007f0 100755 --- a/projects/rocm-smi-lib/src/rocm_smi.cc +++ b/projects/rocm-smi-lib/src/rocm_smi.cc @@ -435,6 +435,7 @@ rsmi_init(uint64_t flags) { smi.Initialize(flags); } catch(...) { smi.Cleanup(); + std::cerr << "rsmi_init() failed" << std::endl; throw amd::smi::rsmi_exception(RSMI_STATUS_INIT_ERROR, __FUNCTION__); } } diff --git a/projects/rocm-smi-lib/src/rocm_smi_io_link.cc b/projects/rocm-smi-lib/src/rocm_smi_io_link.cc index ddcd0d87ec..6908e4149e 100755 --- a/projects/rocm-smi-lib/src/rocm_smi_io_link.cc +++ b/projects/rocm-smi-lib/src/rocm_smi_io_link.cc @@ -177,7 +177,14 @@ int DiscoverIOLinks(std::map, links->clear(); auto kfd_node_dir = opendir(kKFDNodesPathRoot); - assert(kfd_node_dir != nullptr); + + if (kfd_node_dir == nullptr) { + std::string err_msg = "Failed to open KFD nodes directory "; + err_msg += kKFDNodesPathRoot; + err_msg += "."; + perror(err_msg.c_str()); + return 1; + } auto dentry_kfd = readdir(kfd_node_dir); while (dentry_kfd != nullptr) { @@ -222,6 +229,10 @@ int DiscoverIOLinks(std::map, } if (closedir(io_link_dir)) { + std::string err_msg = "Failed to close KFD nodes directory "; + err_msg += kKFDNodesPathRoot; + err_msg += "."; + perror(err_msg.c_str()); return 1; } diff --git a/projects/rocm-smi-lib/src/rocm_smi_kfd.cc b/projects/rocm-smi-lib/src/rocm_smi_kfd.cc index 063917227b..72367088fe 100755 --- a/projects/rocm-smi-lib/src/rocm_smi_kfd.cc +++ b/projects/rocm-smi-lib/src/rocm_smi_kfd.cc @@ -559,12 +559,16 @@ int DiscoverKFDNodes(std::map> *nodes) { node->get_property_value(kKFDNodePropLOCATION_IDStr, &kfd_gpu_node_bus_fn); if (ret != 0) { + std:: cerr << "Failed to open properties file for kfd node " << + node->node_index() << "." << std::endl; closedir(kfd_node_dir); return ret; } ret = node->get_property_value(kKFDNodePropDOMAINStr, &kfd_gpu_node_domain); if (ret != 0) { + std::cerr << "Failed to get \"domain\" properity from properties " + "files for kfd node " << node->node_index() << "." << std::endl; closedir(kfd_node_dir); return ret; } @@ -577,6 +581,10 @@ int DiscoverKFDNodes(std::map> *nodes) { } if (closedir(kfd_node_dir)) { + std::string err_str = "Failed to close KFD node directory "; + err_str += kKFDNodesPathRoot; + err_str += "."; + perror(err_str.c_str()); return 1; } return 0; diff --git a/projects/rocm-smi-lib/src/rocm_smi_main.cc b/projects/rocm-smi-lib/src/rocm_smi_main.cc index 06ddd6c73f..9aa4ced9f5 100755 --- a/projects/rocm-smi-lib/src/rocm_smi_main.cc +++ b/projects/rocm-smi-lib/src/rocm_smi_main.cc @@ -56,6 +56,7 @@ #include #include #include +#include #include "rocm_smi/rocm_smi.h" #include "rocm_smi/rocm_smi_device.h" @@ -230,6 +231,7 @@ static uint32_t GetMonitorDevices(const std::shared_ptr &d, if (d->monitor() != nullptr) { // Calculate BDFID and set for this device if (ConstructBDFID(d->path(), &bdfid) != 0) { + std::cerr << "Failed to construct BDFID." << std::endl; return 1; } d->set_bdfid(bdfid); @@ -458,6 +460,7 @@ static bool isAMDGPU(std::string dev_path) { uint32_t RocmSMI::DiscoverAmdgpuDevices(void) { uint32_t ret = 0; + std::string err_msg; // If this gets called more than once, clear previous findings. devices_.clear(); @@ -471,6 +474,10 @@ uint32_t RocmSMI::DiscoverAmdgpuDevices(void) { auto drm_dir = opendir(kPathDRMRoot); if (drm_dir == nullptr) { + err_msg = "Failed to open drm root directory "; + err_msg += kPathDRMRoot; + err_msg += "."; + perror(err_msg.c_str()); return 1; } @@ -492,6 +499,10 @@ uint32_t RocmSMI::DiscoverAmdgpuDevices(void) { } if (closedir(drm_dir)) { + err_msg = "Failed to close drm root directory "; + err_msg += kPathDRMRoot; + err_msg += "."; + perror(err_msg.c_str()); return 1; } return 0; @@ -504,6 +515,7 @@ uint32_t RocmSMI::DiscoverAMDMonitors(void) { std::string mon_name; std::string tmp; + std::string err_msg; while (dentry != nullptr) { if (dentry->d_name[0] == '.') { @@ -521,7 +533,11 @@ uint32_t RocmSMI::DiscoverAMDMonitors(void) { fs.open(tmp); if (!fs.is_open()) { - return 1; + err_msg = "Failed to open monitor file "; + err_msg += tmp; + err_msg += "."; + perror(err_msg.c_str()); + return 1; } std::string mon_type; fs >> mon_type; @@ -539,6 +555,10 @@ uint32_t RocmSMI::DiscoverAMDMonitors(void) { } if (closedir(mon_dir)) { + err_msg = "Failed to close monitor directory "; + err_msg += kPathHWMonRoot; + err_msg += "."; + perror(err_msg.c_str()); return 1; } return 0;