GPU架构中的半精度fp16与单精度fp32计算

GPU架构中的半精度与单精度计算

​ 由于项目原因,我们需要对darknet中卷积层进行优化,然而对于像caffe或者darknet这类深度学习框架来说,都已经将卷积运算转换成了矩阵乘法,从而可以方便调用cublas 库函数和cudnn里tiling 过的矩阵乘。

​ CUDA在推出7.5的时候提出了 可以计算16位浮点数据的新特性。定义了两种新的数据类型halfhalf2. 之前有师弟已经DEMO过半精度memory copy 与计算,发现copy的代价会减少一半,而计算的提升并不是很理想。误打误撞看到了《why cublasHgemm is slower more than cublasSgemm when I use?》这个帖子,终于发现其中的一点规律。

问题的提出者问,为什么在GTX1070上运行 cublasHgemm(半精度计算) 比 cublasSgemm(单精度计算)计算的慢呢?nv官方的回答说,当前的Pascal架构的GPU只有的 P100 的FP16计算快于 FP32。并且给出了编程手册的吞吐量的表。

这里写图片描述

从表中我们可以看出,对半精度支持更好的是架构 计算能力 5.3和6.2 分别对应嵌入式的平台 Jetson TX1和Jetson TX2,而计算能力6.0的就是我们上边提到的P100了。 而计算能力7.0则是最新的volta架构了。

另一位开发者提供了他在P100下测试的程序样例,见ref 【1】

ref

https://github.com/hma02/cublasHgemm-P100

https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#arithmetic-instructions

https://devtalk.nvidia.com/default/topic/972337/gpu-accelerated-libraries/why-cublashgemm-is-slower-more-than-cublassgemm-when-i-use-/

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值