NVIDIA CUDA统一计算设备架构编程手册(一)

2009-6-18 作者: icuda 来源: icuda

关键字: NVIDIA CUDA GPU 

  CUDA 介绍

  1.1作为数据并行计算设备的图像处理器单元

  仅仅几年的时间,可编程图像处理器单元已经发展成为绝对的计算主力,如图1-1所示。由于具有由高内存带宽驱动的多个核心,今天的GPU为图像和非图像处理提供了难以置信的资源。

  发展背后的主要原因是GPU是特定于计算密集的、高并行的计算,而这正是图像渲染所需要的,因此GPU设计了更多的晶体管专用于数据处理,而非数据高速缓存和流控制,如图1-2所示。

  具体来说,GPU专用于解决数据并行计算(同一程序在许多数据元素上并行执行)、具有高运算密度(算术运算与内存操作的比例)的问题。因为同一程序为每个数据元素执行,所以对高级流控制具有较低的要求;又因为在许多数据元素上执行并具有高运算密度,所以内存访问延迟可以使用计算而非大的数据高速缓存来隐藏。

  数据并行处理将数据元素映射到并行处理线程。处理大型数据集合(比如数组)的许多应用程序可以使用数据并行编程模型来加速计算。在3D渲染中,大型像素和顶点集合映射到并行线程。同样的,图像和媒体处理应用程序,比如渲染图像的后期处理、视频编码和解码、图像扩展、立体视觉、模式识别,可以将图像块和像素映射到并行处理线程。事实上,图像渲染和处理以外的许多算法也是可由数据并行处理来加速,范围涉及一般的信号处理或物理模拟,直至财务计算或计算生物学。

  但是,直到现在,获得GPU中的所有计算能力并将其有效用于非图像应用程序中仍然是一个难题:

  GPU只能通过图像API进行编程,从而把较高的学习曲线强加给新手,并且为非图像应用程序增加了不必要的API开销。

  GPU DRAM可以使用一般方式来读取,即GPU程序可以从DRAM的任何部分收集数据元素,但不能使用一般方式来写入,即GPU程序不能将消息分散到DRAM的任何部分,这就大大降低了CPU上易于获取的编程灵活性。

  一些应用程序受到DRAM内存带宽的瓶颈限制,未充分利用GPU的计算功能。

  本文档描述了一种新颖的硬件和编程模型,直接解决这些问题,并将GPU暴露为一种真正通用的数据并行计算设备。




责任编辑:熊东旭