模拟/建模/设计

高级 API 性能: SetStablePowerState

这篇文章介绍了使用 设置表电源状态关于 NVIDIA GPU 。要在应用程序中获得高且一致的帧速率,请参阅所有 高级 API 性能提示 .

大多数现代处理器,包括 GPU ,在应用程序执行期间更改处理器核心和内存时钟速率。这些更改可能会改变性能,在测量中引入错误,并且很难在运行之间进行比较。

推荐

  • 在尝试测量之前,使用nvidia-smi实用程序设置 GPU 内核和内存时钟。此命令由 Windows 和 Linux 上的典型驱动程序安装程序安装。安装位置可能因操作系统版本而异,但应相当稳定。
    • 在 Windows 上的管理员控制台上运行命令,或在 Linux (如 OSs )上为以下命令添加前置命令sudo
    • 查询支持的时钟速率
      • nvidia-smi --query-supported-clocks=timestamp,gpu_name,gpu_uuid,memory,graphics --format=csv
    • 要分别设置内核和内存时钟速率,请执行以下操作:
      • nvidia-smi --lock-gpu-clocks=<core_clock_rate>
      • nvidia-smi --lock-memory-clocks=<memory_clock_rate>
    • 执行性能捕获或其他工作。
    • 要分别重置核心和内存时钟速率,请执行以下操作:
      • nvidia-smi --reset-gpu-clocks
      • nvidia-smi --reset-memory-clocks
    • 对于项目期间的一般使用,可以编写一个简单的脚本来锁定时钟、启动应用程序,然后在退出后重置时钟。
    • 要获得命令行帮助,请运行nvidia-smi --help。为方便起见,前面列出的命令有一些简短版本。
  • 使用 DX12 功能SetStablePowerState读取 GPU 预定的稳定电源时钟频率。稳定的 GPU 时钟频率可能因板而异。
    • 修改 DX12 示例以调用SetStablePowerState
    • 执行nvidia-smi -q -d CLOCK,并在SetStablePowerState样本运行时记录图形时钟频率。将此频率与--lock-gpu-clocks选项一起使用。
  • 使用 Nsight Graphics 的 GPU 跟踪活动,并选择在评测期间锁定内核和内存时钟速率(图 1 )。
Screenshot of Nsight Graphics UI with Locks Clocks to Base checkbox.
图 1 :。“将时钟锁定到基准”复选框

不推荐使用

  • 请勿仅使用 DX12 的SetStablePowerState功能锁定 GPU 核心时钟。这不会锁定内存时钟,结果也不如nvidia-smi可实现的那样具有可比性。


Tags