GPU:高度并行化、多线程、多核处理器

和大家一起来学习下CUDA!

市场迫切需要实时、高清晰度的 3D 图形,可编程的 GPU 已发展成为一种高度并行化、多线程、多核的处理器,具有杰出的计算功率和极高的存储器带宽,如图 1-1 所示。[attach]650629[/attach]

图1-1. CPU 和 GPU 的每秒浮点运算次数和存储器带宽
CPU 和 GPU 之间浮点功能之所以存在这样的差异,原因就在于 GPU 专为计算密集型、高度并行化的计算而设计,上图显示的正是这种情况,因而,GPU 的设计能使更多晶体管用于数据处理,而非数据缓存和流控制,如图 1-2 所示。[attach]650630[/attach]

图 1-2. GPU 中的更多晶体管用于数据处理
更具体地说,GPU 专用于解决可表示为数据并行计算的问题——在许多数据元素上并行执行的程序,具有极高的计算密度(数学运算与存储器运算的比率)。由于所有数据元素都执行相同的程序,因此对精密流控制的要求不高;由于在许多数据元素上运行,且具有较高的计算密度,因而可通过计算隐藏存储器访问延迟,而不必使用较大的数据缓存。
数据并行处理会将数据元素映射到并行处理线程。许多处理大型数据集的应用程序都可使用数据并行编程模型来加速计算。在 3D 渲染中,大量的像素和顶点集将映射到并行线程。类似地,图像和媒体护理应用程序(如渲染图像的后期处理、视频编码和解码、图像缩放、立体视觉和模式识别等)可将图像块和像素映射到并行处理线程。实际上,在图像渲染和处理领域之外的许多算法也都是通过数据并行处理加速的——从普通信号处理或物理仿真一直到数理金融或数理生物学。
CUDA 编程模型非常适合公开 GPU 的并行功能。最新一代的 NVIDIA GPU 基于 Tesla 架构(在附录 A 中可以查看所有支持 CUDA 的 GPU 列表),支持 CUDA 编程模型,可显著加速 CUDA 应用程序。

[ 本帖最后由 林俊熙 于 2010-2-4 16:20 编辑 ]

:try:

:slight_smile: