|
目前的情况看,CUDA 在GPGPU 领域是暂时领先的,但是问题是,GPGPU 是否需要这样的领先,特别是CUDA 的发展方向是否正确。从nVidia 的规划看,CUDA 在HPC 领域推广最不惜血本,对于某些用户,白送一套理论峰值128T 的S1070,如此的大手笔,今年实在罕见,不过从HPC 这个领域看,很不看好。
CUDA 面临几个方面的问题:
首先是算法适应性,大部分HPC 算法,数据吞吐量大,对于CUDA 架构来说,当数据大量通过PCIE 传送,整体效能会非常低,这不仅仅是CUDA 的问题,任何GPGPU 的结构,都无法解决;
其次是计算精度,多数的HPC 算法,要求双精度,甚至四倍精度,而CUDA 仅仅提供单精度非标浮点,在若干次迭代后,结果误差累计会比较大,无法满足计算要求。在我们做的一些理论化学计算中,CUDA 的误差高达7%极限情况达到15%,远远超过0.3%的误差许可。
第三是移植复杂度,目前的CUDA 程序,以一个3000行的MPI 程序为例,移植到CUDA 上,需要2个熟练的CUDA 程序员,三个月时间,而针对不同的CUDA 设备,优化工作还需要从做,这对于CUDA 软件的开发和维护成本是不可想象的。即使在国内,维护一套CUDA 软件,也是多数单位无法承担的。
Intel 在年底会发布CT 的beta 版,我们已经拿到并测试,同时通过Intel 方面,拿到了一些Larrabee 在我们用到算法的实测数据,基本结论如下:
1. CT 的开发维护复杂度,大致是CUDA 的1/5 甚至更小,后期升级系统维护的成本,基本上是0。比较显著的例子是CT 一段15行的程序,CUDA 大致需要90行来完成。
2. Larrabee 的性能效率最高可以到57%,平均42%,CUDA 则最高45%,平均19%,二者完全不是一个量级的产品;
3. Larrabee 的单精度累计误差较CUDA 低一些,最高3%,极端情况下可能到5%。
就上述的数据,我们和ARSC 的朋友交流,他们也确认了类似的结论,我们共同对明年Larrabee 上市表示了期待,他们有希望在明年年初拿到测试板,比预计晚了四个月。
除了HPC 外,CUDA 在桌面个人程序上也有一定进展,包括CODEC,这方面由于nVidia 的持续投入,已经有很明显的效益,如我之前所说,CUDA 软件的维护升级可能会消耗一些人力,很难说nVidia 是否会持续投入下去,软件开发商是否有意愿维护这部分代码。
CUDA-PHYSX 是nVidia 自己的产品,理论上不会受到影响。
目前,我们还在维护用到的CUDA 相关代码,但是已经基本暂停进一步的开发,主要精力转移到CT 上,如果Intel 愿意,CT 的支持面会非常广泛,这对于从事计算密集型研究的人来说,都是好事。 |
|