CUDA(一) GPU计算性能的相关计算公式

此博客为博主的自学笔记 ,欢迎大家共同交流,如果有错误的地方欢迎留言指正。


今天开始重新学习CUDA,虽然之前也写过一段程序。可因为种种原因没有继续,加之使用的硬件版本比较低端和英伟达的不断创新进步,发现自己已经处于CUDA的菜鸟乐园中。

闲话不多说---------开干。

今天先将最基本的计算方法重新理解一下,为以后的性能优化打下坚实的基础!!!!

 GPU设备的单精度计算能力的理论峰值计算公式:

单精度计算能力的峰值 = 单核单周期计算次数 × 处理核个数 × 主频

   例如:   以GTX680为例,   单核一个时钟周期单精度计算次数为两次,处理核个数 为1536, 主频为1006MHZ,那他的计算能力的峰值P 为

P = 2 × 1536 × 1006MHZ = 3.09TFLOPS

   这里1MHZ = 1000000HZ,  1T为1兆,也就是说,GTX680每秒可以进行超过3兆次的单精度运算。

同样,双精度的处理核为64个,不难算出,GTX680的双精度运算能力为0.13TFLOPS。


GPU设备的数据通信时间的计算公式:

      通信时间 = 通信量 ÷ 通信速度

      例如,单个处理核的输入数据以4个4byte为例,输出为1个4byte,GTX680所有处理核100%利用的情况下,通信量为5× 4 × 1536  byte,GTX680的通信速度为192..2GB/S,所以它的通信时间为 

           5× 4 × 1536 byte ÷  192.2GB/S  = 1.49e-7 s

      如果这4个4byte的数据进行10次运算的话,以GTX680为例,他的主频为1006MHZ,也就是他每1e-9s为一个时钟周期,每个周期可进行两次单精度计算,也就是5个时钟周期即5e-9s可完成计算,为通信时间的几十分之一,故可忽略不计。所以,从内存访问看计算能力:

     单精度计算能力 = 单核单精度符点计算次数 × 处理核个数 ÷ ( 通信时间 + 计算时间)  注:此处计算时间忽略不计 

    即  10 × 1536 ÷ 1.49e-7s = 103GFLOPS

   即为普通PC10倍的计算速度。





  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值