NVIDIA /CUDA 里面的clock rate详细介绍

本文主要介绍:

  1. cuda中的时钟频率具体有哪些?
  2. clock rate怎么调节?

cuda中可以通过nvml 函数或者命令来调整时钟频率(clock rate)

介绍

命令行 nvdia-smi -q -i 0 可以查询device相关参数,可以用后面的命令过滤clock相关参数,

$ nvidia-smi -q -d CLOCK -i 0
	Clocks                             
        Graphics Clock                  : 1410 MHz
        SM Clock                        : 1410 MHz
        Memory Clock                    : 1215 MHz
        Video Clock                     : 1275 MHz
    Applications Clocks                
        Graphics Clock                  : 1410 MHz
        Memory Clock                    : 1215 MHz
    Default Applications Clocks        
        Graphics Clock                  : 765 MHz
        Memory Clock                    : 1215 MHz
    Deferred Clocks                    
        Memory Clock                    : N/A
    Max Clocks                         
        Graphics Clock                  : 1410 MHz
        SM Clock                        : 1410 MHz
        Memory Clock                    : 1215 MHz
        Video Clock                     : 1290 MHz
    Max Customer Boost Clocks          
        Graphics Clock                  : 1410 MHz
    Clock Policy                       
        Auto Boost                      : N/A  # (disable/enable)
        Auto Boost Default              : N/A  #(disable/enable)

通过上面可以了解到,最新的CUDA12 显示了以下几个clock

  • Clocks
    代表的是目前实时频率
  • Applications Clocks
    Application clock,也就是说CUDA runtime 启动后的时钟频率,启动后就和第一个”Clocks“一样的
    当application设置后,无程序跑的时候比较低大概200-600之间。idle clock,运行kernel,其值与Application Clocks一致。
    在不支持application的机器上,设置locked clock后,其值为设定的locked clock(当设定的clock rate > boost clock后,会动态变化> boost clock GPU Boost 4.0)
  • Default Applications Clocks
    这个是默认的 Applications Clocks ,当用户设置了Applications Clocks 后,再次返回的时候可以返回到这个默认值
  • Deferred Clocks
    没有研究
  • Max Clocks
    最大的时钟频率, 包括超频

对于clock还有其它的一些clock rate 没有在上面体现,具体为下面两项
Base Clock:
(nvidia-smi base-clocks -i 0)The Base Clock of a graphics card (also sometimes referred to as the “Core Clock”) is the minimum speed at which the GPU is advertised to run. In normal conditions, the GPU of the card will not drop below this clock speed unless conditions are significantly altered. This number is more significant in older cards but is becoming less and less relevant as boosting technologies take center stage.
Boost Clock:
The advertised Boost Clock of the card is the maximum clock speed that the graphics card can achieve under normal conditions before the GPU Boost is activated. This clock speed number is generally quite a bit higher than the Base Clock and the card uses up most of its power budget to achieve this number. Unless the card is thermally constrained, it will hit this advertised boost clock. This is also the parameter that is altered in “Factory Overclocked” cards from AIB partners.

其中大小关系是Base Clock <= Boost Clock <= Max Clocks <=max Boost Clocks.

Auto Boost相关说明入如下:

Auto Boost 大部分不支持:
GPU Boost technology allows the card to boost much higher than the advertised “Boost Clock” that may be listed on the box or on the product page.
Increase Performance with GPU Boost and K80 Autoboost | NVIDIA Technical Blog
nvmlDeviceSetAutoBoostedClocksEnabled (nvidia-smi --auto-boost-default=ENABLED -i 0)
所说的不支持指的是不支持打开和关闭
在这里插入图片描述

对于cuda的 cudaGetDeviceProperties.clock_rate对应的

cudaDeviceProp device_prop;
  err = cudaGetDeviceProperties(&device_prop, device);
  if (err != cudaSuccess) {
   
    return (Error_t)err;
  }
  1. 对于支持application clock rate的设备,对应的是上面的:Applications Clocks->Graphics Clock / SM Clock,
  2. 对于不支持application clock的卡,其值是boost clock,并不是locked clock,这一点需要注意,并且该值只能通过spec去查询,nvml中查询不到,只能查询到base clock

比如:RTX4090 properties.clock_rate = 2520 MHz, 其中通过命令行查询后如下,nvidia-smi -q -i 3 找不到2520Mhz
在这里插入图片描述
在这里插入图片描述

测试性能的时候,是否需要set max clock rate?或者reset default clock rate?

一定需要的。

可以通过命令行或者API(1.4会详细介绍)修改上面提到的具体运行clock rate , 我们的卡是多人使用,一旦这些参数被人篡改(比较低的值),测试性能急剧下降。并且不稳定。

nvidia-smi  --applications-clocks=9001,2520 -i 0
 nvidia-smi  --reset-applications-clocks -i
 nvidia-smi  --lock-gpu-clocks=3
### 关于CUDA和cuDNN的详细入门教程 #### 安装准备阶段 对于希望在AI领域应用GPU加速计算能力的研究者或开发者而言,在Linux环境下安装CUDA工具包以及cuDNN库是必要的前置条件。为了确保整个流程顺利进行,建议先确认操作系统版本兼容性,并更新至最新状态[^2]。 #### 显卡驱动程序安装 由于CUDA依赖特定版本的NVIDIA图形处理器及其对应的驱动支持,因此需按照官方文档指导完成相应型号显卡驱动的部署工作。这一步骤至关重要,因为不匹配的驱动可能导致后续软件无法正常运作。 #### CUDA Toolkit安装 当成功设置好硬件层面的支持之后,则可以着手下载并安装适合当前系统的CUDA Toolkit。通过访问[NVIDIA官方网站](https://developer.nvidia.com/cuda-downloads),可以根据个人需求挑选合适的发行版进行本地化配置。值得注意的是,在此过程中应当仔细阅读相关说明文件,以便更好地理解各项参数的意义及作用范围[^1]。 ```bash # 添加CUDA仓库密钥与源列表 sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub sudo bash -c 'echo "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64 /" > /etc/apt/sources.list.d/cuda.list' # 更新APT缓存并安装CUDA sudo apt-get update && sudo apt-get install cuda ``` #### cuDNN Library集成 作为针对神经网络运算优化过的高性能数学函数库,cuDNN能够显著提升基于卷积操作的任务效率。其安装方式相对简单——只需前往[NVIDIA Developer页面](https://developer.nvidia.com/rdp/cudnn-archive)获取对应版本压缩包后解压到指定路径即可生效。不过在此之前,请务必核实所选cuDNN版本是否能良好适配已有的CUDA环境。 ```bash tar -xzvf cudnn-linux-x86_64-*.tgz sudo cp cuda/include/* /usr/local/cuda/include/ sudo cp cuda/lib64/* /usr/local/cuda/lib64/ ``` #### 验证安装成果 最后但同样重要的一环就是验证上述组件能否协同作业。可以通过编写一段简单的测试代码来检验CUDA设备初始化状况;而对于cuDNN来说,则推荐参照官方样例项目来进行功能检测。 ```cpp #include <stdio.h> #include <cuda_runtime.h> int main() { int deviceCount; cudaError_t error = cudaGetDeviceCount(&deviceCount); if (error != cudaSuccess){ printf("CUDA Error: %s\n", cudaGetErrorString(error)); return 1; } printf("Found %d CUDA devices.\n", deviceCount); for(int i=0; i<deviceCount; ++i){ cudaDeviceProp prop; cudaGetDeviceProperties(&prop, i); printf("Device Number: %d\n", i); printf(" Device name: %s\n", prop.name); printf(" Memory Clock Rate (KHz): %d\n", prop.memoryClockRate); printf(" Memory Bus Width (bits): %d\n", prop.memoryBusWidth); printf(" Peak Memory Bandwidth (GB/s): %.1f\n\n", 2.0*prop.memoryClockRate*(prop.memoryBusWidth/8)/1.0e6); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值