技术开发 频道

专家解析CUDA成功注意事项

  【IT168 评论】在我以前的专栏中,曾经讨论过有关多核CPU以及GPU的软件。当硬件供应商为各自的平台搭建解决方案的时候,我注意到,软件工具存在着“分裂化”的问题。

  以前笔者曾提到一些“垂直”的软件编程工具包括MPI、OpenMP、CUDA以及OpenCL等。一种新的、名为Ct的编程语言将会很快从英特尔出现与世人见面(严格意义上这将是一个测试版本)。看起来,在上述选择中声音最大的就是CUDA。我经常想这个语言的接受程度,同时我也很惊讶CUDA在HPC领域的传播速度。

  从我看到的情况来看,围绕着CUDA的(Compute Unified Device Architecture,统一计算架构)争论已经超过了市场宣传。人们在实际工作中使用它,CUDA正在通过其“好奇阶段”。Nvidia最近发布了CUDA使用有关的一些统计数字:

  超过2700个CUDA相关信息在Google Scholar中引用次数;

  超过800个CUDA相关信息在YouTube中的视频数目;

  超过670次CUDA社区向CUDA Zone提交次数;

  超过350个CUDA精英挑战赛已注册人数;

  超过300个提供CUDA并行程序模型教学的高校。

  此外,我出席了去年秋天的Nvidia GPU技术会议,CUDA程序员济济一堂,建立了良好关系,同时也尽可能多地学习到了这个新编程语言。2007年6月,CUDA1.0发布,迄今不到三年。

  由于程序员带动的CUDA程序快速增长不是一件偶然的事情。Nvidia在技术推进和技术方面做了出色的工作。当然还有一些其它的因素使得CUDA迅速取得成功。如果一种新的编程语言获得CUDA一样的成功,可能要注意以下几个方面:

  CUDA是免费啤酒

  我是“免费语音软件”的忠实信徒,尤其在高性能计算领域。CUDA是开源软件,但是你可以免费得到,同时在使用时不会有附加费用。事实上,如果你不想要工具副本的话连注册都省去了。任何人都可以到CUDA的下载页面,选择自己需要的版本而并不过分强调注册。传统的营销模式对用户进行跟踪,使他们能够给出一些未来指向。

  支持C语言标准

  我坚信,任何一种新的编程语言只要使用C语言就已经找到了成功的机会。在HPC领域,Fortran语言也同样重要。CUDA的设计者非常聪明地没有硬要创造一种新语言。他们故意设计了一套可扩展的、最低标准C,使用户可以再熟悉的环境中工作。

  渐进的应用改进

  在我与一些有过CUDA经验的人们交谈中,他们往往提到一些小的渐进步骤。比如与标准C的集成,用户只需要将现有的C代码逐步加入CUDA技术。通常这种改进会使得用户在进行一小部分的工作就能获得很大的收益。也就是说,用户不用将整个代码全拆开去实验CUDA是否能带来加速。

  最少或者零硬件的入门成本

  让人们尝试新事物是困难的。尤其如果有新的硬件要求是“是否可行”,那么许多用户很有可能说服自己不去投资一个新概念。从CUDA来说,从Nvidia的显卡入手是个好的选择。

  作者Douglas Eadline, Ph.D.,是Linux Magazine负责高性能计算的高级编辑

 

0