You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C语言直接获取Linux下NVIDIA GPU的整数型核心温度?

直接用C语言获取NVIDIA GPU核心温度(无需解析命令输出)

当然可以直接通过C语言获取整数形式的GPU核心温度,而且效率比解析nvidia-settings的输出高得多——你需要用到NVIDIA官方提供的NVML(NVIDIA Management Library),这是专门用于管理NVIDIA GPU的原生接口,完全避免了调用外部命令的开销。

步骤说明

1. 安装NVML开发库

首先确保系统上安装了NVML的开发文件:

  • Debian/Ubuntu系:sudo apt install nvidia-ml-dev
  • RHEL/CentOS系:sudo yum install nvidia-devel
    如果是手动安装的NVIDIA驱动,通常已经自带了NVML的头文件和库文件,路径一般在/usr/include/nvidia/和/usr/lib64/(或/usr/lib/)。

2. C语言示例代码

下面是一个完整的示例,直接获取第一个GPU(索引0)的核心温度:

#include <stdio.h>
#include <nvml.h>

int main() {
    nvmlReturn_t ret;
    unsigned int gpu_temp;
    nvmlDevice_t device_handle;

    // 初始化NVML库
    ret = nvmlInit();
    if (ret != NVML_SUCCESS) {
        fprintf(stderr, "NVML初始化失败: %s\n", nvmlErrorString(ret));
        return 1;
    }

    // 获取索引为0的GPU设备句柄
    ret = nvmlDeviceGetHandleByIndex(0, &device_handle);
    if (ret != NVML_SUCCESS) {
        fprintf(stderr, "获取GPU设备失败: %s\n", nvmlErrorString(ret));
        nvmlShutdown();
        return 1;
    }

    // 获取GPU核心温度(单位:摄氏度,整数形式)
    ret = nvmlDeviceGetTemperature(device_handle, NVML_TEMPERATURE_GPU, &gpu_temp);
    if (ret != NVML_SUCCESS) {
        fprintf(stderr, "读取GPU温度失败: %s\n", nvmlErrorString(ret));
        nvmlShutdown();
        return 1;
    }

    printf("GPU核心温度: %u°C\n", gpu_temp);

    // 清理NVML资源
    nvmlShutdown();
    return 0;
}

3. 编译与运行

编译时需要链接NVML库(libnvidia-ml.so):

gcc -o gpu_temp_reader gpu_temp_reader.c -lnvidia-ml

运行编译后的程序:

./gpu_temp_reader

输出会直接显示整数形式的温度,比如GPU核心温度: 41°C。

为什么这个方法更高效?

相比解析nvidia-settings的输出:

  • 避免了fork/exec外部进程的开销,这在连续检测时会积累大量额外消耗
  • 无需处理字符串解析(比如从命令输出中提取数字),直接得到整数结果
  • NVML是原生系统级接口,调用延迟极低,适合高频监控场景

额外说明

  • 如果你的系统有多个GPU,只需要循环调用nvmlDeviceGetHandleByIndex,传入不同的索引(从0开始)即可获取每个GPU的温度
  • 大多数情况下,普通用户权限就可以读取GPU温度,无需root权限
  • NVML还支持获取更多GPU状态信息(比如显存使用率、功耗等),如果需要扩展功能可以参考官方文档

内容的提问来源于stack exchange,提问作者secdet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:01:03