文件名称:CUDA高性能计算并行编程
文件大小:423KB
文件格式:PDF
更新时间:2017-05-01 04:46:48
cuda
1. CUDA简介 GPU是图形处理单元(Graphic Processing Unit)的简称,最初主要用于图形渲染。自九十年代开始,GPU的发展产生了较大的变化,NVIDIA、AMD(ATI)等GPU生产商敏锐的观察到GPU天生的并行性,经过他们对硬件和软件的改进,GPU的可编程能力不断提高,GPU通用计算应运而生。由于GPU具有比CPU强大的计算能力,为科学计算的应用提供了新的选择。 最早的GPU的开发直接使用了图形学的API,将任务映射成纹理的渲染过程,使用汇编或者高级着色器语言Cg,HLSL等编写程序,然后通过图形学API执行(Direct3D和OpenGL),这样的开发不仅难度较大,而且难以优化,对开发人员的要求非常高,因此,传统的GPU计算并没有广泛应用。 2007年6月,NVIDIA公司推出了CUDA(Compute Unified Device Architecture),CUDA不需要借助图形学API,而是采用了类C语言进行开发。同时,CUDA采用了统一处理架构,降低了编程的难度,使得NVIDIA相比AMD/ATI后来居上。相比AMD的GPU,NVIDIA GPU引入了片内共享存储器,提高了效率。这两项改进使CUDA架构更加适合进行GPU通用计算。由于这些特性,CUDA推出后迅速发展,被应用于石油勘测、天文计算、流体力学模拟、分子动力学仿真、生物计算、图像处理、音视频编解码等领域。 由于采用的是C/C++编译器为前端,以C/C++语法为基础设计,因此对熟悉C系列语言的程序员来说,CUDA的语法比较容易掌握。CUDA只对ANSI C进行了最小的必要扩展,以实现其关键特性--线程按照两个层次进行组织、共享存储器和栅栏同步。 这些关键特性使得CUDA拥有了两个层次的并行:线程级并行实现的细粒度数据并行,和任务级并行实现的粗粒度并行。