优雅的在NVIDIA GPU上实现sleep

简介: cuda编程 sleep函数

当我们在测试或者其他情况下,也许需要GPU执行完某步后sleep一会儿。这时我们就可以通过cuda所提供的C编程接口clock64()这个函数来实现。这里摘录一段cuda手册中对clock64()函数的说明:

when executed in device code, returns the value of a per-multiprocessor counter that is incremented every clock cycle. Sampling this counter at the beginning and at the end of a kernel, taking the difference of the two samples, and recording the result per thread provides a measure for each thread of the number of clock cycles taken by the device to completely execute the thread, but not of the number of clock cycles the device actually spent executing thread instructions. The former number is greater than the latter since threads are time sliced.

clock64()这个函数将返回线程所处的SM上的时钟周期数。如果在线程的开始和结束进行采样,并获取差值,将获得线程执行所花费的总时钟周期数,这将比线程实际运行的时钟周期数稍大,因为SM上多个线程之间是分时间片执行的。

因此为了优雅的实现设备上的延时函数,我们将在设备上调用clock64()这个函数,其函数原型为long long int clock64(),具体实现如下:

#define CLOCK_RATE 1695000  /* modify for different device */
__device__ void sleep(float t) {    
    clock_t t0 = clock64();
    clock_t t1 = t0;
    while ((t1 - t0)/(CLOCK_RATE*1000.0f) < t)
        t1 = clock64();
}

以上代码中的CLOCK_RATE可通过如下方式获得:

cudaDeviceProp  prop;
cudaGetDeviceProperties(&prop, 0); 
clock_t clock_rate = prop.clockRate;

此处获得的时钟频率单位为kilohertz,因此sleep函数中为获得以秒为单位的延时,需要采用CLOCK_RATE*1000.0f这种方式。

完整代码可见

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
机器学习/深度学习 虚拟化 数据中心
NVIDIA T4和A10:不同应用场景下的GPU加速器选择
在数据中心和云计算领域,GPU加速器扮演着至关重要的角色。NVIDIA T4和A10是两款适用于不同应用场景的GPU加速器。本文将比较它们的性能和适用场景,帮助读者更好地选择适合自己需求的GPU实例。
5173 0
|
6月前
|
机器学习/深度学习 人工智能 弹性计算
阿里云GPU服务器全解析_GPU服务器租用费用_NVIDIA A10、V100、T4、P4、P100 GPU卡
阿里云GPU云服务器提供NVIDIA A10、V100、T4、P4、P100等多种GPU卡,结合高性能CPU,单实例计算性能高达5PFLOPS。支持2400万PPS及160Gbps内网带宽。实例规格多样,如A10卡GN7i(3213.99元/月)、V100-16G卡GN6v(3830.00元/月)等。适用于深度学习、科学计算、图形处理等场景。GPU软件如AIACC-Training、AIACC-Inference助力性能优化。购买方式灵活,客户案例包括深势科技、流利说、小牛翻译。
844 0
|
6月前
|
XML 机器学习/深度学习 监控
性能监控之Telegraf+InfluxDB+Grafana NVIDIA GPU实时监控
【6月更文挑战12天】性能监控之Telegraf+InfluxDB+Grafana NVIDIA GPU实时监控
163 0
|
7月前
|
弹性计算 并行计算 UED
GPU实例使用--自动安装NVIDIA GPU驱动和CUDA组件
GPU 云服务器正常工作需提前安装正确的基础设施软件,对于搭载了 NVIDIA 系列 GPU卡的实例而言,如果把 NVIDIA GPU 用作通用计算,则需安装 NVIDIA GPU 驱动、 CUDA、cuDNN等软件。
101464 3
|
7月前
|
弹性计算 并行计算 UED
带你读《弹性计算技术指导及场景应用》——4. 自动安装NVIDIA GPU驱动和CUDA组件
带你读《弹性计算技术指导及场景应用》——4. 自动安装NVIDIA GPU驱动和CUDA组件
157 0
|
编解码 并行计算 计算机视觉
ffmpeg硬件编解码Nvidia GPU
ffmpeg硬件编解码Nvidia GPU
692 0
|
机器学习/深度学习 监控 异构计算
如何监控NVIDIA GPU 的运行状态和使用情况
如果这个值很低,则意味着您的 GPU 并没有全速的工作,可能是受到 CPU或者IO 操作的瓶颈,如果你使用的按小时付费的云服务器,那么就是在浪费时间和金钱!
1299 0
如何监控NVIDIA GPU 的运行状态和使用情况
|
弹性计算 编解码 负载均衡
阿里云GPU服务器NVIDIA V100和NVIDIA T4降价41-47%
阿里云GPU服务器NVIDIA V100和NVIDIA T4降价41-47%,阿里云产品大规模调价,核心云产品价格全线下调,技术红利释放核心产品最高降幅50%,以下产品的价格调整将于2023年5月7日生效,最终以产品详情页实际情况为准,阿里云百科分享阿里云官网发布的降价产品及降价幅度说明:
793 0
|
供应链 安全 IDE
NVIDIA GPU Display Driver 越界写入漏洞(CVE-2022-28181)
NVIDIA GPU Display Driver 越界写入漏洞(CVE-2022-28181)
NVIDIA GPU Display Driver 越界写入漏洞(CVE-2022-28181)
|
数据采集 编解码 弹性计算
阿里云GPU服务器计算型gn7r实例ARM架构NVIDIA A16 GPU卡
阿里云GPU服务器计算型gn7r实例是阿里云推出的企业级ARM处理器和GPU的组合云服务器,GPU为NVIDIA A16 GPU,CPU采用3.0 GHz主频的Ampere ® Altra ® Max处理器,以ARM架构为开发Android线上应用和云手机、云手游等业务提供云原生底层资源平台。阿里云百科分享GPU服务器计算型gn7r实例性能评测
2119 0
阿里云GPU服务器计算型gn7r实例ARM架构NVIDIA A16 GPU卡