技术开发 频道

yyfn风辰:fermi是一个革命性的进步

  【IT168 专稿】CUDA 3.0发布了,与此同时,CUDA社区(Cuda.Itpub.net)独家发布的CUDA 3.0 编程指南中文版也发布了。今天我们对在社区里免费贡献了翻译成果的CUDA 程序设计讨论区版主风辰做了一个邮件采访,以下为采访的内容:

  IT168:我们知道您最近完成了《CUDA 3.0编程指南》的翻译工作,目前在论坛已经提供了PDF下载,您是什么时候考虑要做着个事情的,花费了多长时间,为什么要这样做?

  风辰:做这个事情是在回北京后不久,当时刚知道nVidia发布了3.0的编程指南,和2.0的中文版一比较发现变化太大了,所以就想翻译一下。花的时间大致是近半个月的晚上吧,如果按小时来说,应当说超过了六十个小时左右,所以翻译得比较匆忙,有错误还请大家谅解!至于做这个的原因,其实挺简单的,就是想加深一下对CUDA的理解,看和翻译是不一样的,翻译的时候会仔细考虑这个用中文怎么说,这样很多问题就考虑得比较仔细深入了。发布这个是后来才想到的,因为我觉得发布它对大家应该是有帮助的。

  IT168:您从事CUDA方面的研究多久了?您什么时候开始进行CUDA方面的研究的?能不能给大家分享一下关于CUDA开发的学习及学习经验心得呢?

  风辰:我做这个也不太长,最早能算到08年末吧!但真正的说到研究它也只能说是去年的八九月份开始,因此我的CUDA年龄还是比较小的!至于怎么学习CUDA,这个还真不太好说,毕竟据我了解,学习这个的一般不是科班出身的(我也不是),说CUDA难的原因很大一部分原因可能在这里,但是对于有使用openmp经验的人应当比较简单。学习CUDA,我觉得有三个地方一定要仔细理解:一、线程层次;二、存储器层次;三、执行模式。给新手四个法宝吧!多写程序验证、多问、多google、多看编程指南。

  IT168:能否给我们回顾下CUDA历史版本如1.0,2.x到目前的3.0、功能及路线图

  风辰:nv发布CUDA的路线图是1.0->1.1->2.0->2.1->2.2->2.3->3.0;发布GPU的主要路线图是G80->GT200->fermi,当然中间还有一些G92、G94等;CUDA版本和GPU版本的主要对应关系如下:CUDA1.0对应的GPU是G80;CUDA2.0对应的是GT200;目前的CUDA3.0对应的是还未正式出山的fermi。具体的功能比较可以参看下图:

  IT168:能否给我们详细介绍下cuda3.0新特性。

  风辰:我就从我个人的观点来给这些新特性中的一些排个名吧!说明:我并没有费米显卡,所以下面的看法只是依据nVidia的资料做出的判断。

  一、ECC:错误检测与纠正

  相信很多人都会因为CUDA计算时候会莫名其妙的出错而烦恼(程序是正确的,但是结果就是有些问题),ECC的出现应当会杜绝这个问题。

  二、更高的双精度计算能力和浮点计算标准

  浮点标准从IEEE-754(1985)变化到IEEE-754(2008),加上双精度计算能力的加强,更好的满足科学计算的要求。

  三、可配置的L1缓存和shared

  64KB的可配置为16/48的L1缓存和/或shared机制,缓存的加入使得存储器访问的影响不会像前几代的GPU那么大,可以更专注于问题的解决。另外shared的加大也使得某些应用可以使用shared来加速。

  四、增加了浮点原子加指令

  串行计算中经常会利用牛顿第三定律来减少计算量,而科学计算经常是浮点计算,但是在Fermi之前的GPU中这是不能实现的,浮点原子加指令的出现使得一些程序不必更改结构就可以实现加速。

  虽然nv在fermi中引入了如此多的特性,但是还是有一些想要的没有出现:

  a、没有全局同步机制,依旧得手动全局同步。

  b、浮点原子函数只有加法,依旧没有原子乘除函数,连整形原子乘除也没有

  c、数据传输速度问题没有任何进展。这异构并行的问题还将存在下去。

  d、一般的浮点和整形计算单元与特殊函数单元依旧独立,从某种程序上说,这是在浪费资源,因为很多时候根本用不上这些函数。如果这两者功能合一的话,可能……。

  整体而言,fermi是一个革命性的进步。

  IT168:能否分享下您的cuda3.0使用体验。

  风辰:由于我没有fermi卡,所以不能使用计算能力2.0的特性。我用的是linux,当然就对cuda-gdb和cuda-memcheck比较上心了,试验了一下,感觉还是很有用的,建议使用linux的cuda人多使用。

  IT168:您觉得cuda3.0的新特性能为开发者带来那些的新价值?

  风辰:编程和优化将会变得更加简单,更多的应用可以使用GPU加速,比如加入的ECC功能就使fermi可以用于一些高准确性要求的项目。

  IT168:很多网友都很关注:“cuda3支持之前的显卡吗?还是只支持最新的显卡呢?”你能否大体给网友说下新CUDA 3 编程的配置及环境呢?

  风辰:支持以前的显卡,理由就像你可以在计算能力1.2的显卡上运行cuda2.3一样,优点是你可以获得驱动性能的提升和一些改进带来的好处,缺点是你不能使用fermi的新特性。所以如果想要真正感受fermi的魔力的话,还是准备好“大米”吧!

  附:CUDA3.0编程指南中文版免费下载

0
相关文章