本帖最后由 天魔 于 2009-7-17 17:11 编辑
对方辩友还是好好做足功课再来引用吧:目前的G200芯片中只有一个流处理器能进行双精度运算,其运算效率很低,速度也远比不上CPU。GPGPU的卖点就是运算速度和效率,既没效率又没速度,空谈支持,恐怕英伟达的设计人员自己都不好意思提“Support for double-precisionfloating-point numbers”这句话。
对方辩友引用CUDA的缺点来论证己方论点,这不是自己往枪口上撞么?功课做得不到家哈
weihua8206 发表于 2009-7-17 14:36
这里整个讨论主题中没有做好功课或者说根本没做功课的恰恰是你。
首先你提出了GT200没有双精度运算,这点已经被我批驳掉了,而后tomsmith123说的"8个SP 配合1个DP模块"又被你歪曲成GT200只有一个流处理器能进行双精度运算,这说明你对GT200的体系架构甚至连CPU的体系架构都完全是处于匮乏的状态,所能做的帖子大部分都是没有丝毫正确的论据来支撑其论点。
GT200有30个MP,每个MP有8个单精度Stream Processor、一个双精度Stream Processor、两个SFU,每个Stream Processor周期GT200能完成30个DP MAD,Stream Processor的运算时钟在Tesla C1060上是1.296 Ghz,双精度运算性能是78GFLOPS。
而在RV770上,每个SIMD Core有16个Thread Processor,每个Thread Processor有5个单精度运算单元,即ALU[X,Y,Z,W]和ALU.T,其中的ALU[X,Y,Z,W]可以执行双精度运算,在RADEON HD 4870上能提供200GFLOPS级别的双精度运算性能。
有多种因素制约了GPU的性能发挥,例如内存容量。就拿跑Linpack为例,矩阵规模越大,性能就越可以接近峰值,Tesla C1060目前只有4GB,相比之下CPU只要内存槽足够,上个16GB也是轻而易举的事情,我在Core i7 920上使用gotoblas跑linpack,可以做到35GFLOPS左右,矩阵规模是25000x25000,至少6GB的内存,如果把矩阵规模缩小到4GB,这个测试值就会掉2GFLOPS以上,但是Nehalem是三通道,要达到最佳的带宽,理论上应该是三条通道的内存容量一致,那如果是3GB的话,下降到30GFLOPS一点也不奇怪。
如果用N=23040,在Core2 Q6850 + Tesla C1060上跑 HPL,效率是整体(CPU+GPU)双精度峰值性能的66%,如果N=32320(8GB+4GB可以达到的最高求解规模上限,新版本的CUDA可以实现每个MPI进程的 page-lock 内存超过4GB),就能达到72%。
还有像BLAS库的问题,在软件上这个可能更加重要,CUBLAS 2.0和CUBLAS 1.0相比就有非常显著的性能提升。 |