|
先发表声明,我的内容为原创,是近期对CUDA技术跟踪的一点总结,并非网络拷贝!!!。很多数据及内容依据NVIDIA的官方文档。
一、什么是CUDA?
CUDA是Compute Unified Device Architecture,统一计算设备架构,是NVIDIA提出的一种硬件架构,NVIDIA的GeForce显示处理器芯片产品全都基于CUDA架构设计。CUDA架构最主要的包含两个方面:第一是ISA指令集架构;第二是硬件计算引擎。实际上它就是硬件和指令集,这两个方面是CUDA的架构。
CUDA是NVIDIA的GPU计算引擎。它使用“C for CUDA”(带CUDA扩展的C语言)进行编程,通过PathScale的Open64 C编译器完成编译,生成的代码由GPU负责执行。
CUDA架构支持一些第三方计算接口,包括OpenCL和DirectCompute。
二、CUDA支持的GPU包括:
了解这一点在开发上有用,至少你需要清楚你的PC是否支持CUDA技术。
Nvidia GeForce
GeForce GTX 295、GeForce GTX 285、GeForce GTX 280、GeForce GTX 275、GeForce GTX 260、GeForce GTS 250、GeForce GTS 240、GeForce GT 240、GeForce GT 220、GeForce 210/G210、GeForce 9800 GX2、GeForce 9800 GTX+、GeForce 9800 GTX、GeForce 9800 GT、GeForce 9600 GSO、GeForce 9600 GT、GeForce 9500 GT、GeForce 9400 GT、GeForce 9400 mGPU、GeForce 9300 mGPU、GeForce 9100 mGPU、GeForce 8800 Ultra、GeForce 8800 GTX、GeForce 8800 GTS、GeForce 8800 GT、GeForce 8800 GS、GeForce 8600 GTS、GeForce 8600 GT、GeForce 8600 mGT、GeForce 8500 GT、GeForce 8400 GS、GeForce 8300 mGPU、GeForce 8200 mGPU、GeForce 8100 mGPU
Nvidia GeForce Mobile
GeForce GTX 280M、GeForce GTX 260M、GeForce GTS 260M、GeForce GTS 250M、GeForce GT 240M、GeForce GT 230M、GeForce GT 220M、GeForce G210M、GeForce GTS 160M、GeForce GTS 150M、GeForce GT 130M、GeForce GT 120M、GeForce G110M、GeForce G105M、GeForce G102M、GeForce 9800M GTX、GeForce 9800M GTS、GeForce 9800M GT、GeForce 9800M GS、GeForce 9700M GTS、GeForce 9700M GT、GeForce 9650M GT、GeForce 9650M GS、GeForce 9600M GT、GeForce 9600M GS、GeForce 9500M GS、GeForce 9500M G、GeForce 9400M G、GeForce 9300M GS、GeForce 9300M G、GeForce 9200M GS、GeForce 9100M G、GeForce 8800M GTX、GeForce 8800M GTS、GeForce 8700M GT、GeForce 8600M GT、GeForce 8600M GS、GeForce 8400M GT、GeForce 8400M GS、GeForce 8400M G、GeForce 8200M G
Nvidia Quadro
Quadro FX 5800、Quadro FX 5600、Quadro FX 4800、Quadro FX 4700 X2、Quadro FX 4600、Quadro FX 3800、Quadro FX 3700、Quadro FX 1800、Quadro FX 1700、Quadro FX 580、Quadro FX 570、Quadro FX 380、Quadro FX 370、Quadro NVS 450、Quadro NVS 420、Quadro NVS 295、Quadro NVS 290、Quadro Plex 1000 Model IV、Quadro Plex 1000 Model S4
Nvidia Quadro Mobile
Quadro FX 3700M、Quadro FX 3600M、Quadro FX 2700M、Quadro FX 1700M、Quadro FX 1600M、Quadro FX 770M、Quadro FX 570M、Quadro FX 370M、Quadro FX 360M、Quadro NVS 320M、Quadro NVS 160M、Quadro NVS 150M、Quadro NVS 140M、Quadro NVS 135M、Quadro NVS 130M
Nvidia Tesla
Tesla S1070、Tesla C1060、Tesla C870、Tesla D870、Tesla S870
三、第三方封装语言
CUDA通过很多爱好者的努力,已经支持如下语言:Python、Fortran、Java和Matlab。
比如PyCUDA库,可让Python编程者用Python语言访问CUDA并行计算API。
JCuda库则允许从Java程序与CUDA运行时和驱动API交互。
JCublas库则使得Java程序员可使用CUBLAS(基本线性代数子程序的实现)。
JCufft提供了通过Java使用CUFFT的方法,CUFFT是NVIDIA CUDA的快速傅里叶转换的实现。
四、文档
开发文档,下载地址:http://www.nvidia.cn/object/cuda_develop_cn.html
开发文档目前最新版本为2.2版。
《CUDA 2.2 Quickstart Guide》
《CUDA 2.2 Programming Guide》
《CUDA 2.2 Reference Manual》
《CUDA 2.2 Toolkit Release Notes》
《CUDA 2.2.1 SDK Release Notes》
《CUDA Visual Profiler v1.2 Readme》
《Documentation for CUDA BLAS (CUBLAS) Library》
《Documentation for CUDA FFT (CUFFT) Library》
CUDA Plug-in Documentation
《MathWorks MATLAB® Plug-in》
《CUDA Photoshop Plug-ins (documentation): Source code examples for Windows and Mac OS (for CUDA 1.1 and later)》
《CUDA Photoshop Plug-ins: Documentation (for CUDA 1.1 and later)》
五、开发工具
NVIDIA为CUDA架构推出了一系列综合的开发工具。请下载安装文件并按照规定顺序进行安装。
1. CUDA驱动程序
2. CUDA工具包
3. CUDA软件开发包代码实例
CUDA工具包3.0 Beta版:http://forums.nvidia.com/index.php?showtopic=149959 ,它支持Windows XP、Vista、Win7、32位及64位的Linux、MacOS等。
六、CUDA的发展趋势
CUDA的最初定位是实时、高清3D图形、可编程的图形处理器单元,也即GPU,逐步发展、演进到高度并行、多线程、多核处理器的通用并行计算处理器。换句话说,早期可以把CUDA技术定位为专业级图形图像处理,而到了后期,则必须把CUDA归纳到高性能计算领域。
七、有趣的问题集
1)GPU的浮点计算能力为什么比CPU强太多?
CPU和GPU的浮点计算能力差异大的主要原因是:GPU是专为密集运算、高度并行计算而设计(比如图形渲染就需要大量的密集运算、并行运行)。与CPU相比,GPU内部更多的晶体管用于数据处理而不是数据缓存或流量控制。因此GPU是特别适合处理可作为数据并行计算。如图所示:(GPU&CPU.png)
2)CUDA开发就是C语言编程开发?
这么说是不准确的。虽然目前CUDA技术使用C作为编程语言,但是其设计架构是支持多种语言和多种应用编程接口的,在不久的未来,会支持Fortran、C++、OpenCL、.NET等语言。
如图所示:(Language.png)
最后,希望以上内容为想学习CUDA架构技术的爱好者起到抛砖引玉的作用!!!
[ 本帖最后由 jieforest 于 2010-1-9 01:11 编辑 ] |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|