[转]CUDA编程技术扫盲贴

http://hpcbbs.it168.com/thread-216-1-1.html
问:什么是CUDA?
答:CUDA 是 NVIDIA 的 GPGPU 模型,它使用 C 语言为基础,可以直接以大多数人熟悉的 C 语言,写出在显示芯片上执行的程序,而不需要去学习特定的显示芯片的指令或是特殊的结构。

问:NVIDIA公司为何开发CUDA
答:以前大家都听说过GPGPU,就是通用用途的GPUGPU随着3D图形处理越来越复杂,GPU规模也越来越大,后来GPU从计算角度来说,性能提升比CPU性能提升快很多。GPU计算能力这么强,除了做图形处理之外,还能进行其他应用,就是通用计算。
那个时候使用GPU计算很麻烦,那时候GPU完全是为图形进行设计的,它是一个非常专用的处理器,你要使用GPU 来做计算的话,你需要透过图形API进行,通过这种图形的API来访问GPU计算核心,你必须要把你的计算所需要的数据,通过API假设这种计算是3D的计算,然后你要走过一遍图形处理过程,才能得到计算结果。第一,编程非常复杂,第二,效率也不会达到很高。因为中间必须要走过渲染的过程。
但是对于真正需要并行计算的人,比如说科学家,可能让他们再学图形就是为难他们的事情,这些人都忙得要死。在这种情况下,把并行计算和图形结合起来,所以NVIDIA开发了CUDA



问:CUDA对于行业的价值是什么?
答:CUDA对于行业的价值,通过CUDA支持CUDAGPU,两者结合在一起,所有的厂商很容易利用GPU强大的计算能力做各种各样的并行计算工作,这就是最大的价值。它不需要你了解其他的,只需要有C语言编程能力就可以。C语言是最流行的语言,大家都会用。


问:CUDA是面向什么样的人群的,能够解决什么问题?
答:CUDA不仅仅是面向开发软件的人CUDA也有各种各样的程序,比如说玩游戏的人也可以从中得到很多好处,就是物理加速方面的计算。


问:如果我没有采用NV的产品,是否能从cuda的体系中受益?比如说,我现在的电脑,没有采用NV的硬件产品,我能否进行基于CUDA平台的开发?
答:没有用NVIDIA的显卡,也可以使用CUDA做一些开发工作,你可以进行开发的调试,我们可以用虚拟的显卡。另外CUDA可以支持多核CPU,这是我们最新支持的。你完全可以在CPU上编写,如果你有GPU,比CPU快很多,我们现在最新的支持已经在多核CPU上进行的。如果没有GPU,扩大程序也是可以编写的。 CUDA有一个最大的好处,就是不同于别的并行计算,CUDA的硬件成本非常非常低,现在CUDA两三百块钱在市场上多的不得了,而且速度有8000万左右,在很多的PC上可以进行,不管是工作站还是服务器。


问:cuda和其它的C编译环境有何区别 cuda编程的架构是怎样的?和其它的图形编程平台有何区别?
答:CUDA是专门针对GPU来进行编程的平台,它最大的特点,CUDA如果在GPU方面来说,是所谓的异构计算系统。它和CPU有很大的不同,CPU我们只是针对一个处理器计算,CUDA是针对GPU的,它在编辑的时候会把CPU代码和GPU代码分开,GPU代码编辑成工作代码,CPU还是需要其他的C语言编译系统来编译。这可能是最大的不同。CUDA一定是需要CPU来参与的,我们叫异构计算环节。所谓异构计算,就是CPUGPU两个架构是不一样的,但是他们共同协同动作来解决同一个问题。
至于说CUDADirectX的关系,对于CUDA来说,是不需要OPenGl的支持。


问:包含了CUDA架构的显卡,目前都支持哪些操作系统?也就是说,我是否能够编译出 for Linux或者Unix系统下运行的并行计算程序?
答:主流的操作系统WindowsVISTAXP,还有最新的win7,还有LINUXUNix,几乎所有的操作系统都包括了。CUDA2.0Beta已经嵌入到显卡的驱动程序,你使用了CUDA,就可以运用了CUDA各种各样的程序。


问:CUDA的库和做C语言编程的库如 ATL是否兼容?CUDA是否有容错和校验的机制?
答:CUDA的库和C语言的标准模板库是不一样的,而且CUDA今后会有容错和校验的机制。

posted on 2012-12-11 20:16  龙猫先生  阅读(268)  评论(0编辑  收藏  举报

导航