0

0

C++如何读取系统GPU利用率?(NVML或ADL SDK调用)

尼克

尼克

发布时间:2026-02-23 15:42:53

|

935人浏览过

|

来源于php中文网

原创

windows下用nvml读gpu利用率需安装驱动并手动获取nvidia-ml.h和nvidia-ml.lib,链接并加载nvidia-ml.dll;util.gpu为0–100整数百分比,但仅为瞬时采样值,且多gpu需避免硬编码索引,务必检查初始化返回值并调用nvmlshutdown。

c++如何读取系统gpu利用率?(nvml或adl sdk调用)

Windows下用NVML读GPU利用率,得先装驱动和头文件

NVIDIA官方只提供动态库nvidia-ml.dll,不自带头文件。你直接#include 会报错——因为这文件不在标准路径里。必须手动从CUDA Toolkit或NVIDIA Management Library SDK里把nvidia-ml.hlibnvidia-ml.so(Linux)或nvidia-ml.lib(Windows)拷出来。

常见错误现象:LNK2019: unresolved external symbol nvmlInit_v2,本质是没链接nvidia-ml.lib,或者运行时找不到nvidia-ml.dll(它通常在C:\Windows\System32,但旧驱动可能没放进去)。

  • 确保显卡驱动版本 ≥ 450.80.02(NVML v11起才稳定支持利用率查询)
  • Windows上用LoadLibrary(L"nvidia-ml.dll")手动加载比静态链接更容错,避免启动失败
  • 初始化后务必检查nvmlInit_v2()返回值,不是NVML_SUCCESS就别往下走

nvmlDeviceGetUtilizationRates返回的数值不是百分比?

它返回的是nvmlUtilization_t结构体,其中gpu字段是0–100的整数,单位就是%——但注意:这是瞬时采样值,不是平均值,且采样间隔由驱动控制(通常约1秒),不能靠反复调用来“平滑”。

容易踩的坑:

立即学习C++免费学习笔记(深入)”;

  • util->memory误当GPU使用率(它是显存带宽利用率,和计算单元负载无关)
  • 在多GPU机器上调nvmlDeviceGetHandleByIndex(0)硬编码索引,结果读到的是集成显卡或被禁用的卡
  • 忘记调用nvmlShutdown(),导致后续进程初始化失败(NVML不允许多次init)

示例关键片段:

nvmlReturn_t ret = nvmlDeviceGetUtilizationRates(device, &util);
if (ret == NVML_SUCCESS) {
    printf("GPU utilization: %u%%\n", util.gpu); // 注意:util.gpu是uint32_t,直接%d可能出错
}

ADL SDK基本没法可靠读GPU利用率

AMD的ADL(AMD Display Library)早已停止维护,新版Radeon驱动(Adrenalin 22.5.1+)默认不安装ADL组件。即使你找到ADLManager_Init,调用ADL_Overdrive5_CurrentActivity_Get也大概率返回ADL_ERR

MyMap AI
MyMap AI

使用AI将想法转化为图表

下载

使用场景限制极死:

  • 仅支持GCN架构(RX 400/500系列及更早),RDNA/RDNA2(RX 6000)和RDNA3(RX 7000)完全不支持
  • 必须以管理员权限运行,否则ADL_Overdrive_Caps都拿不到
  • Windows 11 22H2+系统上,ADL初始化常卡在ADL_Adapter_Active_Get,无错误也无返回

参数差异上,ADL返回的是ADLPMActivity结构体,其中iGPUCoreClockiGPUTemperature还能用,但iUsage字段在新卡上恒为-1。

跨平台方案别硬刚SDK,优先查/proc或WMI

Linux上最稳的方式其实是读/proc/driver/nvidia/gpus/0000:01:00.0/information/proc/driver/nvidia/statistics(需root),或者用nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits管道解析——虽然慢一点,但不依赖SDK版本,也不怕NVML初始化失败。

Windows上可绕过NVML,改用WMI查询:Win32_PerfFormattedData_Counters_GPUInformation类(Win10 2004+),但要注意:

  • 该WMI类只在NVIDIA驱动启用“GPU Performance Counters”时才生效(注册表键HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\nvlddmkm\Parameters\EnablePerfCounter设为1)
  • 返回值是GPUUtilization属性,类型为uint32,但单位是“千分比”(即567 = 56.7%),不是NVML那种整数百分比

性能影响方面:NVML调用本身开销很小(微秒级),但频繁调用(如每10ms一次)会触发驱动内部锁竞争,反而拖慢GPU任务;WMI或nvidia-smi则每次都要启新进程,100ms内调太密会导致延迟堆积。

真实复杂点在于:GPU利用率本身没有单一权威定义。NVML的gpu字段是SM(流式多处理器)活跃周期占比,而游戏引擎或CUDA profiler看到的“占用率”可能是指令吞吐、寄存器压力或内存带宽饱和度——它们数值经常对不上。别把它当CPU usage那样理解。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

866

2023.07.31

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

452

2024.06.27

golang结构体相关大全
golang结构体相关大全

本专题整合了golang结构体相关大全,想了解更多内容,请阅读专题下面的文章。

365

2025.06.09

golang结构体方法
golang结构体方法

本专题整合了golang结构体相关内容,请阅读专题下面的文章了解更多。

200

2025.07.04

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

422

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

595

2023.08.10

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

1251

2023.07.26

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1152

2023.07.27

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

1127

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 10万人学习

C 教程
C 教程

共75课时 | 4.9万人学习

C++教程
C++教程

共115课时 | 19.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号