当前位置:文档之家› 基于CUDA的细粒度并行计算模型研究

基于CUDA的细粒度并行计算模型研究

总第283期 

2013年第5期 计算机与数字工程 Computer&Digital Engineering Vo1.41 No.5 8O1 

基于CUDA的细粒度并行计算模型研究 

肖汉 肖波。 冯娜 杨锦锦 

(1_郑州大学信息工程学院郑州450001)(2.郑州师范学院信息科学与技术学院郑州450044) 

(3.郑州二中郑州450002)(4.郑州市档案馆郑州450007) 

摘要作为应用软件模型和计算机硬件之间的桥梁,编程模型在计算机领域的重要性不言而喻。但随着具备细粒度并行计算能力的 

图形处理器(GPU)进入主流市场,与之相适应的编程模型发展却相对滞后。Nvidia在GeForce 8系列显卡上推出的统一计算设备架构 

(CUDA)技术,使得通用计算图形处理单元(GPGPU)从图形硬件流水线和高级绘制语言中解放出来,开发人员无须掌握图形学编程方法即 

可在单任务多数据模式(SIMD)下完成高性能并行计算。论文从特性、组成和并行架构等几个方面对CUDA并行计算模型进行了研究,充 

分表明基于GPU进行高性能并行计算,是适应目前大规模计算需求的一个重要发展途径。 

关键词 图形处理器;图形处理器的通用计算;统一计算设备架构;细粒度并行计算;单指令多数据 

中图分类号TP391 

Fine—Grained Parallel Computing Model Based on CUDA 

XIAO Han ’ XIAO Bo。FENG Na YANG Jinjin (1.School of Information Engineering,Zhengzhou University,Zhengzhou 450001) 

(2.School of Information Science and Technology,Zhengzhou Normal University,Zhengzhou 450044) 

(3.Zhengzhou No.2 Middle School,Zhengzhou 450002)(4.Zhengzhou Archives,Zhengzhou 450007) 

Abstract As a bridge between natural model of an application and hardware model of computer,programming model is important in 

computer industry.Nevertheless,evolution of programming mode1 could not suit already boosted GPU which have fine-grained parallel com— 

puting ability.The new launch of CUDA technology by NVIDIA GeForce 8 Graphics has freed GPGPU technology from the graphics fixed 

pipeline and high—level shader language,allowing the design and implementation of SIMD parallel algorithms on a much more simple way than 

previous method based on texture rendering.This paper focuses on finmgrained parallel computing model from character,composition and 

parallel architecture of CUDA.It illustratc's 1hal high performance computing based on GPGPU technology is an important direction of devel— 

opments to meet the requirements of large 【al e computing. Key Words graphic processor unit((;I 1 J).general purpose computing on graphics processing units(GPGPU)。compute unified device 

architecture(CUDA),finmgrained parallel computing,single instruction multiple data(SIMD) 

Class Number TP39】 

1 引言 

由于高性能图形计算需求的推动,GPU技术发展极为 

迅速。现在的GPU从固定图形处理流水线发展到了可编程 

图形处理流水线,已经发生了质的飞跃,并成为绝对的计算 

主力,其计算性能的发展速度远超过CPU计算性能的发展 

速度。由于具有由高内存带宽驱动的多个核心,今天的 

GPU为图像处理提供了难以置信的资源。从图1可知,目前 

主流CPU的浮点运算能力只有100GFL()P/S,而N、,II)IA 

GF100内核的GPU已超过1TFI ̄)P/s的浮点运算速度_1]。 

2 CUDA简介 

CUDA是一种新型硬件和软件的统一计算设备架构。 目前,NvIDIA仅对基于Tesla架构的GPU,包括GeForce、 

Quadro和Tesla等一系列显卡开放CUDA功能。CUDA 

把GPU作为数据并行计算设备,在GPU上用于进行计算 

的发放和管理,而无需将其映射到图像API上。它是一个 

并行编程模型和一个软件编程环境,它主要就是为了帮助 

广大的程序员来更好地开发平滑扩展的并行程序[2]。为了 

简化开发,CUDA允许程序员将CPU和GPU的代码混合 

记录到一个程序文件中。操作系统的多任务机制负责管理 

多个并发运行的CUDA和图像应用程序对GPU的访问。 

CUDA采用C语言作为编程语言来提供大量的高性 

能计算指令开发能力,使开发者能够在GPU的强大计算能 

力的基础上建立起一种效率更高的密集数据计算解决方 

案。CUDA是业界的首款并行运算语言,而且其非常普及 

*收稿日期:2012年11月5日,修回日期:2012年12月26日 基金项目:国家自然科学基金项目(编号:41171357);中国博士后科学基金项目(编号:2012M510176);河南省信息技术教育研究项目 

(编号:ITE1213O)资助。 

作者简介:肖汉,男,博士后,教授,研究方向:遥感影像处理、并行计算。肖波,女,硕士研究生,研究方向:计算机教育、高性能计算。 

冯娜,女,研究方向:档案保护技术。杨锦锦,女,硕士研究生,研究方向:档案管理技术。

 802 肖 汉等:基于CUDA的细粒度并行计算模型研究 第41卷 

化,目前有高达1亿的PC用户可以支持该语言嘲。 

Theoretica1 GFLOP/s 

._NVIDIA GPU Single Precision I GeForeGTX5 80 _』+NVIDIA GPUDoublePrecision I J 

f+1 Intj ./SinglePrecijsion GeForeGTX4Inte CPUDoublePrec sion 

/ 

x 

G。 。 。ss。。GTx,/ es a C

.2。s。 

G。 。 。 。。GTx// 。甜 。 

G。 wo0d遒 :! !; a 

图1 CPU和GPU的计算能力比较 

3 GPU进行通用计算 

GPU与CPU拥有不同的核心架构,CPU的架构是有 

利于X86指令集的串行架构,CPU从设计思路上适合尽可 

能快地完成一个任务。对于GPU来说,它的任务是在屏幕 

上合成显示数百万个像素的图像也就是同时拥有几百万 

个任务需要并行处理,因此GPU被设计成可并行处理很多 

任务,而不是像CPU那样完成单任务。 

3.1高密集的运算 

由于图形卡内部的内存接口位宽大于CPU上的位宽, 

如GeForce FX的内存位宽达256位,显然高于CPU上32 

位的位宽,这样整个计算的带宽大大提高。GPU通常具有 

更大的内存带宽,它决定了显存和图像处理器间数据传输 

的速度,如图2所示。GeForce 8800GTX具有86.4GB/s的 

内存带宽,而目前高阶CPU的内存带宽则在1OGB/S左 

右L4j。GPU相对于CPU来说,更适应传输大块的数据,虽 

然CPU上有Cache以加速整个计算过程,但CPU上的 

Cache相对于图形卡显存来说太小,一般只有64KB,而现 

在的显存大多都在64M以上。 

∞ 0 

≥ 

0 吕 100 回 0JU“ 

/ 

/ 

N 4 NV20/ HaDert0wn r,

 ̄Nonh 。。d Pres ! 丝一 

图2 CPU和GPU的存储器带宽 

3.2图形渲染的高度并行性 

这一功能主要是通过多个渲染管道和RGBA四个颜 

色通道同时计算来体现的,另外在一个时钟周期内可以同 

时获取两个甚至更多纹理。CUDA平台的顶点和像素计算 

单元是动态分配的,具有负载均衡机制。它通过运用显卡 

内的统一着色处理器和并行计算统一起来了,因此硬件效 率较高。 

3.3线程的不同 

GPU中的线程是一种非常轻量级的线程,在GPU上 

会有成百个线程等待执行,创建线程的开销非常小,如一个 

顶点计算中要做一次两个矩阵的乘法运算,每个元素的相 

乘操作都会作为一个线程的任务提交到GPU中。而CPU 

中的线程是一种重量级的线程,通过执行和关闭通道来交 

换线程,以提供多线程能力。另一方面,对于CPU来讲, 

CPU通过线程池管理的线程不过数十个。16个线程就能 

将四核CPU的整个计算单元充满,然而支持CUDA的 

GPU却需要上千个线程,才能充满效率[5]。 

3.4多核计算平台 

CPU以多个适当复杂度、相对低功耗内核并行工作, 

配置并行硬件资源提高处理能力。而现在GPU当中核心 

的数量是以百来计算的,GeForce 8800GTX包含了128个 

流处理器,频率为1.35GHz。2010年3月,NVIDIA发布 

GeForce GTX 580拥有512个主频为2.5GHz的流处理 

器。在GPU里面用的是群核l6]。 

4 CUDA体系结构 

4.1 CUDA组成 

2007年7月,随着一系列NVIDIA Tesla GPU计算解 

决方案的发布,NVIDIA公司宣布提供NVIDIA CUDA 1.0 

版本的C语言编译器和软件开发套件,还支持许多C++ 

的特性。结合GPU运算技术和CUDA软件开发环境,为 

对运算能力要求极高的计算密集型应用程序提供了极具弹 

性的大型并行计算平台[7]。CUDA软件堆栈(如图3所示) 

包括一个计算专用的运行时驱动程序,一个可访问GPU上 

并行计算资源的编译器即运行期环境,以及一套针对CU— 

DA开发的优化科学计算程序库 CUFFT和CUBLAS。 

图3 CUDA软件堆栈 

4.2 GPU并行架构 

4.2.1设计哲学不同 

回圜圜 

[二二互三二二] 

翳露CPll蕈lU l8墓 翳l露l霾l謇雪 

GPU 

图4 CPU/GPU架构比较 由于GPU处理的首要 

目标是运算以及数据吞吐量, 

而CPU内部晶体管首要目的 

是降低处理的延时以及保持 

管线繁忙。因此,GPU采用 

了更多的晶体管,这些晶体管 

是专用于数据处理,而不是用 

于数据高速缓存和流控制的, 

如图4所示¨8j。GTX 200 

GPU上有8O 的晶体管用作运算,和CPU上大部分面积 

(>7O%)都被缓存所占据有所不同,估计在CPU上有2O% 

的晶体管是用作运算的。这也决定了GPU在密集型计算

相关主题