未来就在眼前:CUDA的实用化
而在今天,NVIDIA不仅推出了具有强悍3D性能的Geforce GTX 280,还为我们送来了并行处理能力更强的Geforce GTX 280,随其一并到来的还有全新CUDA 2.0。
● CUDA简介
说了半天CUDA也许很多读者对它仅是一知半解,而且很多用户很容易将它与GPGPU混淆,下面笔者将会对其做一个简介。
CUDA较GPGPU更为亲民
虽然GPGPU也是由NVIDIA提出并且要实现的目的也相同,但是CUDA是一种更加优化、更加易于操作使用的并行处理技术。CUDA全称Compute Unified Device Architecture,它不需要像GUGPU一样基于图形API运算,这样的设计降低了开发者的要求。首先减免了软件开发者使用CUDA必须了解图形API的痛苦,其次CUDA专用API更接近C语言和Fortran语言,能够令绝大多数软件开发者在极短时间内上手。
● 为何GPU更适合高密度并行计算
GPU相对CPU有巨大的并行计算优势
由于图形渲染需要高密度、并行计算,因此GPU不会像CPU一样将更多的晶体管投入到数据缓存和流量控制,而是将绝大多数晶体管用于数据处理(例如Geforce GTX 280的240个流处理器)。图形渲染这点需求上与很多科学运算不谋而合,GPU的多流处理器在解决一个问题上实现独立并行高速处理,可以大大降低运算复杂度,并且多数据元素高运算密度可以近似忽略内存访问的延迟,这也就为GPU应用于科学计算奠定基础。
大规模并行处理在以上领域具有优势
实际上,在图形渲染和处理领域外还有很多算法同样可以通过并行数据处理得到加速,从一般信号处理或物理模拟、到金融计算或者生物计算等。目前主要应用于数学运算、金融分析、医学检查、气像预测、电子线路设计、生物分子结构分柝、光学模拟运算等传统借助超级电脑作运算的领域。
● 如何构建运行CUDA平台
如果想要使用CUDA技术,并不是安装基于CUDA的软件即可,还需要硬件及驱动的支持,目前支持CUDA技术的GPU请看下表:
GeForce | Tesla | Quadro |
9800 GX2 | C870 | FX 5600 |
9800 GTX | D870 | FX 4600 |
9600 GT | S870 | FX 3700 |
8800 Ultra | FX 1700 | |
8800 GTX | FX 570 | |
8800 GTS | FX 370 | |
8800 GT | NVS 290 | |
8800 GS | FX 3600M | |
8600 GTS | FX 1600M | |
8600 GT | FX 570M | |
8500 GT | FX 360M | |
8400 GS | Quadro Plex 1000 Model IV | |
8800M GTX | Quadro Plex 1000 Model S4 | |
8800M GTS | NVS 320M | |
8700M GT | NVS 140M | |
8600M GT | NVS 135M | |
8600M GS | NVS 130M | |
8400M GT | ||
8400M GS | ||
8400M G |
上表为目前已发布并支持CUDA的GPU,当然还要包括今天新鲜出炉的——Geforce GTX 280。
俗话说“万事俱备、只欠东风”,拥有了支持CUDA的显卡还需要专用驱动的搭配。目前Geforce GTX 280需要ForceWare 177.34,非Geforce GTX 280显卡需要174.55。
驱动程序拆包后可见CUDA的dll文件
在支持CUDA的驱动中我们能够看到nvcuda.dl_的专有文件。