From b4e234f30792e1bb584e2162e89eb149610ad331 Mon Sep 17 00:00:00 2001 From: Wilde Simon Date: Wed, 19 Oct 2022 10:27:06 +0200 Subject: [PATCH] Add handling for missing nvml lib --- app/.clang-format | 1 + app/CMakeLists.txt | 23 +++++++++++++++++---- app/src/fan/FanCurve.cxx | 9 ++++----- app/src/sensor/NvidiaSensor.cxx | 8 ++++++-- app/src/sensor/SensorManager.cxx | 34 +++++++++++++++++++------------- 5 files changed, 50 insertions(+), 25 deletions(-) create mode 100644 app/.clang-format diff --git a/app/.clang-format b/app/.clang-format new file mode 100644 index 0000000..f6cb8ad --- /dev/null +++ b/app/.clang-format @@ -0,0 +1 @@ +BasedOnStyle: Google diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index f3337e6..52f6fc7 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -4,15 +4,29 @@ project(fantasize VERSION 0.1.7) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -find_package(nlohmann_json 3.11.2 REQUIRED) +find_package(nlohmann_json 3.7 REQUIRED) find_package(Boost 1.80 COMPONENTS program_options log log_setup date_time REQUIRED) +find_library(NVML_LIB nvidia-ml) + +set(ADDITIONAL_LIBS) + +if (NVML_LIB) + set(HAVE_NVML) + + add_library(nvidia-sensor-lib STATIC + src/sensor/NvidiaSensor.cxx + src/sensor/GPUSensorsFacade.cxx) + + target_link_libraries(nvidia-sensor-lib PUBLIC NVML_LIB) + + list(APPEND ADDITIONAL_LIBS nvidia-sensor-lib) +endif() + add_executable(${PROJECT_NAME} src/main.cxx src/sensor/LMSensorsFacade.cxx - src/sensor/GPUSensorsFacade.cxx src/sensor/Sensor.cxx - src/sensor/NvidiaSensor.cxx src/sensor/LMSensor.cxx src/pwm/PWMControl.cxx src/pwm/PWMControlFacade.cxx @@ -30,7 +44,8 @@ add_executable(${PROJECT_NAME} set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 20) target_include_directories(${PROJECT_NAME} PUBLIC include /opt/cuda) -target_link_libraries(${PROJECT_NAME} PUBLIC sensors nvidia-ml nlohmann_json::nlohmann_json tbb ${Boost_LIBRARIES}) + +target_link_libraries(${PROJECT_NAME} PUBLIC sensors nlohmann_json::nlohmann_json tbb ${Boost_LIBRARIES} ${ADDITIONAL_LIBS}) install(TARGETS ${PROJECT_NAME} DESTINATION usr/local/bin) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/unit/fantasize.service DESTINATION usr/lib/systemd/system) diff --git a/app/src/fan/FanCurve.cxx b/app/src/fan/FanCurve.cxx index e7067f3..5d735d9 100644 --- a/app/src/fan/FanCurve.cxx +++ b/app/src/fan/FanCurve.cxx @@ -1,10 +1,9 @@ -#include -#include - -#include - #include +#include +#include +#include + using namespace std; FanCurve::FanCurve(std::vector steps, diff --git a/app/src/sensor/NvidiaSensor.cxx b/app/src/sensor/NvidiaSensor.cxx index 9709ce0..ab345d2 100644 --- a/app/src/sensor/NvidiaSensor.cxx +++ b/app/src/sensor/NvidiaSensor.cxx @@ -1,8 +1,10 @@ -#include -#include +#ifdef HAVE_NVML +#include #include +#include + using namespace std; NvidiaSensor::NvidiaSensor() { nvmlInit_v2(); } @@ -25,3 +27,5 @@ json NvidiaSensor::toJson() const { json obj = {"NvidiaSensor", toString()}; return obj; } + +#endif diff --git a/app/src/sensor/SensorManager.cxx b/app/src/sensor/SensorManager.cxx index a707291..7266a93 100644 --- a/app/src/sensor/SensorManager.cxx +++ b/app/src/sensor/SensorManager.cxx @@ -3,20 +3,26 @@ using namespace std; SensorManager::SensorManager() - : mLMSensorsFacade(make_unique()), - mGPUSensorsFacade(make_unique()) {} - -vector> SensorManager::TemperatureSensors() { - vector> tempSensors; - - tempSensors = mLMSensorsFacade->TemperatureSensors(); - - auto gpuSensors = mGPUSensorsFacade->TemperatureSensors(); - tempSensors.insert(tempSensors.end(), gpuSensors.begin(), gpuSensors.end()); - - return tempSensors; + : mLMSensorsFacade(make_unique()) + , mGPUSensorsFacade(make_unique()) +{ } -vector> SensorManager::RPMSensors() { - return mLMSensorsFacade->RPMSensors(); +vector> SensorManager::TemperatureSensors() +{ + vector> tempSensors; + + tempSensors = mLMSensorsFacade->TemperatureSensors(); + +#ifdef HAVE_NVML + auto gpuSensors = mGPUSensorsFacade->TemperatureSensors(); + tempSensors.insert(tempSensors.end(), gpuSensors.begin(), gpuSensors.end()); +#endif + + return tempSensors; +} + +vector> SensorManager::RPMSensors() +{ + return mLMSensorsFacade->RPMSensors(); }