已阅读5页,还剩64页未读, 继续免费阅读
(计算机应用技术专业论文)gpu通用计算在格子boltzmann方法中的应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
上海大学硕上学位论文 摘要 近几年来,图形处理单元( g p u ) 的快速发展和可编程技术的实现,使得 g p u 在顶点计算、像素渲染、光照等图形计算方面显得更加灵活,同时出现了 g p u 在通用计算( g p g p u ) 方面的应用。在g p u 可编程的顶点着色器和像素着 色器中实现通用计算,使得计算性能得到极大地提高。由于资金投入较少,所以 利用g p u 通用计算将在计算领域中扮演重要的新角色。 g p u 通用计算发展之初是基于图形接口的。基本思路是利用图形接口 o p e n g l 和g p u 可编程语言c g 来编写包含通用计算代码的着色程序,在g p u 渲染流水线的执行过程中运行着色程序,从而达到通用计算的目的。n v i d i a 公司 根据基于图形接口的g p u 通用计算的缺陷,为g p u 量身定制了专用于计算的构 架一u d a 。c u d a 在流多处理器上采用多线程机制,且设计了多级存储结构 和共享存取器,使得计算的性能进一步得到了提高。 g p u 通用计算是一个前沿的研究方向,本文从g p u 通用计算的两个发展阶 段进行了理论上的研究和技术上的分析,并根据两个阶段不同的技术进行了计算 流体力学中的相关实验。本文的研究内容着重集中在以下两个方面: 第一部分,利用基于图形接口的g p u 通用计算,结合计算流体力学中的格 子b o l t z m a n n 方法实现了对二维方腔流的数值模拟。首先介绍了g p u 的渲染流 水线,其次进行了图形接口和g p u 可编程语言的相关配置,随后设计了像素着 色器中计算流体力学应用程序的算法,最后进行了数值模拟实验。实验得到正确 结果显示出单个g p u 与单个c p u 的硬件加速比为4x 。 第二部分,利用支持c u d a 的g p u 实现了矩阵乘法计算和二维方腔流的数 值模拟。在对c u d a 多线程并行计算模型的详细讨论、g p u 的多级存储模型的 介绍分析之后,进行矩阵乘法算法的并行计算设计。实验充分利用了共享内存和 寄存器,并在线程调度方面进行了巧妙设计,实验结果得到了相对c p u 的硬件 加速比为4 8x 。最后,重新设计了计算流体力学应用程序的c p u 串行执行部分 和g p u 并行执行程序部分,再次利用基于c u d a 的g p u 通用计算对二维方腔 流进行数值模拟实验,最后达到了1 7x 的加速性能。 关键词:g p u 通用计算,o p c :i l g l ,c g ,格子b o l t z m a n n 方法,c u d a v 上海大学硕士学位论文 a bs t r a c t i nr e s e n ty e a r s ,t h ef a s td e v e l o p m e n ta n dt h ee n a b l ec o m p u t i n gi m p l e m e n to f g r a p h i c sp r o c e s s i n gu n i t ( g p u ) h a v em a d em a n yp a r t so fg r a p h i c sc o m p u t a t i o n m o r ef l e x i b l e ,s u c ha sv e r t e xc o m p u t a t i o n , p i x e lr e n d e r i n ga n dl i g h t i n ga n ds oo n a t t h es a m et i m e ,s o m ea p p l i c a t i o n so fg e n e r a l - p u r p o s ec o m p u t a t i o no ng p u s ( g p g p u ) h a v eb e e ni m p l e m e n t e d c o m p l e t i n gt h eg e n e r a l p u r p o s ec o m p u t a t i o ni nt h ev e r t e x s h a d e ra n dp i x e ls h a d e ro fp r o g r a m m i n gg p uc o u l di m p r o v et h ec o m p u t a t i o n c a p a b i l i t yh i g h l y f o rl i r l ec o s tt or u nt h eg p up r o g r a m s ,c o m p u t a t i o nb a s i n gg p u w i l lp l a ya ni m p o r t a n tr o l ei nt h ec o m p u t a t i o nf i e l di nt h ef u t u r e i nt h ee a r l yt i m e ,g p g p um a i n l yb a s e do nt h eg r a p h i c sa p i s t h em e t h o dw a s u s i n go p e n g la n dc gw h i c hw a sag p up r o g r a m m i n gl a n g u a g et ow r i t et h es h a d e r i n c l u d i n gg e n e r a l - p u r p o s ec o m p u t a t i o nc o d e s t h es h a d e r sw e r ee x e c u t i n gw h i l et h e p i p e l i n e so fg p uw e r ee x e c u t i n g , a n dt h es h a d e r s r e s u l tw a st h eg e n e r a l - p u r p o s e c o m p u t a t i o n sr e s u l t c o n s i d e r i n gt h ed e f e c t so ft h eb a s i n gg r a p h i c sa p i s ,t h e c o r p o r a t i o no fn v i d i ah a dd e s i g n e dt h es u i t a b l ec o m p u t a t i o na r c h i t e c t u r e c u d a ”, w h i c hw a sap r o f e s s i o n a la r c h i t e c t u r eo fc o m p u t a t i o nb a s e do ng p u s c u d ah a d u s e dt h em u l t i p l et h r e a d sm e c h a n i s mo n s t r e a m i n gm u l t i p r o c e s s o r s ,a n dd e s i g n e d m u l t i l e v e l s t o r a g e s t r u c t u r ea n ds h a r e dm e m o r y , w h i c hc o u l di m p r o v et h e c o m p u t a t i o nc a p a b i l i t yf u r t h e r l y c o m p u t a t i o nb a s e do ng p u si san e wr e s e a r c hd i r e c t i o n t h i sd i s s e r t a t i o ns h o w s t h er e s e a r c hw o r ko ft h et h e o r ya n dt h ea n a l y s i so ft e c h n o l o g yi nt h et w os t a g e so f c o m p u t a t i o nb a s e do ng p u s b a s i n gt h ed i f f e r e n tt e c h n o l o g yo ft w os t a g e s ,t h e i n t e r r e l a t e de x p e r i m e n t so fc o m p u t a t i o n a lf l u i dd y n a m i c sh a v e b e e nc o m p l e t e d t h e c o n t e n to ft h i sd i s s e r t a t i o nh a sb e e nm a i n l yd i v i d e di n t ot w op a r t s ,a sf o l l o w s : i nt h ef i r s tp a r t ,t h eg p g p uw h i c hb a s e do nt h eg r a p h i c sa p i sa n dt h el a t t i c e b o l t z m a n nm e t h o do fc f dh a v e b e e nc o m b i n e dt oi m p l e m e n tt h es i m u l a t i o no f2 d s q u a r ec a v i t yf l o w f i r s t l y , t h e r ei sa ni n t r o d u c t i o no ft h er e n d e r i n gp i p e l i n eo fg p u s e c o n d l y , s o m es e g m e n t ss h o waw a yt oc o n f i g u r et h eg r a p h i c sa p i sa n dg p u v i 上海大学硕士学位论文 p r o g r a m m i n gl a n g u a g e t h i r d l y , t h e r ei saw a y t od e s i g nt h ea l g o r i t h mo ft h ec f d a p p l i c a t i o np r o g r a m si np i x e ls h a d e r s a tl a s t , t h ee x p e r i m e n t sh a v eb e e nc o m p l e t e d t h er e s u l t so fe x p e r i m e n t ss h o wt h a tt h es p e e d u po fs i n g l eg p ut os i n g l ec p ui s a l m o s t4 i nt h es e c o n dp a r t , t h e r ea l et w oe x p e r i m e n t so ft h em a t r i xm u l t i p l i c a t i o na n d2 d s q u a r ec a v i t yf l o wb yu s i n gc u d a - e n a b l e dg p u a f t e rd i s c u s s i n gt h em u l t i p l e t h r e a d sp a r a l l e lc o m p u t a t i o n a lm o d e lo fc u d aa n da n a l y z i n gt h eg p u sm u l t i l e v e l s t o r a g em o d e l ,s o m es e g m e n t ss h o wt h ew a yt od e s i g n t h ea l g o r i t h mo fm a t r i x m u l t i p l i c a t i o n t h i se x p e r i m e n tu s e s t h es h a r e dm e m o r ya n dr e g i s t e r ss u f f i c i e n t l y , a n d d e s i g n st h em e t h o do fd i s p a t c ht h et h r e a d s a n dt h er e s u l ts h o w st h a tg p u c a ng e tt h e 4 8t i m e ss p e e d u pa sc p u i nt h ee n d ,t h es e r i a le x e c u t i o np r o g r a mo fc p ua n dt h e p a r a l l e le x e c u t i o np r o g r a mo fg p u h a v eb e e nr e d e s i g n e d ,a n dc u d a - e n a b l e dg p u h a v eb e e nu s e dt os i m u l a t et h e2 ds q u a r ec a v i t yf l o we i t h e r t h er e s u l ts h o w st h a t g p u g a l lg e t17t i m e ss p e e d u pa sc p u k e y w o r d s :g p g p u ,o p e n g l ,c 吕l a t t i c eb o l t z m a n nm e t h o d ,c u d a v 上海大学硕士学位论文 原创性声明 本人声明:所呈交的论文是本人在导师指导下进行的研究工作。 除了文中特别加以标注和致谢的地方外,论文中不包含其他人已发表 或撰写过的研究成果。参与同一工作的其他同志对本研究所做的任何 贡献均已在论文中作了明确的说明并表示了谢意。 签名:王z 型 日期:2 型2 : 墨 本论文使用授权说明 本人完全了解上海大学有关保留、使用学位论文的规定,即:学 校有权保留论文及送交论文复印件,允许论文被查阅和借阅;学校可 以公布论文的全部或部分内容。 ( 保密的论文在解密后应遵守此规定) 签名:二移幺毛k 导师签名:三蚀日期:j 塑纵 i i 上海大学硕士学位论文 1 1 研究目的和意义 第一章绪论 随着大规模集成电路的快速发展,相应产生的高性能计算机层出不穷,为计 算领域开辟了广阔的道路。以往,计算领域主要运用c p u 作为计算处理器,构 建c p u 集群作为超级计算机,利用c p u 数量换来计算能力,在造价上也付出了 很高代价;另一方面是多核处理器的发展,在同一块电路板上实现了多个c p u 计算单元进行并行计算,带来的问题在于如何实现优化的并行处理技术。与此同 时在另一个硬件领域一图形硬件领域发生了计算革命,利用图形硬件强大的计 算能力来处理通用计算方面的巨大计算量问题。目前,主要的应用有科学计算、 信号处理、图像处理、视频音频处理、基于物理学的模拟等等【l 】。 g p u ( g r a p h i cp r o c e s s i n gu n i t ) 概念于1 9 9 9 年首先由n v i d i a 公司提出。随 着大规模集成电路的快速发展,g p u 每年的更新速度是c p u 更新速度的2 3 倍,目前图形芯片主要市场由n v i d i a 和a m d 公司旗下的a t i 占领。更新构架的 g p u 主要在渲染管线、主频、存储位宽、显存容量上快速发展,制作工艺上已 经突破1 0 n s 级。 g p u 在硬件的几个方面比c p u 有着数字上的绝对优势:g p u 的浮点运算速 度( 如图1 所示) ,g p u 的总线带宽,g p u 的显存容量。单从市场上的g p u 体 系结构与c p u 体系结构进行对比:最新g p ug e f o r c eg t x2 8 0 的浮点运算速度 首次突破了i t f l o p s ( 撰稿时获取的最新数据,这说明g p u 通用计算已经掀起了 高性能计算热潮,同时表明继续进行g p u 通用计算研究的意义是重大的) ,显存 的位宽已经达到5 1 2 b i t ,而内存的位宽为6 4 b i t ;显存频率规格为g d d r 5 ,而内 存还停留在d d r 2 等级;而且最新的g p u 显存容量已经达到惊人的1 g b 等等。 一系列的数据表明g p u 的计算、存储、读写能力是非常强大的。 上海大学硕士学位论文 差 暑 专 函m 矗ma 弦j 呲l m t r rm 町妇 绷删嬲姗绷 g 挖o oig 醇b 怖e g t x 2 g 9 2 g e 艮您镭c g b o 。g e 嘲o 甜x 留l - g 醴咖舢a d c g 7 0 g 醇雠7 o g d n 懈o g e r r o e6 b u l t r a n 、f 3 5ig e r 髓f :x5 9 5 0u l t r a 嗍m g e 翱娆欧姗 图1g p u 近几年的发展情况( 来自n v i d i a 公司数据) 2 0 0 3 年,g p u 作为通用计算处理器出现在了科学计算领域。与最初设计g p u 进行图形计算的目的不同,在此是利用g p u 来进行通用计算g p g p u 2 1 ( g e n e r a l p u r p o s ec o m p u t a t i o no ng p u s ) 。相同计算量的g p u 的硬件成本大大小于 c p u 硬件成本,这是g p g p u 发展的最初出发点,也是其优势。 g p u 通用计算的根本目的就是在较少的资金投入下得到很好的硬件加速,从 而解决许多计算量较大的问题。g p u 通用计算问世后,带来的是面向桌面级别 的高性能计算方案,能在较少的资金投入范围中取得很高的计算能力,使得高性 能计算触手可及,从而使得科研工作能更好的进行,最终推动整个科技的进步。 从这一点来说,g p u 高性能计算的意义显得非常重要。 1 2 国内外研究现状 随着芯片技术的发展和市场对显卡的需求越来越高,极大地推动了g p u 的 研究与发展,在图形方面,产生了由固定管线技术到可编程管线的第一步跨越, 在计算方面,由图形处理为目的的g p u 到高性能计算的g p u 实现了第二步飞跃。 在讨论图形系统流水线结构时,我们给流水线上的每个模块都指派了某一固 定的功能。可编程g p u 的出现,使得顶点处理器和片段处理器的功能都可以由 2 泓 凇 辨 掰 。 上海大学硕士学位论文 用户编程实现,我们把用户编写的程序称为顶点着色器和片段着色器,它们可以 生成复杂的视觉效果,而执行速度与标准的固定功能流水线一样快。有了这样的 特性,科研人员发现,把着色器编写成其他复杂计算的程序,执行渲染流水线后, 同时也进行了并行计算,由此产生了g p u 通用计算。由于图形处理器的流水线 技术和可编程的实现,它越来越多的被应用到图形以外的科学计算领域,流行的 g p u 通用计算领域有:计算几何、碰撞检测、代数运算、偏微分方程、图像处 理、计算流体动力学、分子动力学等等科学领域【l 】。 在g p u 通用计算发展的初期,出现的g p u 通用计算主要是利用图形接口 ( o p e n g l 或d i r e c t 3 d ) 结合相关的着色语言,对纹理、像素、帧缓冲区等进行 操作,从而实现g p u 通用计算。 国外,主要的有l a r s c n 等人【3 】利用多纹理技术实现了矩阵乘法;h a l l 等人【4 】 更进一步充分利用硬件的可编程特性对矩阵乘法运算做了许多优化工作,提高了 计算性能;t h o m p s o n 5 】基于顶点编程开发了进行矢量计算的框架系统,并在此基 础上实现了矩阵乘法和3 - s a t 问题求解。k r u g e r 等人【6 】在像素级进行编程,用来 做基本代数运算,然后在此基础上实现了共轭梯度法和高斯赛德尔迭代法,从 而完成了p d e s 的求解。m o r a v a n s z k y t 7 】利用d i r e c t3 d 中的h l s l 实现了稠密矩 阵的系列代数运算,并在此基础上实现了共轭梯度法和线性优化问题求解。 h i l l e s l a n d 等人【8 】将最速下降法和共轭梯度法求解带有简单约束和规则化的非线 性最小二乘优化问题映射到g p u 上,并应用到复杂的图像建模问题上。美国纽 约大学s t o n yb r o o k 分校的虚拟现实实验室最早引入了g p u 结合格子b o l t z m a n n 方法进行科学计算的硬件加速。w e i x i a om e i 等f 9 】在2 0 0 1 年首次利用图形处理单 元来进行格子b o l t z m a n n 方法的二维数值计算。随后该研究组的l iw d 掣1 0 1 1 ,1 2 】 采用格子b o l t z m a n n 方法来模拟流体和烟的效果,整个g p u 操作是通过r e g i s t e r c o m b i n e r 来实现。f a nz h e 掣1 3 1 利用多个g p u 互联,使用m p i 机制,搭建了 g p u 的集群,实现了三维流体的模拟。 国内,中科院软件研究所吴恩华等【1 4 】在g p u 上采用半拉格朗日方法来求解 三维n a v i e r - s t o k e s 方程组。朱红斌等人【1 5 】引入格子b o l t z m a n n 方法,在g p u 上 实现了两种液体组成的混合流的模拟,得到的硬件加速比约为3 倍。 2 0 0 7 年,n v i d i a 公司发布了c u d a ( c o m p u t eu n i f i e dd e v i c ea r c h i t e c t u r e ) 3 上海大学硕士学位论文 以及支持c u d a 的一系列g p u ,专门研制了作为计算用途的g p u 和计算架构, 把g p u 通用计算推向了高潮。 基于c u d a 的g p u 通用计算已经在许多计算领域都得到了应用。s h i n n 等 人【1 6 】基于c u d a 利用流体力学的计算方法进行了在金属板上的二维热传导数值 计算,获得1 7 x 的加速性能。t o l k e t l 7 】用格子b o l t z r n a n n 方法进行了二维流场的 数值计算得到了l o x 的加速性能,不过边界条件和流场入口及出口都为最简单形 式,而且并未适度划分块。本文的实验正在这基础上对块进行划分,从而进一步 提升计算性能。b r a n d v i k 、p u l l a n t l 8 】利用g p u 进行了欧拉方程的求解,结果与 c p u 求解相比,g p u 求解2 d 欧拉方程硬件加速比为2 9 倍,3 d 欧拉方程求解 加速比为1 6 倍。c o h e n 、m o l e m a k e r 等人【1 9 】基于g p u 通用计算利用有限差分方 法求解不可压缩n a v i e r - s t o k e s 方程组,从而模拟了低粘性流的动画过程,获得 5 5 x 的加速性能。图形加速方面,o f i rw e b e r , y o h a is d e v i r 等人【2 0 】提出一种o ( n ) 复杂度的几何图像表面一阶近似的距离测量方法,利用g p u 进行数值计算后得 到了比c p u 高很多的计算性能。k i m 2 1 】基于g p u 采用有序体数据的体绘制方法 进行了大型3 维和4 维标量场的有效渲染。j o s h u aa a n d e r s o n 等人【2 2 】在单个 g p u 上面做了整个分子动力学的应用,而且得到的计算性能相当于3 0 个计算核 的集群,等等。诸多应用都采用了g p u 硬件加速,最终目的是利用较低的价格 换来更高的计算性能,或者同等的计算时间内获取更高的计算精度。 1 3 论文的主要研究内容 计算流体力学( c f d ) 是一个计算量和计算复杂度非常大的一个计算领域, 随着对流体模拟的范围要求越来越大,计算量呈非线性增加,实时性要求越来越 高。在g p u 通用计算出现之前,人们只能对巨大的数据运算量叹息,解决方法 是寻求相似算法或者近似解来拟合计算结果,而这样的结果往往不能得到精确解 和最优解,例如n a v i c r - s t o k e s 方程组的求解。利用高性能计算机,固然能解决 计算性能的问题,但是巨大的计算机集群耗资太大。当今研究人员在利用高性能 计算机对各种流场计算的同时,把目光开始转向了利用g p u 乃至g p u 集群进 行大规模的各种流场模拟,诸如云彩、烟火、波纹、液体流动等等。 格子b o l t z m a n n 方法具有算法相对简单、精度高、压力可直接求解、适合处 4 上海大学硕士学位论文 理复杂边界条件的优点。格子b o l t m n a n n 方法是当今主要的计算流体动力学方法 之一,格子b o l t z m a n n 方法具有天然的并行性,而g p u 的多管线技术是g p u 高 度并行化的基本,选择两者并相结合来进行流体模拟,在计算时间上将会大大的 缩短,提高模拟流体运动的效率,节约实验的时间,从而提高科研效率。 本文主要分为两大部分,分别研究了基于图形接口的g p u 通用计算和基于 c u d a 的g p u 通用计算。主要的应用方面是针对计算流体力学中的格子 b o l t z m a n n 方法,基于这种方法运用了两种g p u 通用计算进行数值计算实验。 根据格子b o l t z m a n n 方法的算法特点和计算步骤设计了计算的流程和性能提高 的放法,最后得到了期望的硬件加速性能。 文章的主要内容按章节安排如下:第一章,介绍研究目的和背景,以及国内 外研究现状。第二章,介绍基于图形接口的g p u 通用计算和基于c u d a 的g p u 通用计算基本原理,说明g p u 和图形计算的流程,引入通用计算的相关步骤。 第三章,介绍了格子b o l t z m a n n 方法的基本原理、发展情况及其边界处理条件, 以及格子b o l t z m a n n 方法的显著特点。第四章,利用g p u 通用计算和格子 b o l t z m a n n 方法来进行二维方腔流畅的数值模拟,并利用得到的实验结果来分析 硬件加速比得以提高的原因,以及加速比的上限产生的原因。第五章,描述基于 c u d a 的g p u 通用计算的实验。描述了利用c u d a 进行并行计算的多线程并行 编程模型以及运行时多线程的分配设计,存储器模型以及分配方法,利用两个实 验验证了计算性能的提高。第六章,总览全文,简要回顾了两种g p u 通用计算 方法,并联系当前国际上的研究成果分析g p u 通用计算的前景。 上海大学硕士学位论文 第二章g p u 通用计算的原理 2 1 基于图形接口的g p u 通用计算 g p u 原本设计的目的是为了解放计算负荷很重的c p u ,把各种图形方面的 计算放到g p u 中进行,而c p u 执行其他的代数运算、指令操作、逻辑操作等等。 图形计算载入g p u 后,就进行几何处理、顶点处理、像素处理等过程,而这些 过程中都是分批各自独立进行,因此g p u 采用的是多管线技术,也就是图形流 水线,以达到很高的计算性能。 2 1 1 图形流水线 三维世界的大多数高层次方面操作由管线中应用阶段部分的应用软件负责 管理,余下的三个主要阶段通常由一套应用程序接口( a p i ) 负责管理,例如s g i 的o p e n g l ,微软的d i r e c t 3 d ,或p i x a r 的r e n d e r m a n 。a p i 通过调用图形驱动程 序和硬件来在硬件中执行绝大多数的图形操作。图形a p i 实际上是为应用提供 了硬件抽象,反过来说,为应用提供了真正的设备无关性。因而,这些a p i 通 常被称作硬件抽象层。它们的设计目标非常简明应用开发者一旦为某个a p i 写出了程序,这个程序就可以运行在任何支持这个a p i 的硬件上。相反的,硬 件制造者为这些a p i 编写驱动程序,这样为这些a p i 写的应用就可以在它们的 硬件上运行了,如图2 所示。 应用程序( c a d 、g a m e 等) 之多之多 i a p i ( d i r e c t 3 d 、o p e n g l ) i 。, 之多之多 硬件设备驱动程序 图2 图形应用程序调用示意图 某种意义上来说,三维图形处理器就是物理具体化的三维管线,数据在这里 从一个阶段“流入一到另一个阶段。管线中的大多数应用或者场景阶段和早期的 6 上海大学硕士学位论文 图元阶段的操作是对每顶点进行的,然而挑选和裁剪是对每个三角形进行的,渲 染操作是对每像素进行的。为提高性能,管线中不同阶段的计算可以重叠。例如, 顶点和像素操作在d i r e c t3 d 或o p e n g l 中都相互独立,所以可以做到一个三角 形在图元阶段时,另一个在光栅化阶段。而且,图元阶段对两个或多个顶点的计 算和光栅化阶段对两个或多个顶点的计算( 来自相同的三角形) 可以同时执行。 管线的另一个优势是,因为在图元阶段不会有数据在顶点间传递,渲染阶段像素 间也没有数据传递,芯片制造者可以实现多个像素管线,通过并行处理这些独立 实体来获得可观的性能提升。 2 1 2d i r e c t 3 d1 0 流水线 下面用最新的d i r e c t 3 d1 0 t ”】系统来具体描述g p u 的流水线( 图3 所示) 。 图3d i e c t 3 d 标准的g p u 流水线【2 3 】 ( 来自d a v i db l y t h e 的“t h ed i r e c t 3 d10s y s t e m ”) 7 上海人学硕士学位论文 g p u 流水线可分为如下几个阶段:数据输入阶段,顶点变换阶段,几何着 色阶段,裁剪、投影、装配、早期深度判别、光栅化阶段,像素着色阶段,输出 整合阶段。 输入汇编器( i n p u ta s s e m b l e r ) 将从输入流中将所有的顶点数据转换为浮点 格式。每一个流对象指定了一个顶点结构。一般来说g p u 按照顶点的输入顺序 处理,必要时应该使用索引缓冲提高性能。 顶点着色器( v e r t e xs h a d e r ) 通常用来把顶点从模型空间变换到裁剪空间, 在这个过程中做简单或者复杂的空间变换。这样的计算可以分别在每个顶点上进 行,从而,顶点着色器读取一个顶点,输出一个顶点。顶点着色器与其它可编程 阶段一样,有一些共同的特性,包括支持扩展的浮点、整数、控制类型,可访问 内存缓冲( 纹理) 以及参数( 常量) 缓冲区。 几何着色器( g e o m e t r ys h a d e r ) 把同一图元的所有顶点作为输入,产生新的 顶点或者图元。输入和输出图元的类型不一定要匹配,但要固定在着色程序中。 几何着色器程序同样可以在不产生新几何体的情况下,把额外的属性附加到图元 上,比如为每个图元计算额外的属性。由于可以访问当前图元的所有顶点,因此, 计算三角形平面方程之类的几何属性将会容易。 装配和光栅化阶段( s e t u pa n d r a s t e r i z a t i o ns t a g e ) 是一个功能固定的阶段, 用来处理剪切,剔除,透视划分,观察点变化,图元设置,裁剪,深度偏移,以 及片段生成。现代g p u 设计总是包含某种形势的早期深度处理。光栅化阶段的 输入是单一图元的顶点以及属性,输出一系列像素片段,而在本文第一部分描述 的g p u 通用计算方案中,就是利用光栅化阶段触发了各个像素着色器的执行。 像素着色器( p i x e ls h a d e r ) 程序指定了通过顶点属性插值产生片段属性的方 式。通过片段边界,可以使用赋值限定器来指定所需的值。像素着色器读取单一 像素片段的属性,输出包含1 8 个属性( 颜色) 以及任意深度值的单一片段。每 个属性值( 元素) 要么被分别写入单独的颜色缓冲中( 称为渲染目标) ,要么完 全丢弃( 不输出片段) 。 输出整合( o u t p u tm e r g e r ) 接收来自于像素着色器的片段,执行普通的模板 和深度测试操作,以及渲染目标混合。像素着色器必须分别为每个渲染目标输出 单独的值( 不支持多点传送) ,从这里可以看出各个像素的计算及其生成的结果 8 i 海大学硕十学位论文 是相互独立的每个像素都会经历各自的像素着色程序,最终得到各自的结果 这种并行性的思想应用到g p u 通用计算就成为了并行计算的理念。 2 l3 结合图形流水线的g p u 通用计算 传统意义上的g p u 是用来减轻c p u 对图形处理的负荷的,从而把c p u 解 放出来进行更有意义的程序控制、系统控制等方面。g p u 所采用的核心技术有 硬件坐标转换与光源( t l ) 、立方环境材质贴图和顶点混合、纹理压缩和凹凸 映射贴图、双重纹理四像索2 5 6 位渲染引擎等。g p u 具有多条图形渲染流水线, 从而使得图形处理速度得到极大的提升。对应的图形流水线如图4 所示 显存11 _ 7 _ _ 忑1 l 系统内存i _ 刨 黼储器 i 一 1 1 一_ 1 图4 图形流水线 图形处理的并行性以及可编程功能一直是图形硬件发展所追求的目标, n o 曲c a r o l m a 大学设计的p i x e lp l a n e s5 图形系统作为8 0 年代后期图形处理能力 最强的处理系统,曾经达到每秒绘制一百万个p h o n g 模型多边形的能力,p i ) 【e l p l a n e s 的高度并行性是由像素级的驱动单元实现的。虽然具有超级的处理速度, 但是p e l p l a n e s 受到了s i m d 结构的并行处理方式的约束,其高效性只适用于 那些能够有效分解其算法到s i m d 结构上运行的图形应用。 图形处理的及时性以及可编程功能一直是图形硬件发展所追求的目标之一 通常图彤硬件设计的结构具有以下特征【l 】: 1 ) 任务并行:独立处理器并且通信量极少; 2 ) 数据并行:流水线结构,同时处理相同计算的数据、计算中每步的数据 上海大学硕上学位论文 元素无相关性、高强度算法、能使a l u s 充分利用、但要重新设计算法; 3 ) 聚合( 如x = a 【i 】) :间接从内存读数据、自然映射纹理获取技术、利用数 据结构和数据流; 4 ) 离散( 如a i 】= x ) :间接写内存,需要很多数据结构、通常由g p u 完成。 具有可编程特性的g p u 带来新的特征【1 】: 1 ) 在顶点级和像素级提供了灵活的可编程特性; 2 ) 在顶点级和像素级运算上都支持i e e e 3 2 位浮点运算; 3 ) 支持多遍绘制操作,避免了c p u 和g p u 通信的开销; 4 ) 支持离屏渲染技术,把纹理当作缓存使用,同时增强了渲染到纹理的能 力1 2 4 。 在g p u 发展之初,研究人员运用g p u 进行了在计算领域的研究,运用汇编 语言和底层的着色程序进行编程,实现部分数学计算,计算性能较好。而新产生 的具有可编程特性的g p u 可以灵活的对管线进行编程,更适合在计算领域展现 其强大计算能力。2 0 0 3 年是g p u 在通用计算领域具有里程碑意义的一年,g p u 正式应用在计算领域。通过g p u 和c p u 计算结构的比较,可以看出它们具有极 大相似性【l 】,如表1 所示: 表lg p u 与c p u 的计算结构对应关系 c p ug p u 数据流、数组纹理 可循环主体程序顶点、片段处理程序 输出数组渲染的目标 内存读获取纹理 内存写写入帧缓冲 在g p u 中可编程的部分属于顶点和片段管线。传统意义上的g p u 通过光栅 化的操作来实现对图形进行插值操作。可编程的g p u 就是利用插值操作,在顶 点和片段处理程序中进行编程,再通过光栅化阶段触发相应的像素着色器( 片段 程序) ,从而对每个对应的像素进行插值计算,以实现更复杂的图形变换,产生 更高级的颜色光照处理效果。复杂的插值计算利用在科学计算中时,就成为了通 用计算。 1 0 上海大学硕士学位论文 对应于顶点和片段管线,g p u 中处理器可分为顶点处理器和片段处理器, 分别处理顶点程序和片段程序,它们各具特点【l j : 顶点处理器可进行完全编程( 具有s i m d 和m i m d 能力) ,具有处理四维向 量的能力,能改变当前顶点的位置,在获取顶点纹理时,可以对顶点采用随机存 取器。但是顶点处理器具有一些不足之处:有离散的能力却没有聚合的能力,不 能从其他顶点读取信息、只能读取一小块指定的内存,它可以从纹理获取但是不 能从当前顶点流获取。 片段处理器可进行完全编程( 具有s i m d 能力) ,能处理4 维向量、读随机 存储器。然而也有不足之处:有聚合能力却没有离散能力,可以间接获取纹理, 但是没有间接内存写、输出地址固定到特殊像素的能力。相比之下,片段处理器 比顶点处理器在通用计算中具有更实用的地方:更多的片段管线、直接输出、更 好的内存读取能力。所以,实验中主要利用片段处理器进行对纹理的一系列操作。 用一个简单的向量加法描述基于图形接口的g p u 通用计算的工作流程( 如 图5 所示) : 磊丽丽雨网网 蓦一一 读入着色程序 设置着色参数 渲染方形 c g 、札s l 、g l s l 、 a s h l i 等着色语言编 写的应用程序 读回数据到缓冲区陋z 纠结果向量c 图5g p u 计算向量c = a + b 的流程图 计算两个向量a 和b 之和,首先把向量输入到纹理单元,确定渲染目标, 在分配好存储空间之后读入自己编写的应用程序( 在此作加法运算) ,再设置一 些图形方面的着色参数。随后通过渲染过程,使得在渲染图形区域中的每个像素 都进行了插值计算。如果程序设计为循环,则返回到绑定输入纹理步骤,如果没 有循环,则直接输出结果到缓冲区( f r a m eb u f f e r ) ,最后把结果从g p u 读取到 内存。第四章将利用这样的图形流水线进行g p u 通用计算的应用。 r 簿大学十学位论文 2 2 基于c u d a 的g p u 通用计算 近几年来,出现的g p u 为图像和非图像处理提供了难以嚣信的资源阱1 。发 展背后的主要原因是g p u 是特定于计算密集的、高并行的计算,而这正是图形 渲染所需要的,因此g p u 设计了更多的晶体管专用于数据处理,而非数据高速 缓存和流控制,如图6 所示。 c p u g p u 馑i6g p u 将更多的晶体管用丁数据处理 具体来说,现在的g p u 在某方面来| 兑被号用于解决数掘并行计算( 同一程 序在许多数据元素上并行执行) 、具有高运算密度( 算术运算与内存操作的比例) 的问题。因为同一程序为每个数据元素执行,所以对高级流控制具有较低的要求; 又因为在许多数据元素上执行并具有高运算密度,所以内存访问延迟隐藏在使用 计算而非大的数据高速缓存的背后。数据并行处理将数据元素映射到多个线程进 行并行处理。处理大型数据集合( 比如数组) 的许多应用程序可以使用数据并行 编程模型来加速计算。在三维图形的渲染中大型像素和顶点集舍映射到并行线 程。 2 2 1c u d a 的特点 在上文中讨论了利用o p e n g l 和c g 语言进行g p u 通用计算的一方面应用, 虽然在结果中得到了较好的性能,但是,设计计算流程和配置函数的过程是非常 复杂的,而且在计算范围上受到了限制。基于图形接口的g p u 通用计算有以下 几点不足: 基于图形接口的g p u 通用计算只能通过图形接口进行编程,增加了不必 l 海人学颈学位论文 要的学习量: 调用图形接1 3 函数和配盖参数的j r 销较大; 具有g p u 纹理和帧缓冲区的数据映射和数据格式对应查找等开销: g p ud r a m 可以用一般方式读取,即g p u 程序可以从d r a m 的任何部 分聚合数据元素,但是不能用一般方式写入,即不能将消息离散到 d r a m 的任何部分,这就大大降低了编程灵活性: 相对来说c u d a 是一种新型的硬件和软件的体系结构,分配和管理g p u 上 进行数据并行计算的相关设备,而无需将其映射到图形接口。操作系统的多任务 机制负责管理多个并发运行的c u d a 和图形应用程序对g p u 的访问。c u d a 相 对有如下优势: 随机访问字节内存,线程可以访问内存任何地方: 无限制访问内存,线程可根据需要读写多个内存位置; 共享内存和线程同步,线程可以协作把数据装入共享内存,任何块内线 程可以访问块内的共享内存的任何位置: 没有图形a p i 的额外丌销。 值得注意的是c u d a 进行编程计算中,已经没有基于图形接口的g p u 通 用计算的四分量数据类型( 如c g 程序中的f l o a t 4 表示4 维的向量) ,此时并行计 算不具有按照像素的各个分量流水线特性,而是多核的集群理念进行并行计算。 c u d a 的软件层次结构包台如下几层:硬件驱动层、应用编程接口层、 运行时库和更高级的一些通用数学程序库。如图7 所示: 图7 c u d a 软件层次结构( 来自n v i d i a ) c u d a 编程接口包括了对c 语言的扩展,使得学习曲线降低。c u d a 同时 上海 学碰l 学位论文 提供了一般内存寻址,以实现更多的编程灵活性,如图8 所示:聚合和离散的内 存操作。从编
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 讲解员操作评估模拟考核试卷含答案
- 2025年下半年教师资格证考试《综合素质》(中学)真题(解析)附答案
- 2025年全国计算机等级考试一级笔试真题解析及答案
- 2025年上半年教师资格证考试《保教知识与能力》(幼儿园)题及答案
- 2026年秋季开学高中开学第一课(时间管理)课件
- 2026年秋季开学高三开局即冲刺动员大会课件
- 2026年秋季开学初中物理启蒙心理健康讲座课件
- 2024年嵌入式面试试题(附答案)
- 2026浙江省教师职称考试(物理)历年参考题库含答案详解3卷
- 2026浙江卫生系统招聘考试(英语)历年参考题库含答案详解3卷
- 民宿员工聘用合同范本
- 企业级BOM培训课件
- 主井提升培训课件
- 浙江金石亚药医药科技有限公司迁扩建项目环评报告
- 酒店安全巡查日常检查记录表
- 招商岗位测试题及答案
- 医院后勤管理与设备职责
- 《左传》完整版本
- 周三多-管理学:原理与方法(第七版),第三章
- 无人机遥感图像融合
- 高考英语复习读后续写练习 善举篇 改变家乡为无法使用操场的孩子们带来福音 课件
评论
0/150
提交评论