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

如何实现Radeon GPU功耗定时采样?求替代rocm-smi单次采样的方案

解决Radeon RX6900 XT定时功耗采样的方案

一、用Shell脚本封装rocm-smi实现定时采样

rocm-smi本身没有像nvidia-smi那样的内置定时采样参数,但可以通过shell循环调用+时间戳注入的方式实现需求。以下是bash脚本示例:

#!/bin/bash
OUTPUT_FILE="amd_power_trace.csv"
# 写入CSV表头
echo "timestamp,power.draw (W)" > $OUTPUT_FILE
# 设置采样间隔(1ms,与nvidia-smi配置一致)
SAMPLING_INTERVAL=0.001

while true; do
    # 获取精确到毫秒的时间戳
    TIMESTAMP=$(date +%Y-%m-%dT%H:%M:%S.%3N)
    # 提取rocm-smi输出的功耗值(输出格式为"GPU索引,功耗(W)")
    POWER=$(rocm-smi -P --csv | awk -F ',' '{print $2}')
    # 写入采样数据
    echo "$TIMESTAMP,$POWER" >> $OUTPUT_FILE
    # 等待采样间隔
    sleep $SAMPLING_INTERVAL
done

使用说明:

  • 保存为amd_power_sampler.sh,赋予执行权限:chmod +x amd_power_sampler.sh
  • 运行脚本后持续采样,按Ctrl+C终止
  • 若系统bash版本不支持小数参数的sleep,可替换为usleep 1000(对应1ms等待)

二、直接读取sysfs硬件节点(轻量无依赖)

AMD GPU的功耗数据会暴露在sysfs文件系统中,无需依赖rocm-smi,采样开销更低:

  1. 定位功耗节点路径:
    执行以下命令找到对应GPU的hwmon目录:
ls /sys/class/drm/card0/device/hwmon/

进入目标目录(如hwmon0),其中power1_input文件存储的是**微瓦(μW)**单位的瞬时功耗值。

  1. 定时采样脚本示例:
#!/bin/bash
OUTPUT_FILE="amd_sysfs_power_trace.csv"
echo "timestamp,power.draw (W)" > $OUTPUT_FILE
SAMPLING_INTERVAL=0.001
# 替换为你的实际功耗节点路径
POWER_PATH="/sys/class/drm/card0/device/hwmon/hwmon0/power1_input"

while true; do
    TIMESTAMP=$(date +%Y-%m-%dT%H:%M:%S.%3N)
    # 读取微瓦值并转换为瓦
    POWER_RAW=$(cat $POWER_PATH)
    POWER=$(echo "scale=2; $POWER_RAW / 1000000" | bc)
    echo "$TIMESTAMP,$POWER" >> $OUTPUT_FILE
    sleep $SAMPLING_INTERVAL
done

三、ROCm性能分析工具rocprof(结合应用场景)

如果需要和OpenCL应用的性能数据联动采集,可使用rocprof工具:

  1. 创建配置文件profile_config.txt:
trace:
  power:
    enabled: true
    sample_interval_ms: 1
  1. 启动应用时附加rocprof采样:
rocprof --config profile_config.txt ./your_opencl_application

采样完成后,rocprof会生成包含功耗时序数据的结果文件,可从中提取时间戳与功耗值进行能耗计算。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:05:26