【【 问题已解决 】】
最近在做 cuda 工程的优化工作。
硬件环境是集群的GTX4600. 在做单卡测试的时候(ubuntu10.10)。看了 cuda-z 给出的报告
32位整数运算 竟然慢于 32位单精度浮点数运算 !!!
已解决:
programming guide 已给出throughput。 详见5楼
【【 问题已解决 】】
最近在做 cuda 工程的优化工作。
硬件环境是集群的GTX4600. 在做单卡测试的时候(ubuntu10.10)。看了 cuda-z 给出的报告
32位整数运算 竟然慢于 32位单精度浮点数运算 !!!
已解决:
programming guide 已给出throughput。 详见5楼
有点悲剧了,我做过的cuda程序里能用整数的我从来不用浮点数,这下发现一个大秘密。。:'(。以后记得了。。
本来图形计算都是单精度浮点的,GPU当然对此类进行过特殊优化。
没办法发图片~~~
Throughput of Native Arithmetic Instructions
(Operations per Clock Cycle per Multiprocessor )
Compute Compute Compute
Capability 1.x Capability 2.0 Capability 2.1
32-bit floating-point 8 32 48
add, multiply, multiply-add
64-bit floating-point 1 16 4
add, multiply, multiply-add
32-bit integer 8 32 48
add, logical operation
32-bit integer 8 16 16
shift, compare
32-bit integer
multiply, multiply-add, sum of 16 16
absolute difference
根据上面这个表 。 32位的加法 整型和单精度是无差别的
但是 32位乘法和乘加,在 2.1的计算架构中的速度 ,单精度是整型的三倍
值得 注意的是, 32整型的 shift 比 单精度的乘法还要慢
mark,算法还真没有注意这个,以后需要考虑了!!