|
发表于 2009-9-12 21:52:42
|
显示全部楼层
原帖由 refla 于 2009-9-12 12:18 发表 
A 卡对双精度的运算效率要比 N 的高。
这个问题还是有争议的。
你可能是看了PCI的HD 4850测试报告,陈寅初当时是这么说的:
以 RADEON HD 4850 的 625MHz 为例,因为可以每个周期能执行 160 条 MULADD 指令,双精度浮点性能则为 200,000 MFLOPS 或者 200 GFLOPS,这个性能是 NVIDIA GeForce GTX 280(77.76GFLOPS MAD) 的 2.57 倍。
但不要忘记这是AMD模拟全部双精度单元满负荷运算时测算出的理论值,RV770是靠ALU trans电路来执行双精度浮点数据的运算。
在有些情况下,RADEON HD 4850 的双精度性能会被看作是1/4或者 1/2,因为人们在编写通用程序的时候,可能很少使用到ALU.trans,这时候程序就会表现出1/4的单精度 MULMAD 指令吞吐率或者1/2的单精度ADD指令吞吐率。
再加上frontwave细化度不足带来的延迟以及LDS和GDS共享度严重不足带来的延迟……实际上RV770无论单双精度,真实可用运算能力都会有极大的缩水。而根据资料计算,GTX280峰值双精度64Bit浮点运算能力大概在90GFLOPS左右(实际输出能力,非理论值)。
A卡和N卡在双精度计算方面有很大不同,因为双精度计算部件设计非常复杂,所以A卡使用了ALU trans电路,ALU trans和LDS都是AMD要求引入的(R600时代就已经出现);N卡也使用了特殊部件SFU,GTX200核心的每一个SM都包括了一个SFU(Special Function Unit,特殊功能单元)。GTX200芯片中的SFU单元已经不像G80时代的线程调度器,而是具备完整的线程发放能力,支持单周期一个乘加+一个连加运算。所以GT200的双精度运算性能衰减是单精度的1/8,并且衰减程度非常稳定(充足的周边资源所致)。
实际上无论是SFU还是ALU trans,在图形处理过程中都极少被用到。通用计算真的给显卡带来了很多改变…… |
评分
-
查看全部评分
|