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

ZDNet软件频道时间2008-07-03作者:huawenguang | PhysDev论坛
本文关键词:统一计算 NVIDIA CUDA GPU

第1章 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暴露为一种真正通用的数据并行计算设备。

1.2 CUDA:一种在GPU上进行计算的新架构

CUDA表示Compute Unified Device Architecture(统一计算设备架构),是一种新型的硬件和软件架构,用于将GPU上作为数据并行计算设备在GPU上进行计算的发放和管理,而无需将其映射到图像API。它可用于GeForce 8系列、Tesla解决方案和一些Quadro解决方案(详细信息请参阅附录A)。操作系统的多任务机制负责管理多个并发运行的CUDA和图像应用程序对GPU的访问。
CUDA软件堆栈由几层组成,如图1-3所示:硬件驱动器,应用编程接口(API)及其runtime库,还有两个更高层的通用数学库CUFFT和CUBLAS,这两个库在单独的文档中介绍。硬件已经设计为支持轻量级驱动和runtime层,以达到高性能。

CUDA API包括了对C编程语言的扩展,以达到最低的学习曲线(参见第4章)。
CUDA提供了一般的DRAM内存寻址以实现更多的编程灵活性,如图1-4所示:分散和收集内存操作。从编程角度看,这转换为就像在CPU上一样在DRAM的任何位置读取和写入数据的能力。

CUDA提供了具有非常快速的一般读写访问的并行数据高速缓存或芯片共享内存,线程可以使用它来互相共享数据(参见第3章)。如图1-5所示,应用程序可以利用它来最小化对DRAM的过度提取和巡回,从而降低对DRAM内存带宽的依赖程度。

您看到此篇文章时的感受是:
支持
愤怒
无聊
暴汗
养眼
炒作
不解
标题党
搞笑
用户评论
用户名
评论内容
发表时间
- 发表评论 -
匿名
注册用户

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134