Add handling for missing nvml lib

This commit is contained in:
Wilde Simon
2022-10-19 10:27:06 +02:00
parent f718f82ad1
commit b4e234f307
5 changed files with 50 additions and 25 deletions

1
app/.clang-format Normal file
View File

@@ -0,0 +1 @@
BasedOnStyle: Google

View File

@@ -4,15 +4,29 @@ project(fantasize VERSION 0.1.7)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) 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_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} add_executable(${PROJECT_NAME}
src/main.cxx src/main.cxx
src/sensor/LMSensorsFacade.cxx src/sensor/LMSensorsFacade.cxx
src/sensor/GPUSensorsFacade.cxx
src/sensor/Sensor.cxx src/sensor/Sensor.cxx
src/sensor/NvidiaSensor.cxx
src/sensor/LMSensor.cxx src/sensor/LMSensor.cxx
src/pwm/PWMControl.cxx src/pwm/PWMControl.cxx
src/pwm/PWMControlFacade.cxx src/pwm/PWMControlFacade.cxx
@@ -30,7 +44,8 @@ add_executable(${PROJECT_NAME}
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 20) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 20)
target_include_directories(${PROJECT_NAME} PUBLIC include /opt/cuda) 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(TARGETS ${PROJECT_NAME} DESTINATION usr/local/bin)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/unit/fantasize.service DESTINATION usr/lib/systemd/system) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/unit/fantasize.service DESTINATION usr/lib/systemd/system)

View File

@@ -1,10 +1,9 @@
#include <boost/log/attributes/named_scope.hpp>
#include <iostream>
#include <boost/log/trivial.hpp>
#include <fan/FanCurve.h> #include <fan/FanCurve.h>
#include <boost/log/attributes/named_scope.hpp>
#include <boost/log/trivial.hpp>
#include <sstream>
using namespace std; using namespace std;
FanCurve::FanCurve(std::vector<FanStep> steps, FanCurve::FanCurve(std::vector<FanStep> steps,

View File

@@ -1,8 +1,10 @@
#include <boost/json/object.hpp> #ifdef HAVE_NVML
#include <include/nvml.h>
#include <include/nvml.h>
#include <sensor/NvidiaSensor.h> #include <sensor/NvidiaSensor.h>
#include <boost/json/object.hpp>
using namespace std; using namespace std;
NvidiaSensor::NvidiaSensor() { nvmlInit_v2(); } NvidiaSensor::NvidiaSensor() { nvmlInit_v2(); }
@@ -25,3 +27,5 @@ json NvidiaSensor::toJson() const {
json obj = {"NvidiaSensor", toString()}; json obj = {"NvidiaSensor", toString()};
return obj; return obj;
} }
#endif

View File

@@ -3,20 +3,26 @@
using namespace std; using namespace std;
SensorManager::SensorManager() SensorManager::SensorManager()
: mLMSensorsFacade(make_unique<LMSensorsFacade>()), : mLMSensorsFacade(make_unique<LMSensorsFacade>())
mGPUSensorsFacade(make_unique<GPUSensorsFacade>()) {} , mGPUSensorsFacade(make_unique<GPUSensorsFacade>())
{
}
vector<shared_ptr<Sensor>> SensorManager::TemperatureSensors() { vector<shared_ptr<Sensor>> SensorManager::TemperatureSensors()
{
vector<shared_ptr<Sensor>> tempSensors; vector<shared_ptr<Sensor>> tempSensors;
tempSensors = mLMSensorsFacade->TemperatureSensors(); tempSensors = mLMSensorsFacade->TemperatureSensors();
#ifdef HAVE_NVML
auto gpuSensors = mGPUSensorsFacade->TemperatureSensors(); auto gpuSensors = mGPUSensorsFacade->TemperatureSensors();
tempSensors.insert(tempSensors.end(), gpuSensors.begin(), gpuSensors.end()); tempSensors.insert(tempSensors.end(), gpuSensors.begin(), gpuSensors.end());
#endif
return tempSensors; return tempSensors;
} }
vector<shared_ptr<Sensor>> SensorManager::RPMSensors() { vector<shared_ptr<Sensor>> SensorManager::RPMSensors()
{
return mLMSensorsFacade->RPMSensors(); return mLMSensorsFacade->RPMSensors();
} }