diff --git a/src/loaders/loader_nvml.cpp b/src/loaders/loader_nvml.cpp index 798e745..7e7cf61 100644 --- a/src/loaders/loader_nvml.cpp +++ b/src/loaders/loader_nvml.cpp @@ -174,6 +174,19 @@ bool libnvml_loader::Load(const std::string& library_name) { return false; } +#if defined(LIBRARY_LOADER_NVML_H_DLOPEN) + nvmlDeviceGetPowerUsage = + reinterpret_castnvmlDeviceGetPowerUsage)>( + dlsym(library_, "nvmlDeviceGetPowerUsage")); +#endif +#if defined(LIBRARY_LOADER_NVML_H_DT_NEEDED) + nvmlDeviceGetPowerUsage = &::nvmlDeviceGetPowerUsage; +#endif + if (!nvmlDeviceGetPowerUsage) { + CleanUp(true); + return false; + } + loaded_ = true; return true; } diff --git a/src/loaders/loader_nvml.h b/src/loaders/loader_nvml.h index c9fb7ba..6cd0aeb 100644 --- a/src/loaders/loader_nvml.h +++ b/src/loaders/loader_nvml.h @@ -36,6 +36,7 @@ class libnvml_loader { decltype(&::nvmlDeviceGetMemoryInfo) nvmlDeviceGetMemoryInfo; decltype(&::nvmlDeviceGetClockInfo) nvmlDeviceGetClockInfo; decltype(&::nvmlErrorString) nvmlErrorString; + decltype(&::nvmlDeviceGetPowerUsage) nvmlDeviceGetPowerUsage; private: void CleanUp(bool unload);