已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 使用图形处理器进行通用计算是高性能计算的一个新的发展方向。n v i d i a 的c u d a 计算技术在图形处理器上提供了一个统一的开发平台,并成为目前应 用最广的一个标准。c u d a 平台包含程序开发环境,运行时库支持和硬件驱动三 个主要部分。c u d a 平台的核心特点是多层次的内存结构和线程组织,使用多级 不同特性的内存优化访问操作,结合大量轻量级的线程共同协作完成计算任务。 c u d a 编程语言以标准c 语言为基础,编译后的c u d a 程序能够在符合c u d a 标准的显卡上运行。由于c u d a 不需要通过图形a p i 访问硬件,因而提升了程 序的执行效率,同时降低了用户的开发难度。c u d a 技术符合在异构设备上进行 高性能计算的发展方向,使用c u d a 进行高性能计算具有重要的研究意义和实 用价值。 在深入分析c u d a 内核结构和编程模型的基础上,本文提出c u d a 的一种 性能模型p m c ,将c u d a 程序的运行时间加以分析,并提炼出几个关键参数, 并针对这些关键参数提供了具体的优化策略。进一步地,根据c u d a 平台的特 性和优化策略,在c u d a 上实现了两个生物信息学算法,即v o t i n g 算法和g i b b s 采样算法,在图形处理器上获得了较好的加速性能,也为其他c u d a 应用的实 现和优化提供了一定的参考。 关键词:g p g p u ,c u d a ,性能模型,模体 a b s t r a c t g e n e r a lp u r p o s ec o m p u t i n go ng r a p h i c sp r o c e s s i n gu n i mf g p g p u ) i so n e o f t h eh o t t e s tt r e n d si n h i g hp e r f o r m a n c ec o m p u t i n g g p g p up r o v i d e se x c e i i e n t s o l u t i o n sf o rs c i e n t i f i c c o m p u t a t i o n , s u c ha s b i o i n f o r m a t i c s , a l l i m p o r r t a n t i n t e r d i s c i p l i n e o f c o m p u t e rs c i e n c ea n db i o l o g i c a ls c i e n c e s t of a c i l i 龇t h e p r o g r a m m i n go ng p uf o rg e n e r a lp u r p o s e s ,n v i d i ah a v ed e v e l o p e dan e wg p g p u p l a t f o 咖sn a m e dc u d a ,w h i c hi n c l u d e sp r o g r a m m i n gt o o l s ,r u n t i m e s u p p o r ta 1 1 d d e v i c ed r i v e r t h ep r o g r a m m i n gl a n g u a g eo f c u d ai ss i m i l a rt os t a n d 2 l r dc l a n g u a g e , a n dt h ec o m p l i e dc u d a p r o g r a mc a l lb ee x e c u t e do na n yc u d a c o m p a t i b l ed e v i c e t h ek e yf e a t u r e so fc u d ai n c l u d e h i e r a r c h i c a l m e m o r ys t r l l c t u r ea 1 1 dt h r e a d o r g a n i z a t i o n d u et od i r e c t l yh a r d w a r ea c c e s s i n g ,c u d ai s m u c hf a s t e rt h a nt h e f o r m e rg p g p u e n v i r o n m e n t i nt h l sp a p e r , w er a i s e dap e r f o r m a n c em o d e lo fc u d an a m e dp m c w h i c h c o n 伽n sn v ek e yp a r a m e t e r sr e l a t e dt os y s t e mp e r f o r m a n c e r e l e v a n to p t i m i z a t i o n s t r a t e g i e sa r ea l s op r o v i d e d w ei m p l e m e n t e da n do p t i m i z e d v o t i n ga n dg i b b s 8 a m p l i n ga l g o r i t h mo nc u d ap l a t f o r mb a s e do nt h ec h a r a c t e r i s t i c so fc u d a n a r d w a r e e x p e r i m e n t a lr e s u l t ss h o wt h a tc u d ac a l lp r o v i d ee 艉c t i v ea n dl o w c o s t s o l u t i o n sf o rb i o i n f o r m a t i c sa n do t h e ra r e a s k e yw o r d s :g p g p u ,c u d a ,p e r f o r m a n c em o d e l ,m o t i f 中国科学技术大学学位论文原创性声明 本人声明所呈交的学位论文,是本人在导师指导下进行研究工作所取得的成 果。除已特别加以标注和致谢的地方外,论文中不包含任何他人已经发表或撰写 过的研究成果。与我一同工作的同志对本研究所做的贡献均已在论文中作了明确 的说明。 作者签名:逊 签字日期:礁幽 中国科学技术大学学位论文授权使用声明 作为申请学位的条件之一,学位论文著作权拥有者授权中国科学技术大学拥 有学位论文的部分使用权,即:学校有权按有关规定向国家有关部门或机构送交 论文的复印件和电子版,允许论文被查阅和借阅,可以将学位论文编入有关数据 库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。本人 提交的电子文档的内容和纸质论文的内容相一致。 保密的学位论文在解密后也遵守此规定。 亩么开口保密(年) 作者签名:金丛堂 签字日期:堕f :笪:三墓 名 期 签 日 师 字 导 签 第一章绪论 1 1 研究背景和意义 第一章绪论 高性能计算是工业、商业和科学研究的重要推动力。在计算需求日益增长的 今天,各行各业对计算能力的要求越来越高。例如在生物信息学领域,随着生物 数据的爆炸式增长,普通计算机的处理速度已经不能满足其需求,必须寻求其他 的计算方式,例如专用加速硬件。专为特定算法设计的硬件加速器的运行速度非 常快,例如局部序列比对算法在基于f p g a 的d e c y p h e r 机器上要比同时期普通 计算机快数百倍。硬件加速器的缺点也十分明显,首先是功能单一,往往只能适 用于一种或几种算法,其次设备较昂贵,更新和升级较慢,不适用于小规模的科 研机构和大学。 一种通用的硬件加速器,即图形处理器( g r a p h i c sp r o c e s s i n gu n i t s ,简称 g p u ) ,在计算机娱乐和影视行业的刺激下发展十分迅速。在图1 1 中比较了c p u 和g p u 最近几年处理速度的发展情况。其中纵轴的单位是单精度下的浮点处理 速度。 t e s l a c 8 7 0 卢 g e f o r c e 8 8 0 0 g t x 严一 q u a d r o f x5 6 0 0 , g 7 1 g 7 0 - 5 1 2 g 7 0 厂 3 0 g h z 竺寰兰= 二 图1 - 1g p u 和c p u 的性能增长对比【3 5 】 图形处理器拥有强大的处理能力,在g p u 上进行通用计算( g e n e r a lp u r p o s e c o m p u t i n go ng r a p h i c sp r o c e s s i n gu n i t s ,简称g p g p u ) 的研究,也受到越来越 多的关注。所谓通用计算,指的是在g p u 上执行一般的计算,例如科学计算、 数据处理等等,而不仅仅是图形图像处理。实际上对g p g p u 的研究在上个世纪 第一章绪论 末就已经开始,但是大多局限于学术研究,距离真正的产业化还有很远的距离。 这种情况随着专用g p g p u 计算平台的出现发生了改变。2 0 0 7 年显卡厂商n v i d i a ( 英伟达) 发布了基于g p u 进行通用计算的平台c o m p u t eu n i f i e dd e v i c e a r c h i t e c t u r e ( c u d a ) f 1 1 ,拉开了g p g p u 实用化、工业化的序幕。随后a m d 和i n t e l 也分别发布了类似的流处理器平台【2 和x 8 6 架构的l a r r a b e 显卡口1 标 志着新一轮对g p g p u 研究的热潮开始了。 从硬件特点上看,c p u 大量使用了缓存和其他逻辑控制部件,适用于偏重 逻辑控制豹程序,例如操作系统。在这类程序中,用户下一步的行为往往是不确 定的,因此c p u 采用了大量的缓存和逻辑控制电路以提高效率。而g p u 则大量 集成了并行的数据运算单元,缓存和逻辑控制较少,适用于逻辑相对固定、计算 较密集的程序。下图l 一2 形象地显示了这种区别,其中绿色的方块代表计算单元。 c p ug p u 图1 - 2c p u 和g p u 的计算单元和逻辑控制单元的对比 从以上分析可以看出,单纯地使用大量c p u 进行海量的数据处理和计算无 法充分发挥c p u 的优势,因此c p u 和专用硬件加速器相结合的异构计算设备将 为高性能计算新的突破点。当前超级计算机t o p 5 0 0 排名第一的i b m r o a d r u n n e r 就采用了普通c p u 和c e l l b r o a d b a n d e n g i n e s ( 一种集成了8 个协处理器的专用 处理芯片) 混合的架构。 目前高性能计算系统不再单纯地追求浮点计算能力,而是越来越多地考虑到 散热,能耗问题以及性能价格比。据统计,一套高性能计算系统在两年内的电费 和维护费就和本身的硬件成本相当。使用g p u 作为硬件加速器是一个很好的解 决方案。2 0 0 9 年3 月,浪潮发布了基于n v i d i a g p u 平台的超级计算机,也是国 内首款万亿次桌面超级计算机,其最高浮点计算能力达到4 t f l o p s ( 单精度) , 体积仅与普通计算机相仿,而成本和耗电还不到传统高性能计算系统的2 0 。在 第一章绪论 这种异构系统上,仅有数量很少的c p u 用于处理用户交互和逻辑控制,而将密 集的计算任务运行在g p u 上,从而充分地发挥了两种处理器的优势。 使用g p u 处理一般计算任务时,其本身的图形输出单元并没有发挥作用, 因此也出现了一些去掉图形输出单元的专用加速设备,例如n v i d i at e l s a 系列加 速卡。但是由于其内核架构和n v i d i a 其他的g p u 几乎完全相同,因此一般也称 其为g p u 。可以预见,未来将出现更多的专用于通用计算加速的硬件设备,而 目前的g p u 架构将会是一个很好的参考。 某些需要大量数据计算的科学领域,比如分子动力学,流体力学,天气预报, 地震预测等等,已经有一部分采用了基于g p u 的高性能计算系统。g p u 高度的 并行架构和强大的处理能力非常适合科学计算,而且图形显卡的价格相对低廉, 升级较快,能带来显著的性能提升,因此将g p u 计算应用于科学计算具有深远 的意义。从这些材料来看,基于g p u 的高性能计算有光明的发展前景,有深入 研究的价值。 1 2 研究现状 1 2 1g p g p u 的历史 图形显卡最初用于生成一定的信号控制显示器的输出。早期的显卡基本不具 备计算能力,也没有专门的运算核心。在9 0 年代末,3 d 图形渲染的市场需求下, 显卡开始逐渐集成一定的图像处理能力,并最终出现了集成化的专用芯片,即 g p u 。第一块g p u 于1 9 9 9 年由n v i d i a 公司制造,在随后十年中,g p u 的发 展非常迅速,集成的晶体管数目也从最早的三百万个迅速增长到目前的1 0 亿个。 使用g p u 进行通用计算可以分为三个阶段: 第一个阶段主要是在g p u 出现初期,使用图形a p i 进行计算。计算程序是 依赖于图形a p i ,如o p e n g l 或d i r e c t x ,其基本思路是将问题转换成图形元素, 利用图形a p i 进行处理。这种方式不具备通用性,而且较为繁琐。用户需要将 问题强制转换为图形图像的概念,而且需要熟悉图形a p i 的使用,即使计算问 题和图形完全无关。 第二个阶段主要是在2 0 0 5 年前后,使用中间层的通用a p i 进行计算。标志 性的两个中间层a p i 是斯坦福大学的b r o o k o p u 平台 4 和沃特卢大学的s h a d e r a l g e b r ac + + 库 5 】。为了解决图形a p i 编程上的困难,斯坦福大学和沃特卢大学 分别开发了b r o o k g p u 平台和s h a d e r a l g e b r ac + + 库,制定了通用的用于g p g p u 的语言( c 和c + + ) ,将编程简化。 第一章绪论 第三个阶段是在2 0 0 7 年以后,随着专用g p g p u 计算平台例如c u d a 的出 现,在由显卡制造商建立的开发标准上进行开发。m 于硬件制造商提供的开发平 台提供了完整的开发环境和硬件支持,使得g p g p u 丌技变得更加通用和方便, 同时出r 不再需要通过图形a p i 和硬件交互,程序陆能也得到了巨大的提升。 在n v i d i a 公司的支持下,大量的工业和科学应用被移植到c u d a 平台上,并获 得了不同的加速。 图1 3 彤象地显示了g p g p u 发展的三个阶段。 职鞴h麟 蘸藤| 图1 - 3g p g p u 拉展的_ _ 二= 个阶段 22 g p g p u 的相关研究 2 0 0 4 年kf a t a h a l i a n 做了关于g p u 上的矩阵乘法的效率研究f 6 1 。2 0 0 5 年 j e n sk r u g e r 进行了基于g p u 的线性代数运算实现井将其用于数值模拟 7 1 。2 0 0 6 年w e i g u ol i u 用o p e n g l 实现的基于g p u 的序列最优相似比较算法8 1 ,比传统 的实现速度提高了1 6 倍。其他的还研究包括w e i g u ol i u 等人关于g p u 上生物 序列查找的研究1 1 4 ,j a m e sf u n g 等人关于g p u 上计算计算视觉的研究1 5 1 等等。 在国内,吴恩华等人做过关于g p g p u 的综述 1 1 ,张庆丹等人做了g p u 上串匹 配算法的研究 1 3 1 ,都提供了很好的思路。以上的研究都是建立在图形a p i 之上。 随着c u d a 的出现,使用专用计算平台进行g p g p u 的研究越来越多。l a n b u c k 在i n t e r n a t i o n a ls y m p o s i u mo nc o d eg e n e r a t i o na n do p t i m i z a t i o nf c g o 0 7 ) 大 会上首次介绍丫c u d a 计算平台f 1 0 1 。o l a fs c h e n k 等人研究了c u d a 平台上的 软件的性能 1 2 ,s h a n er y o o 等人研究了数十种常见算法在c u d a 上的加速及优 化策略 2 3 1 。在生物信息学领域,m i c h a e lcs c h a t z 提出了基于g p u 的高通量序 列比对算法f 9 1 ,在g s 0 平台上获得了十倍以上的性能提爿。s v e t l i n m a n a v s k i 等 人实现了c u d a 平台上的s m i t h w a t e r m a n 序列比对算法1 3 4 1 。类似的研究还有 很多不再一一列举。 第一章绪论 1 3 研究问题和挑战 c u d a 是一种新兴的计算平台,目前相关的研究还不多。由于使用c u d a 最大的目的是加速应用程序,应此c u d a 程序的性能成为用户最关注的重点。 c u d a 支持的设备种类繁多,价格也从几百元到几万元不等,选购合适的硬件往 往成为c u d a 用户的首要问题。在同一块g p u 设备上,一个程序的执行性能也 和程序实现和优化方法息息相关,不同的优化方案可能速度相差很多,这些都是 需要关注的问题。 本文首先研究了c u d a 程序的运行性能,并提出了一种适用于c u d a 的性 能模型p m c 。在该性能模型中,一个程序的执行时间被分成了若干组成部分, 并且由几个关键因子控制。用户可以参考该模型,估算不同g p u 设备的性能差 别,也能够为程序的优化提供指导方向。其次作为应用,作者在c u d a 上实现 了两个生物信息学的算法,取得了较好的加速效果。 作为一个新生的产品,c u d a 仍然存在一些缺点,例如一部分设备不支持双 精度浮点数,片上存储器空间较小,编程模型较为复杂等等。最重要的是c u d a 不是一个开放的标准,a m d ,i n t e l 和微软在异构设备的通用计算上都有自己的 标准。目前c u d a 是g p g p u 应用最广泛的标准,研究c u d a 能够了解g p u 计 算,紧跟异构平台计算的发展潮流,同时也有着重要的实际应用价值。 1 4 论文组织 首先在绪论中简要介绍了g p g p u 技术和c u d a 计算平台。在第二章从硬 件设计,编程模型到编程语言接口三个方面详细介绍了c u d a 平台具体的细节。 第三章研究c u d a 平台的性能,并提出了一个基于关键参数的性能模型p m c , 并针对c u d a 的特性,提出了优化策略和建议。第四章研究了c u d a 的应用, 以生物信息学中的v o t i n g 算法和g i b b s 采样算法为例子,使用c u d a 编程语言 进行实现,并实际测试了同c p u 平台的加速比,显示出了较好的结果。最后一 章总结全文。 第二章c u d a 计算环境介绍 2 1c u d a 简介 2 1 1c u d a 基础知识 第二章c u d a 计算技术 c u d a ( c o m p u t e u n i f i e dd e v i c ea r c h i t e c t u r e ) 是显卡厂商n v i d i a 推出的一 种在g p u 上进行通用计算的平台。c u d a 第一个版本于2 0 0 7 年发布,目前最新 的版本是2 1 ,同时支持w i n d o w ,l i n u x 和m a co sx 。c u d a 平台包含三个部 分:开发库( c u d al i b r a r y ) 、运行时环境( c u d ar u n t i m e ) 和驱动( c u d a d r i v e r ) ,这三个部分加上c u d a 专用硬件( 称为c u d a 兼容设备或c u d a 设 备) ,为科学计算提供了一套完整的解决方案。 支持c u d a 的设备目前只有n v i d i a 厂商的产品,分为显卡和计算加速卡两 种。两者的硬件设计和接口类似,但后者不提供图形显示输出,只提供数据计算, 一般通过p c i e 插槽或者p c i e 转接线接入平台p c 。支持c u d a 的显卡包括 g e f o r c e8 ,g e f o r c e9 ,g e f o r c e2 0 0 ,g e f o r c ef x 系列以及g e f o r c eq u a d r o 系列。 支持c u d a 的计算加速卡主要是t e l s a 系列,一般用于构建多g p u 的专用计算 服务器。 c u d a 应用的代码在可以分为两种,一种运行在普通c p u 和主机内存上的, 称为宿主代码( h o s tc o d e ) ,一种运行在g p u 和显卡内存上,称为设备代码 ( d e v i c ec o d e ) 。由于两种代码的运行环境有本质的区别,所以相关的a p i 和定 义都必须明确指定适用于何种环境。c u d a 代码以标准c 语言为基础,扩展了 一些同c u d a 设备交互相关的定义和函数,使得普通用户不需要了解o p e n g l 或d i r e c t x 这样的图形a p i 就可以使用g p u 进行开发。同时c u d a 运行时环境 通过驱动直接同硬件交互,不需要通过图形a p i ,大大提升了实际性能。 在c u d a 开发库上构建c u d a 应用十分方便,同时c u d a 平台也提供了更 多的选择。用户可以将c u d a 的应用可以构建在c u d a 运行时库上,也可以直 接和c u d a 驱动交互,在最底层构建应用。图2 1 展示了c u d a 平台的架构以 及同c u d a 应用的关系。 6 第二章c u d a 计算环境介绍 图2 - 1 c u d a 平台的架拘 c u d a 的创新特性包括线程组层次、共享存储器和同步壁障,它们提供了细 粒度的数据和线程并行化,并且可以嵌套于粗粒度的数据和任务并行化之中。开 发者必须将问题分解为更小的片段,通过协作的方法并行解决,才能最大的发挥 g p u 的高度并行性。同时这样的分解同硬件设备无关,即用户不需要关心计算 设备有多少个处理单元,而只需要关心任务和数据如何并行划分。因此编译后的 c u d a 程序可以在任何数量的处理器内核上执行,只有运行时环境需要知道实 际物理处理器数量。这样的设计保证了c u d a 应用良好的扩展性,不需要随着 硬件的变化重新设计代码,但同时也对程序设计提出了很高的要求。在后面的小 节中,将从硬件设计、编程模型到编程语言接口三个方面详细介绍c u d a 平台 具体的细节,并主要参考了c u d a 开发文档中的c u d a 编程手册c u d a p r o g r a m m i n gg u i d e2 0 【1 8 】。 2 22 c u d a 计算的应用 从硬件和软件设计上看,c u d a 平台的特点适用于处理密集型的数据和计 算,因此c u d a 非常适合大规模并行计算的领域。目前c u d a 除了可咀用c 语 言开发以外,也已经提供科学计算中更常用的f o r t r a n 接口,下一个版本即将 支持c 十+ ,在未来还将计划支持j a v a 、p y t h o n 等语言。 下面列举了目前的一些c u d a 的应用【1 6 】。 p h o t o s h o p 图形处理加速。a d o b ep h o t o s h o p 是最常用的图像处理软件, p h o t o s h o pc s 4 支持g p u 加速功能,可以用g p u 加速各种常用的处理 第二章c u d a 计算环境介绍 包括图像缩放、图像旋转、图像移动等等。在处理超大图片的时候,g p u 加速可以带来明显的性能改善,提升了用户体验和工作效率。 - m a t l a b 处理加速。m a t l a b 是常用的数学处理软件之一,n v i d i a 提供了一 些插件使得部分计算例如线性代数和f f t 可以使用g p u 设备加速十倍 以上。可以预见类似的行业软件如m a t h e m a t i c a ,l a b v i e w ,f l u e n t 等在 未来都也将受益于c u d a 技术。 f o l d i n g h o m e 。f o l d i n g h o m e 是s t a n f o r d 大学推动的分布式计算项目, 目的在于使用联网的各种计算设备和大量的分布式计算能力来模拟蛋 白质的折叠,并指导新药物的开发。参与f o l d i n g h o m e 的计算设备包 括普通c p u ,i b mc e l lb e 处理器,以及g p u 设备。c u d a 显卡平均 拥有1 0 0 g f l o p s 的浮点运算能力,远远高于普通c p u ,为 f o l d i n g h o m e 提供了可观的贡献。 - 天体物理学。n b o d y 是天体物理学的一个重要的问题,主要用于模拟大 量天体在相互作用下的运动。在g p u 上实现的n b o d y 算法可以超过专 用的硬件计算设备。 分子动力学。分子动力学是一种生物学研究的一种基本工具。伊力诺依 州立大学的开发的n a m dm d 软件在g p u 上获得了超过7 0 0 g f l o p s 的性能,这样的性能在原来只能依靠大型集群系统来实现。 一地理信息系统。一些用于地理信息系统( g i s ) 处理的软件例如m a n i f o l d 8 也增加了对c u d a 的支持。在处理大规模数据,绘制各类地理信息图 的时候,g p u 可以大大提升软件运行的速度。 以上的应用仅仅代表了工业、商业和科学研究的几个重要方面。类似的 c u d a 应用还有很多,不再一一列举。 可以预见,在未来将有更多的应用从c u d a 计算技术中获益。c u d a 作为 一种廉价高效的高性能计算解决方案也会越来越受到重视。 2 1 3c u d a 和o p e n c l o p e n c l ( o p e nc o m p u t i n gl a n g u a g e ) 1 7 1 是第一个面向异构系统的通用计 算语言标准,也是一个统一的编程环境,便于软件开发人员为高性能计算机、桌 面个人计算机、和其他设备编写高效的代码。o p e n c l 是由苹果在2 0 0 8 年提出, 并由k h r o n o sg r o u p ( o p e n g l 标准的制定者) 联合各大企业共同完成了标准制 定。o p e n c l 是开放的、免费的标准,参与标准制定的企业都是各自领域的领导 者,包括i n t e l 、a m d 、i b m 、n v i d i a 、苹果、f r e e s c a l e 、a r m 等等。 第二章c u d a 计算环境介绍 o p e n c l 主要由一个并行计算a p i 和编程语言组成,此外还能与o p e n g l 、 o p e n g le s 等其他图形类a p i 高效地互通。o p e n c l 广泛适用于多核心的普通处 理器、图形处理器、i b mc e l lb e 类型的架构以及数字信号处理器等等,在科研, 娱乐、医疗,工业等各种领域都有广阔的发展前景。o p e n c l 设计的初衷是针对 各种异构系统提供一个统一的并行编程环境,g p u + c p u 的异构系统只是其中的 一种,但也是最常见的一种。o p e n c l 的设计同c u d a 很相似,实际上目前 o p e n c l 开发和实现的过程中,底层平台均为n v i d i a 的g p u 。图2 2 为o p e n c l 的概念图。 图2 - 2o p e n c l 的概念图 o p e n c l 和c u d a 并不冲突。c u d a 是一种g p u 上的原生的计算架构,可 以支持o p e n c l 标准,当然也可以支持其他的标准,例如微软的下一代面向通用 计算的d i r e c t x 。用户想要在n v i d i a 的c p u 上开发面向通用计算应用,可以选 择o p e n c l 的a p i ,也可以选择c u d ac 语言,或将来支持的c u d ac + + ,c u d a j a v a 等等。各种编程语言和a p i 开发的代码最终都被编译成g p u 硬件支持的p t x 代码( 类似于c p u 上的汇编代码) ,并在硬件上执行。o p e n c l 是一个技术标准, 不同的厂商可以有不同的实现细节。在这一点上,c u d a 对于o p e n c l 和推广和 普及发挥了重要的作用。 2 2 硬件设计 2 2 1 硬件结构 支持c u d a 的设备统称为c u d a 兼容设备( c u d a c o m p a t i b l ed e v i c e ) 。 c u d a 兼容设备的核心和基本组成单元是一种可扩放的多线程流处理器 9 第二章c u d a 计算环境介绍 ( s t r e a m i n gm u l t i p r o c e s s o r ,简称多处理器或s m ) 。通常由若干多处理器组成处 理器阵列,并发执行多个计算线程。一个多处理器包含8 个标量处理器( s c a l a r p r o c e s s o r ,简称s p ) 、一个多线程指令单元以及片上共享存储器( s h a r em e m o r y ) 等等。多处理器在硬件中创建、管理和执行并发线程,且调度过程保持零开销。 线程之间没有通讯指令,只能通过共享存储器和快速同步指令s y n c t h r e a d s o 实 现通讯。快速同步与轻量级的线程创建和零开销的线程调度相结合,有效地为细 粒度并行化提供了支持。 下图2 3 展示了一个多处理器的基本硬件结构。 图2 - 3 多处理器的硬件结构 多处理器使用了单指令多线程( s i n g l ei n s t r u c t i o n ,m u l t i p l et h r e a d s ,s i m t ) 的架构管理大量的线程。s i m t 类似s i m d ( s i n g l ei n s t r u c t i o n ,m u l t i p l ed a t a ,单 指令流多数据流) ,同时在多个线程上执行同样的指令流。多处理器将各线程映 射到标量处理器核心,并以3 2 个并行线程为一组来创建、管理、调度和执行线 程,这样的线程组称为w a r p 块( 线程批) 。为一个多处理器指定了要执行的线 程块时,它会将其分成w a r p 块,并由s i m t 单元进行调度。每发出一条指令时, s i m t 单元都会选择一个准备好的w a r p 块,将下一条指令发送到该w a r p 块内的 线程。显然w a r p 块内的所有个线程的执行路径相同时,效率最高。如果一个线 程进入条件分支而产生分散( 称为s i m td i v e r g e n c e ) ,w a r p 块将连续执行各分 支路径,极大的影响c u d a 程序的性能。为了减少分支带来的开销,w a r p 块的 执行实际上分成两组,即按照半个w a r p ,也就是1 6 个线程为一组分为两次执行。 标量处理器可以同多处理器外的显卡设备内存交互,但访问速度较慢。除此 之外每个多处理器上还四种类型的芯片存储器,包括以下四种: 1 0 第二章c u d a 计算环境介绍 一 寄存器,每个标量处理器上都有一组本地3 2 位寄存器 - 共享存储器,由所有标量处理器共享,大小一般为1 6 k 或3 2 k - 只读固定缓存,由所有标量处理器共享并且只读,用于缓存固定存储器 一只读纹理缓存,由所有标量处理器共享并且只读,用于缓存纹理存储器 以上内容主要讨论了标量处理器和多处理器的结构。整个g p u 的核心主要 由数个多处理器,配合图形处理用的光栅处理单元( r o p ) ,纹理寻址过滤单元, l 1 、l 2 缓存等元件组成。一个拥有8 个多处理器的g p u 的结构如图2 - 4 所示。 翻口口b口囝日口目口口目舀口口口 口曰口臼口口口囹 口口口口 目口口曰 口口口臼口口圈囝口口四日口口口囝 臼口口团口日口日口日口因 豳口口口 t a ,t ft a ,t f1 t ft t f l 1c a c h e l lc a c h e ” l 】c a c h e : l ic a c h e ,: |l l l 土 毒li;l; l 0 毒 ; 上 ,r : 0r o p l 2+ r 0 pl 2 :r o p l 2r o pl 2 , l: :lil j d r a md r a m d r a m : d r a m 。 c o n t r o l l e r c o n t r o l l e r 。一 ic o n t r o l l 茁、0 c o n t r o l l e r 。- 厂i 订 纹理寻址越滤单元 s m ,包含8 个s p l 二竺i _ _ j 驭臣1 于班魍醛半歹k f 碣 光栅处理单元 兰:羔d 7 l 佣哑半h 图2 - 4 集成8 个多处理器的g p u 结构图 一般的c u d a 兼容设备拥有更多的处理单元,例如g e f o r c e8 8 0 0 g t x 有1 6 个多处理器,g e f o r c eg t x2 8 0 有3 0 个多处理器。多处理器数目的多少直接影 响了计算能力,但除此之外还有其他的因素,将在下一节详细介绍。 2 2 2 计算能力 计算能力( c o m p u t ec a p a b i l i t y ) 不是通常意义上的浮点计算性能,而是指 c u d a 设备的一种规范。按照n v i d i a 的划分方式,计算能力分为1 0 ,1 1 ,1 2 以及最新的1 3 。 表2 1 简要列出了各种计算能力的差别。 第二章c u d a 计算环境介绍 表2 - 1 计算能力的区别 除了这些关键区别之外,不同产品在流处理器主频,内存大小,内存频率等 方面也有一定的差别。下面表2 2 简要的列出了代表性的c u d a 设备的计算能 力: 表2 - 2 代表性的c u d a 设备的计算能力 我们常用浮点计算能力来评价一个计算系统的性能。c u d a 设备的理论最大 浮点计算能力主要同多处理器的数目和运行频率密切相关。以装配4 个g p u 的 t e l s as 1 0 7 0 系统为例,每个g p u 有3 0 个多处理器,2 4 0 个标量处理器,运行在 1 5 g h z ,每个时钟周期可以执行3 条单精度浮点运算指令,其理论浮点计算能 力达到了2 4 0 * 1 5 * 3 = 1 0 8 0 g f l o p s ,即万亿次。目前只有计算能力1 3 的设备才支 持双精度浮点数计算,而且性能较低,约为单精度性能的1 1 0 。 2 3 软件模型 2 3 1 线程层次模型 1 2 第二章c u d a 计算环境介绍 前面已经提到,c u d a 应用的代码在可以分为两种,一种是运行在普通c p u 和内存上的宿主代码( h o s tc o d e ) ,一种是运行在g p u 和显卡内存上设备代码 ( d e v i c ec o d e ) 。在以下叙述中,宿主或主机指的是普通c p u 和内存上的计算 环境,设备指的是c u d a 显卡( 或计算加速卡) 。 内核( k e m d ) 是在g p ue 执行的一种特殊函数,也是晟基本的运行单元。 它将由多个不同的c u d a 线程分别并行执行,类似m p i 程序。在内核函数中有 约定的变量可以获得当前线程的编号、线程块大小等信息。一个内核在各个线程 上的执行顺序是不确定的,内核执行的正确性将由程序员保证。内核由专门的语 句在主机上调用。一个c u d a 程序可以有多个内桉,内核的调用是异步的,但 是可以手动设置同步壁障。 为了管理大量的线程,使用多级的方式来组织线程。一定数目的线程组成线 程块( t i l r e a db l o c k ) ,一定数日的线程块再组成线程网格( t k a dg r i d ) 。线程 网格是最项级的线程集合,一个内核函数对应于一个的线程网格,用以执行它。 线程阿格和线程块都可以是多维的,其大小一般是根据任务的划分来决定,而不 是硬件处理器数目来决定。线程的组织形式如图2 5 所示。 圈2 - 5 c u d a 的线程组织 内核函数使用_ g l o b m 一声明符定义,参数包含在用连续3 个尖括号中( ) 用于指定c u d a 线程数:如f 示例代码 第二章c u d a 计算环境介绍 上面的示例代码将大小为n 的向量a 和向量b 相加,并将结果存入向量c 。 “ 的含义是使用1 个线程块,每个线程块包含n 个线程。 执行内核的每个线程都会被分配一个i d ,可通过内置的t h r e a d l d x 向量来访问。 n 个不同的线程分别完成一个元素的加和运算。这里的尺寸都是一维的,实际上 线程块可以最多三维,而线程网格最多两维。 多维化的线程块和线程网格主要是为了方便一些实际问题实现自然映射,例 如2 维图像的像素点,3 维空间中的点。从本质上看它们最后都将转换成l 维的 数据。根据维度的不同,我们可以用索引向量来代表一个线程,前面提到线程都 会被分配一个i d ,i d 和索引是可以相互转换的。很自然的,线程i d 是按顺序 依次排列下来的,例如对大小为( d x ,d y ,d z ) 的三维线程块来说,索引为( x , y ,z ) 的线程的i d 是( x + y d x + z d x d y ) 。知道线程块的尺寸后,线程索引和i d 就可以对应起来。 将线程组织成线程块的意义不仅仅是管理线程集合,更重要的是线程块内的 各个线程可以通过共享存储器和同步壁障来协作,即调用_ s y n c t h r e a d s 0 一函数在 内核中指定同步点,块中的所有线程都必须在这里等待同步后才能继续执行后面 的代码。同线程一样,线程网格中的线程块也必须能够以任意顺序执行。一个网 格内的线程块数量一般也是由所处理的任务或数据的规模决定的,而不是由计算 设备中的处理单元数目决定的。一般而言,任务或数据划分应该尽可能地细,才 能保证在各种计算设备上都有较高的效率。 2 3 2 存储器层次模型 在硬件结构一节中已经提到,c u d a 兼容设备中的每个多处理器都有4 种不 同的内存空间,包括s p 寄存器,s m 共享存储器,只读固定缓存,和只读纹理 缓存。 线程层次模型是c u d a 管理多线程的基本模型,对不同层次的线程来说, 存储器分为四类: 第二章c u d a 计算环境介绍 一每个线程有一个私有的本地存储器,即每个标量处理器私有的缓存。 一每个线程块有一个共享存储器,块内所有的线程都可以访问。 一每个线程网格都可以访问设备内存,即g p u 片上的全局存储器。每个 线程均可以读写全局存储器。此外还有两个只读存储器即固定只读存储 器和纹理只读存储器,主要为了优化访问和以及提供纹理过滤操作。 本地存储器用于储存设备代码中无法放进寄存器的变量。 从g p u 设备上看,共有6 种不同类型的存储器:全局存储器,本地存储器, 固定存储器,纹理存储器,共享存储器和寄存器。在表2 3 中列出了它们的基本 特性。 表2 - 3 各种存储器的基本特性 在下一章的访存开销一节中将详细分析各种内存空间的特性。 2 3 3 软件层次结构 在第一节提到了c u d a 程序的软件层次结构。c u d a 代码以标准c 语言为 基础,构建与c u d a 运行时环境之上。而c u d a 运行时环境通过c u d a 驱动直 接同硬件交互,不通过图形a p i ,使得普通用户不需要了解图形a p i 就可以使用 g p u 进行运算,同时提升了实际性能。 c u d a 软件层次包含三个部分:开发库( c u d a l i b r a r y ) 、运行时环境( c u d a r u n t i m e ) 和驱动( c u d ad r i v e r ) 。下面分别简要介绍这三个部分。 第二章c u d a 计算环境介绍 - 开发库是基于c u d a 的应用函数库,目前包括两个标准的数学运算库, 即c u f f t ( 离散快速傅立叶变换) 和c u b l a s ( 离散基本线性代数运 算库) 。阻后还将提供更多的开发库,以方便用户的使用。 - 运行时环境提供了c u d a 应用的开发接口和运行时组件,包括基本数据 类型的定义和各类计算、内存管理、设蔷访问和执行调度等函数,为 c u d a 程序的执行提供支持。 c u d a 驱动提供了g p u 的设备抽象级的访问接口,使得同一个c u d a 应用可以正确的运行在所有支持c u d a 的不同硬件上。这是一个十分重 要的设计,它极大地增强了c u d a 的适用性和生命力。由于硬件抽象层 的存在,其他的硬件厂商也能生产兼容c u d a 的显卡和专用加速硬件, 使得c u d a 成为一个通用的g p g p u 标准。 一般用户可以在c u d a 开发库上构建c u d a 应用,但c u d a 平台也提供了 更
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030智慧城市行业市场前景研究及产业发展与品牌营销报告
- 2025-2030智慧城市行业市场供需分析及技术评估预测分析研究报告
- 2025-2030智慧城市系统市场分析及项目规划与政策推动研究报告
- 2025-2030智慧城市环境监测系统市场潜力供需预测及产业规划研究
- 2025-2030智慧城市建设项目投资价值分析及融资策略研究报告
- 2025-2030智慧城市建设服务市场分析行业竞争格局商业投资规划
- 护理管理学题库计划及答案解析
- 护理教育学题库成人高考及答案解析
- 精神障碍护理学问答题库及答案解析
- 循环护理学题库及答案解析
- 《蜡染与扎染》课件+2025-2026学年人教版初中美术九年级上册
- 2025北京银行笔试行测判断推理真题
- 吉林省长春五十二中赫行实验学校2025-2026学年九年级上学期第一次月考语文试题(含答案)
- 2025年新疆农业土地流转合同协议
- 通信登高作业安全培训课件
- 互联网技术岗位入门考试题库
- 市护理质控中心工作总结
- 幼儿园三重一大集体决策管理方案
- 全混声唱法教学课件
- 2025年宠物行为学考试题库
- 医疗器械岗前培训试题及答案
评论
0/150
提交评论