|
在20世纪80年代,我还是Los Alamos National Laboratory的科研人员,当时我有幸使用了拥有多达65,536个平行处理器的Thinking Machines超级计算机。CUDA被证明是天生用于现代大量平行(即高线程)环境的框架。它的性能优势显而易见。我的一段生产代码,现在用CUDA编写并且运行在NVIDIA GPU上,与2.6-Ghz四核Opteron系统相比,具有明显的线形伸缩和几乎两个数量级的速度提升。
启用CUDA的图形处理器作为主计算机内的联合处理器运行。这意味着每个GPU都被认为有其自己的内存和处理元素,它们是与主计算机分开的。要进行有效的工作,数据必须在主计算机的内存空间和CUDA设备之间传输。因此,性能结果必须包括IO时间才更有意义。同事们喜欢将其称为“诚实的数据”,因为它们会更准确地反映将要交付生产的性能应用程序。
我坚持与现有技术相比,一到两个数量级的性能提升是一个巨变,可以在很大程度上改变运算的某些方面。例如,以前可能需要花费一年时间的运算任务现在只要几天就可以完成,几个小时的运算突然变得可交互了,因为使用新技术它们可以在几秒钟内完成,过去不易处理的实时处理任务现在变得极易处理。最后,它为具有正确技能集和能力的顾问和工程师们提供了良好的机会,使他们可以编写高线程(或大量平行)软件。对于您来说,这种计算能力又能给您的职业、应用程序或实时处理需求带来哪些好处呢?
开始不需要任何成本,您只需要从CUDA Zone 主页下载CUDA(查找”获取CUDA”)。然后,按照您的特定的操作系统安装指导操作。您甚至不需要图形处理器,因为你可以直接使用软件模拟器,在你的笔记本或者工作站上运行,开始工作。当然,使用启动CUDA的GPU,可以获得更好的性能。或许你的计算机应该有一个这样的GPU了。在CUDA Zone 主页上查看支持CUDA的GPU链接(支持CUDA的GPU包括共享的片上内存和线程管理)。
如果要购买一个新的图形处理器卡,我建议您依次阅读以下文章,因为我将探讨不同的硬件特性(如内存带宽、注册数量、原子操作等)将如何影响应用程序的性能。这样有助于您为应用程序选择恰当的硬件。另外,CUDA Zone论坛提供了关于CUDA各个方面的大量信息,包括购买哪些硬件。
安装完毕后,CUDA Toolkit将提供一个合理的C语言程序开发工具集,它包括:
· nvcc C编译器;
· GPU 的CUDA FFT和BLAS库
· 性能分析器
· alpha 版本(截至2008年3月)的GPU的gdb调试器
· CUDA运行时驱动程序(现在还可以在标准的NVIDIA GPU驱动程序中得到)
· CUDA编程手册
nvcc C编译器完成了将C代码转换成将运行在GPU或模拟器上的可执行程序的大部分工作。幸好,汇编语言编程不要求达到很高的性能。下面的文章将介绍从其它高级语言,包括C++、FORTRAN和Python使用CUDA的内容。我假设您熟悉C/C++。不需要有平行编程或CUDA经验。这与现有CUDA文档是一致的。
创建和运行CUDA C语言程序与创建和运行其它C编程环境的工作流是一样的。面向Windows和Linux环境的明确构建和运行说明在CUDA文档中。简言之,这一工作流就是:
a. 使用最喜欢的编辑器创建或编辑CUDA程序。注意:CUDA C 语言程序的后缀为.cu。
b. 使用nvcc编译程序创建可执行程序(NVIDIA提供了带有示例的完整makefiles。通常用于CUDA设备时您只需键入make,用于模拟器时只需键入make emu=1)。 |
|