From 05e78f79101311ded3f6fee2ec0c915a3e22b337 Mon Sep 17 00:00:00 2001 From: Chris Freehill Date: Fri, 6 Oct 2017 09:41:10 -0500 Subject: [PATCH] Make rocrtst use new rocm_smi library Change-Id: Id688d6d6d5ff106a23f5b55eaca4e723c39433a3 [ROCm/ROCR-Runtime commit: 75eb3316aac97909134ef6f4046eba231f95e921] --- .../rocrtst/common/rocm_smi/rocm_smi.h | 51 ---- .../common/rocm_smi/rocm_smi_device.cc | 196 --------------- .../rocrtst/common/rocm_smi/rocm_smi_device.h | 92 ------- .../rocrtst/common/rocm_smi/rocm_smi_main.cc | 235 ------------------ .../rocrtst/common/rocm_smi/rocm_smi_main.h | 83 ------- .../common/rocm_smi/rocm_smi_monitor.cc | 136 ---------- .../common/rocm_smi/rocm_smi_monitor.h | 78 ------ .../rocrtst/suites/test_common/CMakeLists.txt | 8 +- .../rocrtst/suites/test_common/main.cc | 2 +- .../rocrtst/suites/test_common/test_base.h | 2 +- .../rocrtst/suites/test_common/test_common.h | 2 +- 11 files changed, 8 insertions(+), 877 deletions(-) delete mode 100755 projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi.h delete mode 100755 projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_device.cc delete mode 100755 projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_device.h delete mode 100755 projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_main.cc delete mode 100755 projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_main.h delete mode 100755 projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_monitor.cc delete mode 100755 projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_monitor.h diff --git a/projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi.h b/projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi.h deleted file mode 100755 index 5ceb452e2c..0000000000 --- a/projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * ============================================================================= - * ROC Runtime Conformance Release License - * ============================================================================= - * The University of Illinois/NCSA - * Open Source License (NCSA) - * - * Copyright (c) 2017, Advanced Micro Devices, Inc. - * All rights reserved. - * - * Developed by: - * - * AMD Research and AMD ROC Software Development - * - * Advanced Micro Devices, Inc. - * - * www.amd.com - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal with the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * - Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimers. - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimers in - * the documentation and/or other materials provided with the distribution. - * - Neither the names of , - * nor the names of its contributors may be used to endorse or promote - * products derived from this Software without specific prior written - * permission. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS WITH THE SOFTWARE. - * - */ -#ifndef ROCRTST_COMMON_ROCM_SMI_ROCM_SMI_H_ -#define ROCRTST_COMMON_ROCM_SMI_ROCM_SMI_H_ -#include "common/rocm_smi/rocm_smi_monitor.h" -#include "common/rocm_smi/rocm_smi_device.h" -#include "common/rocm_smi/rocm_smi_main.h" - -#endif // ROCRTST_COMMON_ROCM_SMI_ROCM_SMI_H_ diff --git a/projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_device.cc b/projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_device.cc deleted file mode 100755 index ece397cc69..0000000000 --- a/projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_device.cc +++ /dev/null @@ -1,196 +0,0 @@ -/* ROC Runtime Conformance Release License - * ============================================================================= - * The University of Illinois/NCSA - * Open Source License (NCSA) - * - * Copyright (c) 2017, Advanced Micro Devices, Inc. - * All rights reserved. - * - * Developed by: - * - * AMD Research and AMD ROC Software Development - * - * Advanced Micro Devices, Inc. - * - * www.amd.com - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal with the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * - Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimers. - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimers in - * the documentation and/or other materials provided with the distribution. - * - Neither the names of , - * nor the names of its contributors may be used to endorse or promote - * products derived from this Software without specific prior written - * permission. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS WITH THE SOFTWARE. - * - */ - -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include "common/rocm_smi/rocm_smi_main.h" -#include "common/rocm_smi/rocm_smi_device.h" - -namespace rocrtst { -namespace smi { - -static const char *kDevPerfLevelFName = "power_dpm_force_performance_level"; -static const char *kDevDevIDFName = "device"; -static const char *kDevOverDriveLevelFName = "pp_sclk_od"; -static const char *kDevGPUSClkFName = "pp_dpm_sclk"; -static const char *kDevGPUMClkFName = "pp_dpm_mclk"; - -static const std::map kDevAttribNameMap = { - {kDevPerfLevel, kDevPerfLevelFName}, - {kDevOverDriveLevel, kDevOverDriveLevelFName}, - {kDevDevID, kDevDevIDFName}, - {kDevGPUMClk, kDevGPUMClkFName}, - {kDevGPUSClk, kDevGPUSClkFName}, -}; - -static bool isRegularFile(std::string fname) { - struct stat file_stat; - stat(fname.c_str(), &file_stat); - return S_ISREG(file_stat.st_mode); -} - -Device::Device(std::string p) : path_(p) { - monitor_ = nullptr; -} - -Device:: ~Device() { -} - -// TODO(cfreehil): cache values that are constant -int Device::readDevInfoStr(DevInfoTypes type, std::string *retStr) { - auto tempPath = path_; - - assert(retStr != nullptr); - - tempPath += "/device/"; - tempPath += kDevAttribNameMap.at(type); - - std::ifstream fs; - fs.open(tempPath); - - if (!fs.is_open() || !isRegularFile(tempPath)) { - return -1; - } - fs >> *retStr; - fs.close(); - - return 0; -} - -int Device::readDevInfoMultiLineStr(DevInfoTypes type, - std::vector *retVec) { - auto tempPath = path_; - std::string line; - - assert(retVec != nullptr); - - tempPath += "/device/"; - tempPath += kDevAttribNameMap.at(type); - - std::ifstream fs(tempPath); - std::stringstream buffer; - - - if (!isRegularFile(tempPath)) { - return -1; - } - - while (std::getline(fs, line)) { - retVec->push_back(line); - } - return 0; -} - -int Device::readDevInfo(DevInfoTypes type, uint32_t *val) { - assert(val != nullptr); - - std::string tempStr; - - switch (type) { - case kDevDevID: - if (readDevInfoStr(type, &tempStr)) { - return -1; - } - *val = std::stoi(tempStr, 0, 16); - break; - - case kDevOverDriveLevel: - if (readDevInfoStr(type, &tempStr)) { - return -1; - } - *val = std::stoi(tempStr, 0); - break; - - default: - return -1; - } - return 0; -} - -int Device::readDevInfo(DevInfoTypes type, std::vector *val) { - assert(val != nullptr); - - switch (type) { - case kDevGPUMClk: - case kDevGPUSClk: - if (readDevInfoMultiLineStr(type, val)) { - return -1; - } - break; - - default: - return -1; - } - - return 0; -} - -int Device::readDevInfo(DevInfoTypes type, std::string *val) { - assert(val != nullptr); - - switch (type) { - case kDevPerfLevel: - case kDevOverDriveLevel: - case kDevDevID: - if (readDevInfoStr(type, val)) { - return -1; - } - break; - - default: - return -1; - } - return 0; -} - -} // namespace smi -} // namespace rocrtst diff --git a/projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_device.h b/projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_device.h deleted file mode 100755 index 1c46a3f8fe..0000000000 --- a/projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_device.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - * ============================================================================= - * ROC Runtime Conformance Release License - * ============================================================================= - * The University of Illinois/NCSA - * Open Source License (NCSA) - * - * Copyright (c) 2017, Advanced Micro Devices, Inc. - * All rights reserved. - * - * Developed by: - * - * AMD Research and AMD ROC Software Development - * - * Advanced Micro Devices, Inc. - * - * www.amd.com - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal with the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * - Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimers. - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimers in - * the documentation and/or other materials provided with the distribution. - * - Neither the names of , - * nor the names of its contributors may be used to endorse or promote - * products derived from this Software without specific prior written - * permission. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS WITH THE SOFTWARE. - * - */ -#ifndef ROCRTST_COMMON_ROCM_SMI_ROCM_SMI_DEVICE_H_ -#define ROCRTST_COMMON_ROCM_SMI_ROCM_SMI_DEVICE_H_ -#include -#include -#include -#include -#include - -#include "common/rocm_smi/rocm_smi_monitor.h" - -namespace rocrtst { -namespace smi { - -enum DevInfoTypes { - kDevPerfLevel, - kDevOverDriveLevel, - kDevDevID, - kDevGPUMClk, - kDevGPUSClk -}; - -class Device { - public: - explicit Device(std::string path); - ~Device(void); - - void set_monitor(std::shared_ptr m) {monitor_ = m;} - std::string path(void) const {return path_;} - const std::shared_ptr& monitor() {return monitor_;} - - int readDevInfo(DevInfoTypes type, uint32_t *val); - int readDevInfo(DevInfoTypes type, std::string *val); - int readDevInfo(DevInfoTypes type, std::vector *retVec); - - - private: - std::shared_ptr monitor_; - std::string path_; - - int readDevInfoStr(DevInfoTypes type, std::string *retStr); - int readDevInfoMultiLineStr(DevInfoTypes type, - std::vector *retVec); -}; - -} // namespace smi -} // namespace rocrtst - -#endif // ROCRTST_COMMON_ROCM_SMI_ROCM_SMI_DEVICE_H_ diff --git a/projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_main.cc b/projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_main.cc deleted file mode 100755 index 11bf93af7a..0000000000 --- a/projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_main.cc +++ /dev/null @@ -1,235 +0,0 @@ -/* - * ============================================================================= - * ROC Runtime Conformance Release License - * ============================================================================= - * The University of Illinois/NCSA - * Open Source License (NCSA) - * - * Copyright (c) 2017, Advanced Micro Devices, Inc. - * All rights reserved. - * - * Developed by: - * - * AMD Research and AMD ROC Software Development - * - * Advanced Micro Devices, Inc. - * - * www.amd.com - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal with the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * - Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimers. - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimers in - * the documentation and/or other materials provided with the distribution. - * - Neither the names of , - * nor the names of its contributors may be used to endorse or promote - * products derived from this Software without specific prior written - * permission. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS WITH THE SOFTWARE. - * - */ -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "common/rocm_smi/rocm_smi.h" -#include "common/rocm_smi/rocm_smi_main.h" - -static const char *kPathDRMRoot = "/sys/class/drm"; -static const char *kPathHWMonRoot = "/sys/class/hwmon"; -static const char *kDeviceNamePrefix = "card"; - -static const char *kAMDMonitorTypes[] = {"radeon", "amdgpu", ""}; - -namespace rocrtst { -namespace smi { - -static bool FileExists(char const *filename) { - struct stat buf; - return (stat(filename, &buf) == 0); -} - -// Return 0 if same file, 1 if not, and -1 for error -static int SameFile(const std::string fileA, const std::string fileB) { - struct stat aStat; - struct stat bStat; - int ret; - - ret = stat(fileA.c_str(), &aStat); - if (ret) { - return -1; - } - - ret = stat(fileB.c_str(), &bStat); - if (ret) { - return -1; - } - - if (aStat.st_dev != bStat.st_dev) { - return 1; - } - - if (aStat.st_ino != bStat.st_ino) { - return 1; - } - - return 0; -} - -static int SameDevice(const std::string fileA, const std::string fileB) { - return SameFile(fileA + "/device", fileB + "/device"); -} - -void ShowAllTemperatures(); - -RocmSMI::RocmSMI() { - auto i = 0; - - while (std::string(kAMDMonitorTypes[i]) != "") { - amd_monitor_types_.insert(kAMDMonitorTypes[i]); - ++i; - } -} - -RocmSMI::~RocmSMI() { - devices_.clear(); - monitors_.clear(); -} - -void -RocmSMI::AddToDeviceList(std::string dev_name) { - auto ret = 0; - - auto dev_path = std::string(kPathDRMRoot); - dev_path += "/"; - dev_path += dev_name; - - auto dev = std::shared_ptr(new Device(dev_path)); - - auto m = monitors_.begin(); - - while (m != monitors_.end()) { - ret = SameDevice(dev->path(), (*m)->path()); - - if (ret == 0) { - dev->set_monitor(*m); - - m = monitors_.erase(m); - } else { - assert(ret == 1); - ++m; - } - } - - devices_.push_back(dev); - - return; -} - -uint32_t RocmSMI::DiscoverDevices(void) { - auto ret = 0; - - ret = DiscoverAMDMonitors(); - - if (ret) { - return ret; - } - - auto drm_dir = opendir(kPathDRMRoot); - auto dentry = readdir(drm_dir); - - while (dentry != nullptr) { - if (memcmp(dentry->d_name, kDeviceNamePrefix, strlen(kDeviceNamePrefix)) - == 0) { - AddToDeviceList(dentry->d_name); - } - dentry = readdir(drm_dir); - } - - if (closedir(drm_dir)) { - return 1; - } - return 0; -} - -uint32_t RocmSMI::DiscoverAMDMonitors(void) { - auto mon_dir = opendir(kPathHWMonRoot); - - auto dentry = readdir(mon_dir); - - std::string mon_name; - std::string tmp; - - while (dentry != nullptr) { - if (dentry->d_name[0] == '.') { - dentry = readdir(mon_dir); - continue; - } - - mon_name = kPathHWMonRoot; - mon_name += "/"; - mon_name += dentry->d_name; - tmp = mon_name + "/name"; - - if (FileExists(tmp.c_str())) { - std::ifstream fs; - fs.open(tmp); - - if (!fs.is_open()) { - return 1; - } - std::string mon_type; - fs >> mon_type; - fs.close(); - - if (amd_monitor_types_.find(mon_type) != amd_monitor_types_.end()) { - monitors_.push_back(std::shared_ptr(new Monitor(mon_name))); - } - } - dentry = readdir(mon_dir); - } - - if (closedir(mon_dir)) { - return 1; - } - return 0; -} - -void RocmSMI::IterateSMIDevices( - std::function&, void *)> func, void *p) { - auto d = devices_.begin(); - - while (d != devices_.end()) { - if (func(*d, p)) { - return; - } - ++d; - } -} - -} // namespace smi -} // namespace rocrtst diff --git a/projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_main.h b/projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_main.h deleted file mode 100755 index 697e96824b..0000000000 --- a/projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_main.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * ============================================================================= - * ROC Runtime Conformance Release License - * ============================================================================= - * The University of Illinois/NCSA - * Open Source License (NCSA) - * - * Copyright (c) 2017, Advanced Micro Devices, Inc. - * All rights reserved. - * - * Developed by: - * - * AMD Research and AMD ROC Software Development - * - * Advanced Micro Devices, Inc. - * - * www.amd.com - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal with the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * - Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimers. - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimers in - * the documentation and/or other materials provided with the distribution. - * - Neither the names of , - * nor the names of its contributors may be used to endorse or promote - * products derived from this Software without specific prior written - * permission. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS WITH THE SOFTWARE. - * - */ -#ifndef ROCRTST_COMMON_ROCM_SMI_ROCM_SMI_MAIN_H_ -#define ROCRTST_COMMON_ROCM_SMI_ROCM_SMI_MAIN_H_ - -#include -#include -#include -#include -#include - -#include "common/rocm_smi/rocm_smi_device.h" -#include "common/rocm_smi/rocm_smi_monitor.h" - -namespace rocrtst { -namespace smi { - -class RocmSMI { - public: - RocmSMI(void); - ~RocmSMI(void); - - uint32_t DiscoverDevices(void); - - // Will execute "func" for every Device object known about, or until func - // returns true; - void IterateSMIDevices( - std::function&, void *)> func, void *); - private: - std::vector> devices_; - std::vector> monitors_; - std::set amd_monitor_types_; - void AddToDeviceList(std::string dev_name); - - uint32_t DiscoverAMDMonitors(void); -}; - -} // namespace smi -} // namespace rocrtst - -#endif // ROCRTST_COMMON_ROCM_SMI_ROCM_SMI_MAIN_H_ diff --git a/projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_monitor.cc b/projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_monitor.cc deleted file mode 100755 index 67b15dc9ae..0000000000 --- a/projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_monitor.cc +++ /dev/null @@ -1,136 +0,0 @@ -/* - * ============================================================================= - * ROC Runtime Conformance Release License - * ============================================================================= - * The University of Illinois/NCSA - * Open Source License (NCSA) - * - * Copyright (c) 2017, Advanced Micro Devices, Inc. - * All rights reserved. - * - * Developed by: - * - * AMD Research and AMD ROC Software Development - * - * Advanced Micro Devices, Inc. - * - * www.amd.com - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal with the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * - Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimers. - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimers in - * the documentation and/or other materials provided with the distribution. - * - Neither the names of , - * nor the names of its contributors may be used to endorse or promote - * products derived from this Software without specific prior written - * permission. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS WITH THE SOFTWARE. - * - */ - -#include - -#include -#include -#include -#include -#include - -#include "common/rocm_smi/rocm_smi_main.h" -#include "common/rocm_smi/rocm_smi_monitor.h" - -namespace rocrtst { -namespace smi { - -struct MonitorNameEntry { - MonitorTypes type; - const char *name; -}; - - -static const char *kMonTempFName = "temp1_input"; -static const char *kMonFanSpeedFName = "pwm1"; -static const char *kMonMaxFanSpeedFName = "pwm1_max"; -static const char *kMonNameFName = "name"; - -static const std::map kMonitorNameMap = { - {kMonName, kMonNameFName}, - {kMonTemp, kMonTempFName}, - {kMonFanSpeed, kMonFanSpeedFName}, - {kMonMaxFanSpeed, kMonMaxFanSpeedFName} -}; - -Monitor::Monitor(std::string path) : path_(path) { -} -Monitor::~Monitor(void) { -} - -int Monitor::readMonitorStr(MonitorTypes type, std::string *retStr) { - auto tempPath = path_; - - assert(retStr != nullptr); - - tempPath += "/"; - tempPath += kMonitorNameMap.at(type); - - std::ifstream fs; - fs.open(tempPath); - - if (!fs.is_open()) { - return -1; - } - fs >> *retStr; - fs.close(); - - return 0; -} - -int Monitor::readMonitor(MonitorTypes type, uint32_t *val) { - assert(val != nullptr); - - std::string tempStr; - - switch (type) { - case kMonTemp: // Temperature in millidegrees - case kMonFanSpeed: - case kMonMaxFanSpeed: - if (readMonitorStr(type, &tempStr)) { - return -1; - } - *val = std::stoi(tempStr); - return 0; - - default: - return -1; - } -} - -// This string version should work for all valid monitor types -int Monitor::readMonitor(MonitorTypes type, std::string *val) { - assert(val != nullptr); - - if (readMonitorStr(type, val)) { - return -1; - } - - return 0; -} - - -} // namespace smi -} // namespace rocrtst diff --git a/projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_monitor.h b/projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_monitor.h deleted file mode 100755 index 42f43283bf..0000000000 --- a/projects/rocr-runtime/rocrtst/common/rocm_smi/rocm_smi_monitor.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * ============================================================================= - * ROC Runtime Conformance Release License - * ============================================================================= - * The University of Illinois/NCSA - * Open Source License (NCSA) - * - * Copyright (c) 2017, Advanced Micro Devices, Inc. - * All rights reserved. - * - * Developed by: - * - * AMD Research and AMD ROC Software Development - * - * Advanced Micro Devices, Inc. - * - * www.amd.com - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal with the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * - Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimers. - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimers in - * the documentation and/or other materials provided with the distribution. - * - Neither the names of , - * nor the names of its contributors may be used to endorse or promote - * products derived from this Software without specific prior written - * permission. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS WITH THE SOFTWARE. - * - */ -#ifndef ROCRTST_COMMON_ROCM_SMI_ROCM_SMI_MONITOR_H_ -#define ROCRTST_COMMON_ROCM_SMI_ROCM_SMI_MONITOR_H_ - -#include -#include - -namespace rocrtst { -namespace smi { - -enum MonitorTypes { - kMonName, - kMonTemp, // Temperature in millidegrees - kMonFanSpeed, - kMonMaxFanSpeed, -}; - - -class Monitor { - public: - explicit Monitor(std::string path); - ~Monitor(void); - const std::string path(void) const {return path_;} - int readMonitor(MonitorTypes type, uint32_t *val); - int readMonitor(MonitorTypes type, std::string *val); - - private: - std::string path_; - int readMonitorStr(MonitorTypes type, std::string *retStr); -}; - -} // namespace smi -} // namespace rocrtst - -#endif // ROCRTST_COMMON_ROCM_SMI_ROCM_SMI_MONITOR_H_ diff --git a/projects/rocr-runtime/rocrtst/suites/test_common/CMakeLists.txt b/projects/rocr-runtime/rocrtst/suites/test_common/CMakeLists.txt index 2a7daf0d99..ef5e895b1a 100755 --- a/projects/rocr-runtime/rocrtst/suites/test_common/CMakeLists.txt +++ b/projects/rocr-runtime/rocrtst/suites/test_common/CMakeLists.txt @@ -54,6 +54,7 @@ endif() set(ROCR_INC_DIR ${ROCM_DIR}/include) set(ROCR_LIB_DIR ${ROCM_DIR}/lib) +set(ROCM_SMI_INC_DIR ${ROCM_DIR}/include) # # Determine ROCR Header files are present # @@ -216,7 +217,6 @@ MESSAGE("ROCRTST_LIBS SET STEP:Done") # # Other source directories aux_source_directory(${ROCRTST_ROOT}/common common_srcs) -aux_source_directory(${ROCRTST_ROOT}/common/rocm_smi common_smi_srcs) # # Specify the directory containing various libraries of ROCR @@ -228,6 +228,7 @@ LINK_DIRECTORIES(${ROCR_LIB_DIR}) # Extend the list of libraries to be used for linking ROC Perf Apps # set(ROCRTST_LIBS ${ROCRTST_LIBS} hsa-runtime${ONLY64STR}) +set(ROCRTST_LIBS ${ROCRTST_LIBS} rocm_smi${ONLY64STR}) # Set Name for rocrtst @@ -246,6 +247,7 @@ aux_source_directory(${ROCRTST_ROOT}/suites/test_common testCommonSources) include_directories(${ROCR_INC_DIR}) include_directories(${ROCRTST_ROOT}) include_directories(${ROCRTST_ROOT}/gtest/include) +include_directories(${ROCM_SMI_INC_DIR}) # Use this function to build any samples that have kernels to be built function(build_kernel S_NAME TARG_DEV) @@ -308,8 +310,8 @@ set(CL_FILE_LIST "${KERNELS_DIR}/dispatch_time_kernels.cl") build_sample_for_devices("dispatch_time") # Build rules -add_executable(${ROCRTST} ${performanceSources} ${functionalSources} ${common_srcs} - ${common_smi_srcs} ${testCommonSources}) +add_executable(${ROCRTST} ${performanceSources} ${functionalSources} + ${common_srcs} ${testCommonSources}) target_link_libraries(${ROCRTST} ${ROCRTST_LIBS} c stdc++ dl pthread rt numa hwloc) diff --git a/projects/rocr-runtime/rocrtst/suites/test_common/main.cc b/projects/rocr-runtime/rocrtst/suites/test_common/main.cc index 8b4cbdeab6..c1a6ed381e 100755 --- a/projects/rocr-runtime/rocrtst/suites/test_common/main.cc +++ b/projects/rocr-runtime/rocrtst/suites/test_common/main.cc @@ -57,7 +57,7 @@ #include "suites/test_common/main.h" #include "suites/test_common/test_common.h" -#include "common/rocm_smi/rocm_smi.h" +#include "rocm_smi/rocm_smi.h" static RocrTstGlobals *sRocrtstGlvalues = nullptr; diff --git a/projects/rocr-runtime/rocrtst/suites/test_common/test_base.h b/projects/rocr-runtime/rocrtst/suites/test_common/test_base.h index 269d8d6a37..fab7359e15 100755 --- a/projects/rocr-runtime/rocrtst/suites/test_common/test_base.h +++ b/projects/rocr-runtime/rocrtst/suites/test_common/test_base.h @@ -50,7 +50,7 @@ #include #include "common/base_rocr.h" -#include "common/rocm_smi/rocm_smi.h" +#include "rocm_smi/rocm_smi.h" class TestBase : public rocrtst::BaseRocR { public: diff --git a/projects/rocr-runtime/rocrtst/suites/test_common/test_common.h b/projects/rocr-runtime/rocrtst/suites/test_common/test_common.h index bb825ed400..7c743a6f18 100755 --- a/projects/rocr-runtime/rocrtst/suites/test_common/test_common.h +++ b/projects/rocr-runtime/rocrtst/suites/test_common/test_common.h @@ -49,7 +49,7 @@ #include #include -#include "common/rocm_smi/rocm_smi.h" +#include "rocm_smi/rocm_smi.h" struct RocrTstGlobals { uint32_t verbosity;