来源:HARDSPELL/硬派网
[原创]
2008-06-21
作者:HARDSPELL
编辑:付昭
我要投稿
前面我们展示了很多基于GPU加速的效果展示,其实这些程序大部分都是依靠CUDA来实现的GPU加速,GPU的性能非常强大,这是NVIDIA早就意识到的问题,早在G80时代,NVIDIA就提出了CUDA的概念,只不过因为那时候CUDA还未成型,所以没有公布,而现在,基于CUDA的应用程序越来越多,因此伴随着GTX200系列芯片的发布,CUDA也同时正式大范围的推广并介绍给普通消费者。在这里我们要声明,那就是CUDA不是专门为GTX200开发的,而是基于NVIDIA统一架构的GPU理论上都能支持,我们今天介绍的9800GTX+也是利用CUDA进行非3D运算的强将。
GPU的性能非常强大,因此无论Intel还是AMD都看到了这一点,不过因为自身处理器发展成熟的缘故,所以这两家处理器公司都采用了GPGPU的提法,也就是基于x86处理器架构的平台,它与NVIDIA概念上的区别就是:它的计算仍然通过API送入GPU的,传统的GPGPU应用往往要了解OpenGL编程或者DirectX编程。
而NVIDIA基于CUDA平台的解决方案,如果你的应用不涉及OpenGL或者DirectX的话就可以不用理会那些API。也就是说以前的GPGPU进行通用计算是通过把这些问题转换成为图形计算送到GPU中完成的,而现在基于CUDA则可以直接调用GPU的计算资源,成为高性能计算的软件开发环境。

那么CUDA究竟是什么呢?CUDA(Compute Unified Device Architecture)是显卡厂商NVIDIA推出的一个基于其自身GPU的运算平台,它可以让显卡可以用于图像计算以外的目的。CUDA工具集的核其实心是一个C语言编译器,CUDA开发环境的具体内容包括:
- nvcc C语言编译器
- 适用于GPU(图形处理器)的CUDA FFT和BLAS库
- 分析器
- 适用于GPU(图形处理器)的gdb调试器(在2008年3月推出alpha版)
- CUDA运行时(CUDA runtime)驱动程序(目前在标准的NVIDIA GPU驱动中也提供)
- CUDA编程手册
CUDA开发者软件开发包(SDK)提供了一些范例(附有源代码),以帮助使用者开始CUDA编程。这些范例包括:
- 并行双调排序
- 矩阵乘法
- 矩阵转置
- 利用计时器进行性能评价
- 并行大数组的前缀和(扫描)
- 图像卷积
- 使用Haar小波的一维DWT
- OpenGL和Direct3D图形互操作示例
- CUDA BLAS和FFT库的使用示例
- CPU-GPU C—和C++—代码集成
- 二项式期权定价模型
- Black-Scholes期权定价模型
- Monte-Carlo期权定价模型
- 并行Mersenne Twister(随机数生成)
- 并行直方图
- 图像去噪
- Sobel边缘检测滤波器
- MathWorks MATLAB插件