第一范文网 - 专业文章范例文档资料分享平台

CUDA显卡编程的架构及研究 - GPU与CPU的协同工作

来源:用户分享 时间:2025/7/30 16:52:04 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

CUDA显卡编程的架构及研究

晚结尾。在CUDA平台上一般有两种主要的时间测量方式,主机端测量和设备端测量。当然,还有采用CPU的计时器测量(很不精确,笔者已经将其彻底抛弃)。运行时间是我们衡量并行算法是否有用的最重要的指标,是第一生产力!

(2)算法的并行度

关于并行度,个人以为它更加是一种并行算法设计的评价。所谓算法的并行度,就是是指该算法中可并行执行的操作数。若处理器资源无限,则算法的并行度可理解为可用来做并行运算的处理器个数。但在实际的算法中并行度不会是固定不变的,只能限制在一定的执行步骤或时间范围内。并行度刻画的是一个并行算法的并行程度,反映了软件并行性与硬件并行性的匹配程度。

这就引出了一个与并行度相关的主要概念是粒度,一般而言,大的粒度意味着能独立并行运行的是大任务,算法的并行度就小,反之算法的并行度就大。对于CUDA而言,由于线程是轻量级线程,所以在尽可能的情况下让线程的并行度达到GPU最大的活动量(后面会解释活动线程个数的概念),也就是达到处理器的最大吞吐量。当然有时候为了减少冗余计算和有效利用存储器带宽,也可以使用粗粒度的并行方式,毕竟我们实际的情况是资源有限。

最后给出一个形式化定义,算法的平均并行度定义为假设并行算法可以在m个并行步骤内完成,第i步时算法的并行度为DOP(i),则算法的平均并行度为

这个定义可以用来评估你算法的一个整体资源使用情况,找到你并行算法的处理瓶颈之处。并行度小的地方,必然存在资源的空闲。我们后面会知道在Tesla架构下一个kernel函数占用整个GPU处理资源,如果并行度小,就会让处理资源空闲。相反并行度过大的时候,若不考虑CUDA资源的承载能力,就反而会让程序性能下降甚至执行失败,比如寄存器和共享存储器这样的稀缺资源。

(3)并行算法的成本

经济学上最经常出现的一个名词就是成本,当我们踏上并行处理这个靠效益吃饭的领域时,就不能再把自己当作象牙塔里阔佬了。我们要对节能,减排,经济,节约有深刻的认识。那么什么是并行算法的成本?下面的定义很直观,它就是并行算法的运行时间与并行算法所需的处理器个数的乘积,即

也就是说,成本等于最坏情况下求解某一问题时总的执行步数,其中包含了硬件和软件代价。对于我们CUDA程序而言(这里指单个GPU),每次执行占用的是处理器的全部资源,也就是说P是定值。我们的并行算法成本就是运行时间为主导,我们的目标就是在给定资源平台下让我们的时间降下来,成本下降就是效益啊!

(4)加速比,效率与加速比模型

- 12 -

CUDA显卡编程的架构及研究

笔者以为加速比是CUDA门外汉(比如说我们的客户)最关心的,我早年经常拿一些数据去唬人,GPU比CPU加速多少。但其实这个说法很不科学,也没有意义。由前面的并行算法成本就知道,运行时间才是评价和产生效益的关键,我的老板们都是很精明的,现在关心的都是你这个算法帧速率多少?还有没有可以优化的地方?那为什么我还要列出这个性能指标呢!因为它的理论模型对我们设计和评估并行算法还是很有借鉴意义的。

首先,加速比是衡量并行处理算法最传统的评价标准,体现了在并行计算机上运行并行算法求解实际问题所获得的效益。

加速比被定义为

其中Tl是最优串行算法在单处理器上的运行时间;Tp是并行算法在P个处理器上所需的时间。由这个定义就可以得到理论的最大加速比,这是我们自己给自己设定目标,以及在谈判桌上可以用到的。事实上,对于一个问题,如果按照某种条件,保持每个处理器的计算规模一定,并行算法的加速比Sp与处理器个数P成正比,则称该并行算法在该条件下,在该并行计算机上具有线性加速比。若在某些条件下,Sp>P,则称该并行算法在该条件下,在该并行计算机上具有超线性加速比。

但上面对加速比的定义比较适合用于理论分析,一般理论分析也比较困难,所以在实际应用中往往使用下式:

一般的人只了解加速比这个概念,但其实与之密不可分的重要性能指标并行处理效率却容易被忽视。

我们来稍稍分析下,加速比其实是一个忽视了处理资源的评价,举个例子同一个CUDA程序在GT9600上(8个多处理器)加速40倍,在GTS 250上(16个多处理器)是不是就会80倍呢?由前面的分析可以知道,我们所期望的是处理效率高的线性加速比或超线性加速比,那么就不能脱离当前的计算资源来评价加速效果。

理解了加速比和效率这两个定义,后头去看看前面关于加速级联策略的分析,就会很清楚这些评价指标对设计的重要意义。最后再来说说两个经典的并行加速比模型,了解它们的目的在于认识到并行算法如何突破一些设计瓶颈的思路。

首先,并行加速比模型作为一个度量并行处理性能的参数,用来表示并行求解一个实际问题所获得的性能,即相对单处理器上的串行处理而言使用并行处理所获得的性能。从问题规模的角度出发可将其分为固定规模问题和可变规模问题的加速比模型。

①Amdahl模型

其中f是串行所占比例,N为并行所占比例

- 13 -

CUDA显卡编程的架构及研究

由此模型可以看出无论处理器数目如何,加速比都不能超过1/f,这就意味着在当前问题的计算需求下,无论你如何增加处理器的个数都无法继续增大加速比。例如在我们遇到一些无法展开的迭代运算时,无论你的GPU上有多少个多处理器都无能为力。但不要过于悲观,此模型忽视了问题计算规模的变化,强调的是通过并行处理来缩短求解问题的时间。再看看下一个模型之前,我们要明白,Amdahl模型告诉我们在问题规模一定的情况下,我们要尽可能的让计算负载分布到所有的计算资源上去,通过最大化并行提高加速比。

②Gustafson模型

与Amdahl模型不同,此模型说明了应该随处理器数目的增加而增加问题的规模,强调的是在同样的时间内,通过并行处理能运行多大的运算量,即通过运行时间来限制问题规模的增长程度。刚刚那个很悲观的例子,就可以采用增加运算规模来提高加速比,事实上在实时系统上这是有现实意义的。比如CUDA上PCI-Express是一个突出的性能制约因素,但通过大块数据传输可以提高处理效率;对于一些并行度很小的处理环节通过增加数据规模来提高加速性能,比如原先一个并行度小的kernel只处理一帧,现在合并处理多帧,这也可以提高处理效率和整体加速比。

虽然Amdahl模型和Gustafson模型只是是从不同角度去看待并行处理,但却告诉我们并行算法在设计和评价中的一些重要思想。比如要最大化利用计算资源,但不要盲目增加处理器;在计算规模可变的情况下,算法的串行瓶颈可以通过数据规模的增加而忽略等。

1.4 多核时代的各路诸侯

随着新摩尔定律的产生,我们已经进入到了一个多核时代。本人所在学校的外面不远处有个网吧,取名为四核时代。网吧都如此了,何况在我们这些专业的IT领域里面。本章的内容第一目的在于科普教育,让我们一起看看当今的多核技术发展,通过一些比较让我们一起来看看多核GPU到底有些什么与众不同的地方。

首先,在多核处理器产生以前的并行处理主要以并行计算机和借助网络实现的大规模集群或分布式并行为主的两大派系。20世纪60年代初期,由于晶体管以及磁芯存储器的出现,处理单元的面积小型化,存储器也更小巧和廉价。这一时期出现了规模不大的共享存储多处理系统,就是我们所谓的大型机,典型代表IBM 360。与之相对应的是通常由数百数千甚至更多的处理器(机)组成的超级计算机,比如我国的天河-1A,速度全球第一,比第二名的美国国家实验室的计算机快30%,速度达到每秒2.5千万亿次运算。这两大类可以说是高性能计算领域的巨无霸。

- 14 -

CUDA显卡编程的架构及研究

另外一类可与之争锋的是借助网络实现的大规模集群或分布式并行计算。由于网络技术的高速发展,出现了以独立计算机连接组成的分布式并行处理系统——集群计算机。一个集群系统中的计算机节点可以是在一起的,也可以是物理上分离的,他们对于用户和应用程序来讲是透明的,如果只有一个单一的系统一样。这样就可以提供高性价比的服务,用来解决大型计算问题。随着技术的进一步发展,近年来产生了利用互联网上的计算机的 CPU 的闲置处理能力来解决大型计算问题的分布式计算系统——网格计算。网格计算把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终结果。相信大家都使用过迅雷,如果你用过离线下载,你会看到云端下载。这就是当今比较流行的云计算产物。云计算是网格计算、分布式计算、并行计算、网络存储、虚拟化等多种传统计算机技术和网络技术发展融合的产物。云计算在当今被称为是一种划时代的技术,因为它将数量庞大的廉价计算机放进资源池中,用软件容错来降低硬件成本,通过将云计算设施部署在各种能节省成本的区域,通过规模化的共享使用来提高资源利用率。国外代表性云计算平台提供商达到了惊人的10-40倍的性能价格比提升。不管有多么新潮的技术和名称,这一派系的高性能运算是以计算机网络资源为依托。

前面的两大门派,走的是高端路线,很难飞入寻常百姓家。多核处理器的出现打破了由大型机和网络集群式分布式系统的垄断,同时也使得并行算法和并行编程技术成为程序员不得不会的本领。

所谓多核处理器是指在一枚处理器中集成两个或多个完整的计算引擎。多核技术的产生源于工程师们认识到,仅仅提高单核芯片的速度会产生过多热量且无法带来相应的性能改善,同时单靠提高单核芯片速度的性价比也令人难以接受,速度稍快的处理器价格要高很多。作为处理器技术发展的先驱龙头企业,英特尔在1971推出的全球第一颗通用型微处理器4004,由2300个晶体管构成。这时,戈登摩尔提出了后来被业界奉为信条的“摩尔定律”——每过18个月,芯片上可以集成的晶体管数目将增加一倍。但到了2005年,当主频接近4GHz时,英特尔和AMD发现,速度也会遇到自己的极限:那就是单纯的主频提升,已经无法明显提升系统整体性能。以英特尔公司的奔腾系列为例,按照当时的预测,奔腾4在该架构下,最终可以把主频提高到10GHz。但由于流水线过长,使得单位频率效能低下,加上由于缓存的增加和漏电流控制不利造成功耗大幅度增加,3.6GHz奔腾4芯片在性能上反而还不如早些时推出的产品。所以,该系列只达到3.8G,就戛然而止。所以戈登摩尔本人似乎也依稀看到了“主频为王”这条

- 15 -

CUDA显卡编程的架构及研究 - GPU与CPU的协同工作.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c46pb81n8p15gf8w599g5_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top