(生物医学工程专业论文)基于gpu的通用计算的方法研究.pdf_第1页
(生物医学工程专业论文)基于gpu的通用计算的方法研究.pdf_第2页
(生物医学工程专业论文)基于gpu的通用计算的方法研究.pdf_第3页
(生物医学工程专业论文)基于gpu的通用计算的方法研究.pdf_第4页
(生物医学工程专业论文)基于gpu的通用计算的方法研究.pdf_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

a b s t r a c t a sg r a p h i c s p r o c e s s i n gu n i t ( g p u ) h a sb e e nd e v e l o p i n gr a p i d l yr e c e n t l yw i t has p e e do v e r m o o r sl a w , v a r i o u sa p p l i c a t i o n sa b o u tc o m p u t e rg r a p h i c sh a v eg r o w ng r e a t l y a tt h es a m et i m e , t h eh i g h l yp r o c e s s i n gp o w e r , p a r a l l e l i s ma n dp r o g r a m m a b i l i t ya v a i l a b l en o w a d a y so dt h ec u r r e n t g p um a k et h eg e n e r a l p u r p o s ec o m p u t a t i o na v a i l a b l e i ns p i t eo fa l lt h er e n d e r i n gp o w e r , i ti sn o tp o s s i b l eo rm e a n i n g f u lt ou s ea l g o r i t h m sd e s i g n e d w i t hc p ui nm i n do ng r a p h i c sh a r d w a r e t h ee s s e n t i a ld i f f e r e n c ei st h a tg p up r o v i d e sah i i g h l y p a r a l l e l s i n g l ei n s t r u c t i o nm u l t i p l ed a t as e t ( s i m d ) a r c h i t e c t u r e t h ek e yt oh a r n e s s i n gt h i s r e s o u r c ei sr e e n g i n e e r i n gt h ec o m p u t a t i o n a l l ye x p e n s i v ea l g o r i t h m st ot a k ea d v a n t a g eo ft h i s a r c h i t e c t u r e 舔w e l la sm a k i n gu s eo fr e n d e r i n go p t i m i z a t i o n sb u i l t i n t ot h ep r o g r a m m a b l e g r a p h i c sp i p e l i n e t h i st h e s i sp r e s e n t ss e v e r a ln o v e lg r a p h i c sa p p r o a c h e sw h i c hu t i l i z e p r o g r a m m a b l eg r a p h i c sh a r d w a r et oo b t a i nb o t hh i g hf r a m er a t ep e r f o r m a n c ea n dh i g hq u a l i t y r e s u i t o u rr e s e a r c hw o r k si nt h i st h e s i sm a i n l yf o c u so nt h ef o l l o w i n ga s p e c t s : 1 f f to ng p u b a s e do nt h ed i ta l g o r i t h m ,c o n s i d e r i n gt h en e wa c h i e v e m e n t so fr e l e v a n tr e s e a r c h ,w e i m p l e m e n tf f to ng p u ,t h ec o m p a r i s o nb e t w e e ng p ua n dc p ui nt e r m so fp r o g r a md e s i g ni s c o n d u c t e da n dt h ep e r f o r m a n c ei se v a l u a t e d e x p e r i m e n t a lr e s u l t ss h o wt h a tg p ug i v e sf a s t e r r e s u l t st h a nc p ud o e s 2 ,d c t o n g p u b yt h i st h e s i sw ee x p l o r et h ep r o c e s s i n gp o w e ro fg p u sf o rd i g i t a li m a g ec o m p r e s s i o nu s i n g d i s c r e t ec o s i n et r a n s f o r m e x p e r i m e n t a lr e s u l t ss h o wt h a tg p ug i v e sf a s t e rr e s u l t st h a nc p ud o e s a tt h es i g h to fe x p e r i m e n t a lr e s u l t sw eb e c o m es u r et h a tg p u se f f i c i e n tp r o c e s s i n gp o w e ra n d a l g o r i t h m sa r eg o o df i tf o ri m p l e m e n t i n gd i g i t a li m a g ep r o c e s s i n gs t a n d a r d s f o rm a k i n gt h e p r o g r a me v e nm o f e f f i c i e n ta a na l g o r i t h mi su s e dt oc a l c u l a t et h ec o e f f i c i e n t so ft h ed c t c o m p r e s s i o n a n du s i n gt h es h a d e r sa tt h es t a g eo fp a r t i t i o n i n go ft h ed c tb l o c k sw i t hc g p r o g r a m m i n gl a n g u a g eh e l p su sa ts a v i n gt h em o s t o ft h ep r o c e s s i n gt i m e i ( e vw o r d s g r a p h i c sp r o c e s s i n gu n i t ( g p u ) 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 g p u ) f f t d c t i i 东南大学学位论文独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得 的研究成果。尽我所知,除了文中特另i j j n 以标注和致谢的地方外,论文中不包含 其他人已经发表或撰写过的研究成果,也不包含为获得东南大学或其它教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均 已在论文中作了明确的说明并表示了谢意。 研究生签名:壑迄e l 期:丝堕:星! 乡 东南大学学位论文使用授权声明 东南大学、中国科学技术信息研究所、国家图书馆有权保留本人所送交学位 论文的复印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。本人 电子文档的内容和纸质论文的内容相一致。除在保密期内的保密论文外,允许论 文被查阅和借阅,可以公布( 包括刊登) 论文的全部或部分内容。论文的公布( 包 括刊静) 授权东南人学研究生院办理。 、, 一l 泣 包 第一章绪论 1 1g p u 用于通用计算的相关背景 g p u 用于通用计算( g e n e r a 卜p u r p o s ec o m p u t a t i o no f fg p u s ) 及其相关方而的问题已经 成为一个f j 分热门的话题。g p g p u 指的是利用图形膏来进行一般意义上的计算,而不是瞽纯 的绘制。让人们感到惊奇的足,在计算机图形处理器多年迅速发展的进程中,几乎没有人认 真的预言过这一重人应j f j 。而在今大,南于g p u 具备了极高的性能和前所未有的发展速度以 及普及率,似乎人们对于g p u 的这一新的应用前景给予了空前高的期望和热情。下面一些数 据也许能够说明人们为什么对于基t g p u 的通用计算如此关注。 1 、白诞生起,g p u 就将摩尔定律的定义大大扩展。研究表明,从1 9 9 3 年开始,g p u 的 性能以每年2 8 倍的速度增长,这个数字大大超过了p c 其他子系统的发展速度。 2 、一块工作频率为3 o g h z 的p e n t i u m4 处理器,其晶体管数目为1 2 5 亿个,即使算 上s s e 指令集的s i m d ( 单指令并发多数据流,这种情况是浮点运算卜吞吐能力的最理想状 况) ,也只有6 g f l o p s 的峰值浮点处理能力,而同期的一块n v 4 0g p u 就有2 2 2 亿个晶体管。 峰值浮点运算能力很轻易超过4 0 g f l o p s 。 3 、g p u 拥有自己的独寺子存储系统一显存,它拥有比系统丰内存高得多的带宽。i n t e l 曾经为它的p e n t i u m4 系列处理器所拥有的1 0 6 6 m h z 前端总线所提供的8 6 g b s 的带宽倍 感自豪,而同期一块普通的g e f o r c e6 8 0 0 就拥有2 0 g b s 以上的显存带宽。 由上碰几点可以看出,因为具箭强大的并行处理能力和极高的存储器带宽,g p u 如果被 抽象成一个“流处理器”( s t r e a mp r o c e s s o r ) ,来用于诸如科学运算、数据分析、线性代数、 流体模拟等需要大量重复的数据集运算和密集的内存存取的应用程序,那么我们就能获得一 些比c p u 强悍得多的计算能力。相比之下,c p u 本质 二是一个标量计算模型,讨4 算单冗偏少, 年要针对复杂控制和低延迟而非高带宽优化。正是囚为这些优势,使得g p u 比c p u 更适用于 流处理计算。 1 2g p g p u 研究进展 1 9 9 9 年n v i d i a 公司提出g p u 旧1 的概念,并在g e f o r c e 2 5 6 中实现了硬件变换和光照计算。 随着,5 , ) 1 技术的发展和强人的市场推动,近年来图形处珲器( g p u ) 性能得到人幅度提高,尤 其引人注意的是出现可编狸特性。可编程性使得人们可以充分利用g p u 上提供的运算器米设 计些箅法通过整个渲染流水线来完成定的任务。由于这些运算器本身设计的原凶,使得 在流水线中存在多个处理单元,即存在一定的并行处理单元,从而使某些运算可以得到加速。 但是起初人们j 能书写汇编指令,通过a p i 接口传给g p u 来进行编程,所以为_ r 方便g p u 编程, 硬件厂商n v i d i a 推出t c g 实时绘制语言。“,微软椎f :h l s l 语吉。“,3 dl a b s 也推出了g l s l “”。 这些实n 、j 绘制语言的发展,极大地方便了人们利用g p u 米做些计算方面的一j :作。整个流水 线伞丽支持浮点数运算,这特性使得计算的精度得到大大提高,i f i j 不冉需要为了达到定 的精度来设计复杂的操作。 面对日益强大的g p u ,人们首先开始将图形流水线的某j l 鬯处理阶段以及某些图形算法从 c p u 向g p u 转移,如局部光照计算,凸【l 1 映射绘制等。向最不可思议的是,除了计算机图形学 本身的成用,还涉及到其它领域的计算,以全于基于图形硬件的通用计算( g p g p u ) 这几年 来成为g p u 的应用之一,并成为个研究热点。 g p g p u 的应用研究进展很快,其涉及的领域也在不断扩人。2 0 0 4 年在洛杉矶举行了第一 次g p 2 会议( a c mw o r k s h o po ng e n e r a l p u r p o s ec o m p u t i n go ng r a p h i c sh a r d w a r e ) ,以讨 论这方而的应用。h t t p :w g p g p u o r g 提供了这方面最全面的信息,爿:作了详细分类。 下r 豳列出了一些目前已经存在的应用: 1 ) 代数计算 2 ) 儿何处理 3 ) 偏微分方程数值求解,如流体模拟,冰晶体生成 4 ) 数据库操作 5 ) 频谱变换和滤波,图像处理,如香港中文大学开发的离散小波分析程序包 6 ) 碰撞榆测、运动规划 7 ) 优化计算 8 ) 声音合成,女h b i o n i c f x 软件( h t t p :w w b i o n i c f x c o m ) 9 ) 其他应用还在不断涌现 在利用g p u 实现f f t 方画,s p i t z e r 【6 1 的论文提出了利用g p u 实现一维f f t 的方法,但是只 能处理实数的f f t ,并月在g p u 卜的计算效率并没能好过在c p u 卜的效率。m o r e l a n d 和a n g e l 也利用g p u 实现,通过灵活组织索引避免重新排序。虽然由于当时条件限制( 他们使用的是 g e f o r c e f x 系列的g p u ) ,最终的效率不如f f t w 库,但却展示。r g p u 在实现f f t 算法上的。个很好 的应用前景。s u m a n a w e e r a 和l i u 旧。幂u i l l q u a d r of xn v 4 x 系列g p u 上的立体模式实现了2 df f t , 并把计算量在顶点着色器和像素着色器中做了分摊,但是这种分摊并没有收到很明显的效果, 因为g p u 的顶点运算单元和像素运算单元存在运算能力的不均衡。我们使用按时问抽选( d i t ) 算法并且结合n v i d i ag e f o r c e 6 系夕f j 显卡的硬件特点,在g p u 上实现了二维复数f f t ,并且在 实现中利用f b o ( 帧缓存对象) 这一扩腱使得计算效率进一步提高。 在利用g p u 实现d c t 方面,b of a n g 等人h 。提出利用矩阵乘法在g p u 上高效实现d c t i d c t 的凡种技巧。该计算方法可以通过一个或多个渲染通道实现。在这几种技巧巾,多通道技术 对最终结果员献最大。这说明g p u 确实在并行处理方而具有优势。l e i fl a r s e n 训等人将f e i g 和l i n z e r 提出的计算d c t 的算法在g p u 上进行了实现,也取得了较好的效果。我们将计算离 散余弦变换的a a n 算法加以改进使萸能够在g p u 卜实现。从而在g p u j :实现了正向和反向的离 散余弦变换。并将其应刖于j p e g 图像压缩技术以加速数字图像的压缩速度。 1 3 本文组织 本文的主要部分共有托章,以基丁g p u 的通用计算的方法研究作为文章的主线,介绍了 所做的相关工作。 第1 亭 第2 章 第3 章 绪论。介绍了g p u 用于通用计算的相关背景以及g p g p u 的研究进展。 可编程图形硬件技术。介绍可编程馒件相关的软硬件知识和可编程图形流水线的 - t 作原理发架构。并对c p u 编柙和g p u 编稗进行了类比。 基于g p u 的快速傅立叶变换。使用按时问抽选( d i t ) 算法,结合相关研究的进展, 2 第4 章 第5 章 在g p u 卜- 实现了快速傅立j i f 变换( f f t ) ,讨论和分析了g p u 在g p g p u 中的技术原理和 应川方法,并且对g p u 与c p u 在该实现中的筹异和性能表现进行了比较。 基丁g p u 的离散余弦变换。介绍了离散余弦变换算法以及基于d c t 的i p e g 图像乐缩 技术。阐述了如何在g p u 上实现正向和反向的离散余弦变换。并且对g p u 与- c p u 在 该实现i | l 的筹异和性能表王兕进行了比较。 总结与体会。对本文的工作进行了总结并提出当f j g p g p u 所面临的问题。 参考文献 【l 】a a r o nl e f o h n ,i b ,p a t r i c km c c o r m i c k ,j o h no w e n s ,t i m o t h yp u r c e l l ,r o b e r ts t r z o d k a , g e n e r a lp u r p o s ec o m p u t a t i o no ng r a p h i c sh a r d w a r e ,i ng p g p u ,w w w g p g p u o r g ,e d i t o r 2 0 0 5 f 2 】n v i d i aw e b s i t e h t t p :w w w n v i d i a c o m o b j e c t g p u h t m l 【3 】c gw e b s i t e h t t p :w w w c g s h a d e r o r g 【4 】d i r e c t xw e b s i t e h t t p :w w w m i c r o s o f t c o m d i r e c t x 【5 】o p e n g lw e b s i t e h t t p :w w w o p e n 9 1 o r g 【6 】s p i t z e r ,j o h n 2 0 0 3 “i m p l e m e n t i n gag p u - e f f i c i e n tf f t ”n v i d i ac o u r s ep r e s e n t a t i o n , s i g g r a p h2 0 0 3 【7 】k e n n e t hm o r e l a n d ,e d w a r da n g e l 1 1 1 ef f to nag p u i np r o c e e d i n g so fg r a p h i c s h a r d w a r e ,p a g e s :1 1 2 一l1 9 ,j u l y2 0 0 3 【8 】s u m a n a w e e r at ,l i u ,d m e d i c a li m a g er e c o n s t r u c t i o nw i t ht h ef f t b p r o g r a m m i n g t e c h n i q u e sf o rh i g h p e r f o r m a n c eg r a p h i c sa n dg e n e r a l p u r p o s ec o m p u t a t i o n , a d d i s o n - w e s l e y ,2 0 0 5 【9 】b of a n g ,g s ,s h i p e n gl i ,h u i f a n gc h e n ,t e c h n i q u e sf o re f f i c i e n td c t i d c t i m p l e m e n t a t i o no ng e n e r i cg p u i e e ei n t e r n a t i o n a ls y m p o s i u m 2 0 0 5 2 :p 11 2 6 一l1 2 9 【1 0 】l e i fl a r s e n ,a n n ec a t h r i n ee 1s t e r ,s p e e d i n gu pt r a n s f o r ma l g o r i t h m sf o ri m a g e c o m p r e s s i o nu s i n gg p u s c i2 0 0 6 【l l 】e f e i ga n de l i n z e r s c a l e dd c ta l g o r i t h m sf o rj p e ga n dm p e gi m p l e m e n t a t i o n so n f u s e dm u l t i p l y a d da r c h i t e c t u r e s p r o c e e d i n g so ft h es p i ec o n f e r e n c eo ni m a g ep r o c e s s i n g a l g o r i t h m sa n dt e c h n i q u e s ;s a nj o s e ,c a ;( u s a ) ;2 5f e b lm a r 19 9l ,p a g e s4 5 8 _ 4 6 7 , 1 9 9 1 3 第二章可编程图形硬件技术 2 1 可编程图形硬件的发展 多年来计算机图形处理器( g r a p h i c sp r o c e s s o ru n i t ,g p u ) 以大大超过摩尔定律的速度高 速发展,极大地提高了计算机图形处理的速度和图形质量,并促进了计算机图形相关应用领 域的发展。 目前微机平台的图形处理器已经达到了非常高的性能,n v i d i ag e f o r c e6 8 0 0u l t r a 图形处 理器的处理熊力已经q f 以达到4 0g i g a f l o p s ,f i l i n t e l3 g h zp e n t i u m4 采用最新的s s e t r 令集 也只能达到6g i g a f l o p s 。自从1 9 9 3 年以来,g p u 的性能以每年2 8 倍的速度增长,估计这 样的增长速度还可以维持5 年左右的时间,现在每隔半年左右,新的一代g p u 的处理速度便 会提高倍i l 】。 图形处理器技术的迅速发展带来的并不只是处理速度的提高,还产生了很多全新的图 形硬件技术其中最弓 入注目的便是钮图形硬件处理管道的顶点处理和像素处理模块中弓l 入 了可编程性,使得用户可以通过程序方式控制图形流水线的执行,极大地扩展了图形处理器 的能力和应用范闸。图2 1 为一个最基本的可编程图形硬件的框架,其中阴影模块代表可编 程模块。 搋丸臻垂 c = ,考:琥镓鬃 冷 图2 1 可编程的图形硬件框架 狻蹦彩色缓 r 气 从上图可以看出,在顶点级操作上,引入了硕点着色器( v e r t e xs h a d e r ) 处理每个顶点,用 户口j 以通过自乙编写代码实现专门的光照明模型。经过光栅化后,在像素处理阶段,引入的 像素着色器( p i x e ls h a d e r ) 可以实现对每个像素的可编程操作。顶点着色器和像素着色器都是 典型的流处理机( s t r e a mp r o c e s s o r ) ,这种流处理机和传统的向量处理机的主要区别在于,它 不具有人容量的快存存储器川1 以读写,只是直接在芯片卜利用临时寄存器做流数据的操作。 对于g p u 而矗,图形流数据分别是顶点图元以及光栅化后的像素;根据图形处理的特点,g p u 流处理的元素为4 个单元的向量,可以利用它米表示i 维齐次坐标,三维卒间齐次向量,颜 色等数据,正是这种流处理机的并行结构,实现了指令的并行处理,f 1d 订绝人部分的g p u 都拥有多条可以并行的s h a d e r 管线,这种体系结构使得典彳i 仪可以用于高效图形绘制,而 日u j 以成为通心并行计算:平台。 自从1 9 9 8 年以来,g p u 的功能迅速更新,i r 均每一年就有新的- - i t g p u 问l u :,在现代 g p u 概念出现以前,只有s i l i c o ng r a p h i c s ( s g l ) 等图形工作站卜的特殊的硬什才具有綦于硬件 的顺点变换和纹珲映射功能。第一代图形处婵器出现在1 9 9 8 年后期,串要代表为n v i d i a t n 佗,a t ir a g e 和3 d f xv o o d 0 0 3 ,这止与处理器主要处理光栅化部分,部分:芯片支持多纹理, 可以在光栅化过程中完成多j 隔纹珊的融合操作;从1 9 9 9 年后期丌始,第二代g p u ( n v i d i a 4 g e f o r c e2 5 6 ,g e f o r c e2 和a t ir a d e o n7 5 0 0 ) i q 以处理顶点的矩阵变换和进行光照计算,但此 时还没自。出现真正的可编程功能:第二三f 弋g p u ( n v i d i ag e f o r c e3 ,g e f o r c e4 ,a t ir a d e o n8 5 0 0 , 大约2 0 0 1 年牟2 0 0 2 年早期) 有了重要的技术变革,此时图形硬件的流水线可以作为流处理 器来解释,顶点级m 现了- u j 编程性,像素级也 h 现了有限的町编程性,但有像素级程序中, 访问纹理的方式不| l 格式受到一定限制,只有定点数可用;第阳代g p u ( n v i d i ag e f o r c ef x s e r i e s ,a t ir a d e o n 9 7 0 0 9 8 0 0 ) 的顶点和像素可编程性史加通用化,依赖纹理照为灵活,可以 索引方式访问数据,g p u 具备了浮点功能,纹理中保存的值不再依赖于【o ,l 】范围,可以读写 一般的浮 数;第五代g p u 以n v i d i ag e f o r c e6 8 0 0 为代表l l0 比j ,功能相对以前更为丰富,灵 活,项点级程序可以访问纹理,支持程序的动态条件分支,像素级程序也开始支持分支操作, 如循环,i f e l s e 等,支持子函数调用,在纹理滤波和融合过程中支持6 4 位的浮点精度,同时 支持多个渲染目标。j 。 目前最新的可编程图形硬件己经具备了下列功能: ( i ) 存顶点级和像素级提供了灵活的口j 编程特性。 ( 2 ) 在顶点级和像素级运算上都支持i e e e3 2 位浮点运算,可进行高精度的绘制。 ( 3 ) 完全支持4 元向帚的数据格式( 齐次坐标,法向等) 。方便了图形程序的设计与开发。 ( 4 ) 具有岛带宽的内存传输能力( 2 7 。lg b s ) 。具备强人的数据吞吐能力。 ( 5 ) 支持绘制到纹理的功能( r e n d e rt ot e x t u r e ) ,从而避免将中间绘制结果拷贝到纹理这 个费时的过程。 ( 6 ) 支持依赖性纹理访问功能,以方便数据的索引访问,可以将纹理作为内存来使用。 2 2 可编程图形流水线功能介绍 可编程图形流水线的总体框架如图2 2 所示,左边用实线表示的流程就是传统的图形流 水线的流程:在这种通用的流水线中,首先经过顶点级的光照计算和肇标变换,求出每个顶 点的光照颜色值,同时还将顶点坐标从物体坐标系转换到裁剪空间( c l i ps p a c e ) 。然后,对 每个_ 一角形进行光栅化处理并将对三角形顶点的颜色进行双线性插值,得到了三角彤中每一 个像素的颜色值。接着进行纹理映射,即根据每一个像素的纹理坐标值将纹理图颜色分配到 每个像素上。最后进行颜色混合计算( b l e n d i n g ) 和雾化效果计算,得到的结果将会放迸帧缓 存( f r a m eb u f f e r ) 并显示剑屏幕上。 目前的可编程的图形五史件中,除了光栅化这一部分依然保持固化的硬件实现不变以外, 其他部分都引入了可编程性。也就是图2 2 中的虚线部分l l 。 顶点着色器( v e r t e xs h a d e r ) 的功能正是为了实现顶点的光照计算和坐标变换,在过去 的硬件中,人们只能实现一。些固定的光照模型和坐标系转换计算,但是在现在的i | f 编程的图 形硬件中,用户可以通过编写代码自f f l 地设计自己所需要的光照模型和啦标系转换计算公 式,只要不超卅硬件的功能即可1 1 2 - 1 5 1 。 至于像素着色器( p i x e ls h a d e r ) ,功能相对比较复杂,同时限制较多。它几乎包括了所 有光栅化以后的操作:采样纹理,颜色混合计算( b 1 e n d i n g ) 和雾化效果讣算等,传统图形硬 件中每个顶点的纹理坐标值需要人工指定或者根据空问坐标来计算。m 布:像素着色器中,允 许采j 1 j 多种纹理访问力式:每个像素的绘制信息( 例如,像素颜色值、纹理啦标等) 均保存在 寄存器i f l ,像素着色器通过完成这些寄存器之问的加法,乘法或者点积等运算操作,从而红 像素级别上实现光照明模型的计算( p e r - p i x e ll i g h t i n g ) 1 6 - 9 】。 5 2 3 流式计算 顶矗数弦【预斑,绣两颜色 ,锶馕:) i ( 瑗点算一) 坐拣变换 | 懈“1 匕” l i 。一 : i ) 先耱化 i 象索觳攘f 颜色值纹理 黛孙j 一 一_ 一 , 厂象索嘉色扩、 、 纹理采样 ( 绂瑷聚撵) i 象素缀遁算、 i l7 、 南 颜色混台运算 壹 谢 。孚 冀 蝥 线 、 争 2 ; 雾化皴裂计镶 7 l 三。一一二。l 。 7 、1 图2 2 可编程图形流水线的总体框架 c p u 非常不适合用于许多高件能应用程序的部分原凶足它采用串行编程模型,舀:这种应 j f j 程序中无法利川并行性和通信模式。在之前的章节中,已经对可编程图形流水线的结构和 功能进行了描述。在本节中,将描述流式编稃模型,它以允许高效计算和通信的方式构造程 序。这个编程模型是今天g p u 编程的幕础。 在流式编稃模型中,所自数据鄙表现为流。我们把流定义为具有相同数据类型的数据的 有序集。数据类型可以是简单的( 整数或浮点数流) 或复杂的( 点或i 角彤或变换矩阵流) 。 流可以是仟意长度,如果流很长( 流中有上向或更多的元素) ,那么流上的操作效率将很岛。 流上允许的操作包括复制它们,从它们导出子流,用个币独的索引流索引入它们,以及用 核存它们,卜 执行计算i i 卜一j 。 6 核操作整个流,获取个或多个流作为输入并,! l 。个或多个流作为输m 。核的定义特 征是它操作多个流上的所自元素而不是独点的元素。对核的最典型j h 途是对输入流的每个元 素用- 个函数进行求值( “映射”操作) 。例如,变换核町能把一个点组成的流的每个元素投 影到另一个坐标系统中。其他常见的核操作包括扩展( 对每个输入元素产生一个以卜输m 元 素) ,缩减( 把一个以下元素合并为单个输出元素) 及过滤( 输出输入元素的一个子集) 。 核的输 h 是函数只作用于其核输入的结粜,并1 只- 存核之内,对流元素的计算从不依赖于 在其他元素上的计算。这些制约有两个主要好处。首先,当写核( 或编译) 时,核执行所需 要的数据完伞已知。冈此,当它们的输入元素和中间讨算数据储存存局部或足仔细控制的全 局引用时,核町以非常高效。其次,在一个核之内对不同的流元素需要独立计算,这允许把 看起来像串行核计算的内容映射到数据并行的硬件。 存流式编程模型中,通过把多个核串连在一起来构建应用程序。例如,存流式编程模型 中实现图形流水线需要弓一个顶点程序核、三角形礼:编核、剪切核等,然后把一个核的输出 连接到下一个核的输入。图2 3 显力j 了整个图形流水线是怎样映射到流式模型的。这个模型 明确了核之间的通信,利用了图形流水线固有的核之问的数据局部性。 图2 3 把图形流水线映射成流式模型 图注:图形流水线的流式化把所有数据表达成流( 由箭头表明) ,所有计算表达成核( 由框 表明) 。图形流水线中的用户可编程和不口j 编程阶段都可以表达成核。 图形流水线在几方砬都很好地匹配了流式模型。图形流水线传统上被构造为多个计算阶 段,由阶段之间的数据流连接。这个结构近似十流式编程模型的流和核的抽象。图形流水线 中阶段之| 日j 的数据流是高度局部化的,一个阶段产生的数据立刻被下个阶段所消耗:在流式 编程模型巾,流在核之问的穿行也显现m 相似的行为。i 斫r 存流水线的各个阶段所调用的计 算在不周的图元之间一般是一致的,使这些阶段很容易映射成核1 2 0 - 2 2 | 。 多年以来,组成图形流水线的核在图形硬件牟被实现成提供极少或完全没有可编程性的 固定功能单元。2 0 0 0 年,g p u 第次给予了用户可以对图形流水线中独立的核编程的机会。 今灭的g p u 是高性能数据并行处理器,在图形流水线中实现了两个核:顶点程序,允许用户 存通过这条流水线的每个顶点l :运行个程序,片段程宇,允许用户存各个片段一卜运行的 个程序。这两个阶段都允许单精度浮点计算。虽然这些附件 要是为了提供 j 户更灵活的着 色和光照运算,但它们可以承受用户指定桴序的高速牢计算,有高效地解决通用计算问题所 需的精度,这使它们成为口j 编程流武处理器,即对各种各样的应用程序i 町不仪是图形流水线 有吸引力的处理器1 2 3 - 2 6 1 。 7 2 4c p u 。g p u 类比 本节将通过在传统的c p u 计算概念和它们对心的g p u 概念上做一些类比来阐述g p g p u 的概念。 ( 1 ) 流;g p u 纹理= c p u 数组 在g p u 上的基本数组数据结构是纹理和顶点数组。对g p g p u 来说,片段处理器比顶点 处珲器更有用。凶此,在任何会在c p u 上使j l j 数据数组的地方,都能在g p u 上使川纹理。 ( 2 ) 核:g p u 片段程序= c p u “内循环” g p u 的许多并行处理器是它的计算机器它们存数据流上执行核计箅。存c p u 上, 会使用一个循环来迭代流( 存储在数组中) 的元素,序列化地处理它们。在c p u 的情况中, 循环内的指令是核。存g p u 上,在个片段程序中写相似的指令,它们被应用到流的所有= ,c 素。在这个计算中的并行数量取决于使用的g p u 上有多少个处理器,以及是否很好地利用了 g p u 计算指令提供的四维向量结构的指令级并行性。也可以将顶点程序想象成一个处理顶点 流的核。 ( 3 ) 渲染到纹理= 反馈 大多数的计算被拆成许多步。每r 步依赖于前一步的输出。在流中,一般只有一个核 处理完整个流之后才能轮到下个核处理,因为流元素之间有依赖性。同时,在基于物理的模 拟情况中,模拟的每步都依赖于前一步的结果。 在c p u 上实现这些反馈都是微不足道的,凶为它的存储器模型是统一的,它的存储器町 以在程序中的任何地方读或写。对g p u 来说就没那么容易了。当g p u 产生一个图像时,这图像 可以写到用于显示的帧缓冲区存储器,或写到纹理存储器。这个渲染到纹理的功能对g p g p u 来说很蕈要,因为它是目前惟一用于实现直接把g p u 输出的数据反馈到输入,而不用返回主 机处理器的机制( 问接的叫馈也可以通过复制到纹理( c o p y - t o t e x t u r e ) 来实现,这需要 从g p u 存储器的一个位智复制到另一个。) 我f i j 可以把渲染到纹理想象成一个只写的存储器接 u 。为了实现反馈,必须使用渲染剑纹理的技术把片段程序的结果写入行储器,然后可以将 它们用作后面程序的输入1 2 卜州。 ( 4 ) 几何体光栅化= 计算的调用 现在已经类比了数据表示、计算和反馈。然而,为了执行一个程序,还需要知道该如 何调用计算。我们的核是片段程序,所以需要知道该如何产牛片段的流。这通过前几节应该 已经很清楚了;为了调用计算,只需要绘制几何体。顶点处理器将会转换几何体,而光栅器 将会决定它在输卅缓冲区中覆盖了哪咣像素,并为每个像素产生一个片段l j 卜”j 。 在g p g p u 中,般处理片段的矩形流中的每个元素,它们表现成一个栅格。因此,在 g p g p u 编秤中最常见的调用足一个四边形。 ( 5 ) 纹理坐标= 计算的域 在g p u 上运行的每个核( 片段程序) 把一些流作为输入,一般产生一个输出流。新的 g p u 支持多渲染目标,可以产生多个输出流( 目前限制为4 个r g b a 流) 。任何计算都有个 输入域和一个输出范围。在许多情况中,在g p u 上一个计算的域可能和输入流的人小不同。 g p u 以纹理坐标的形式来处理这些。这些坐标放存储存顶点上,光栅器线件地插值每 个顶点的举标,产牛一组对应十每个片段的坐标。插值的举标传给片段处i 甲器作为输入。在 计算机图形中,这些坐标用作纹理l 轶取的索引。对于g p g p u ,可以把它们想象成数组的索引, 而一h - w i 以用它们米拧制计算的域。域和范围町能有相h 的大小,或域日j 。能比范围小( 数据扩 人放人) ,或域可能比范围人( 数据缩小) 。光栅器简化了在这些情况中以正确的问隔正确 地采样输入流。 8 ( 6 ) 顶点坐标= 计算的范围 如同前曲讨论的,光栅器从输入几何体生成了片段,这些片段存处理后变成输出像素。 凶为片段处理器不能直接散布,所以输入顶点和顶点程序决定了应该牛成哪些像素。一般来 说,以输出像素坐标指定方形的4 个顶点,并应用一个顶点稃序,该程序只传递未转换的顶 点。凶此,顶点坐标直接控制了计算的输出范围。 2 5 可编程图形流水线的软件开发技术 存可编程图形硬件迅猛发展的同时,其相关的软件开发技术也在不断进步。甘前g p u 的 应用途径主要是通过图) 眵a p i ( o p e n g l 或者d i r e c t 3 d ) 扩允新g p u 的功能,其扩充功能或由g p u 厂家提供,或由a p i 软件开发者提供1 3 6 1 。利用高级语言_ i 依赖于具体的6 p u 硬件及计算平台 的编程一直是g p u 应用的努力目标,朝此f i 标而在绘制语言( s h a d i n gl a n g u a g e ) 和实时绘制 语言方面所作的研究一直在进行之中。运f j g p u 进行通j 计算最终需要摆脱图形流水线及其 绘制的概念,从流处理机的角度利用高级语言编程,这方面的研究:j :作在2 0 0 4 年开始有了 新的进展f 3 7 i 。 g p u 所提供的可编程功能以顶点处理器和像素处理器的操作形式完成,由每个处理器执 行用户定义的汇编级的绘制程序( s h a d e rp r o g r a m ) 1 0 1 , 对流数据( 顶点像素) 执行绘制程序 的操作。对于标准图形界面用户来蜕,这些g p u 的新功能一般通过g p u 设计者或用户界面的设 计者以扩充函数库的形式提供给用户。 o p e n g l 作为事实上的工业标准己为学术界和工h k 界所普遍接受,因而绝大部分与图形 有关的应用产品一直以o p e n g l 作为实现界面。对于使用g p u 的扩充函数,o p e n g l 巾包括了 g p u 设计者( 如n v i d i a ) 以及o p e n g l “架构委员会( a r b ) ”所扩充的函数。d i r e c t 3 d 作为微软 视窗的标准,其图形界面d i r e c t 3 d 从新世纪开始亦得到广泛接受和应用,特别是作为游戏 软件的实现界面。 为适应g p u 应心的需求,d i r e c t 3 d 根据g p u 新产品功能的扩充与进展及时地定义新的 版本以扩充v e r t e xs h a d e r 和p i x e ls h a d e r 的新功能,d i r e c t 3 d 软件接u 所提供的功能几 乎与g p u 提供的功能同步。对于熟悉o p e n g l 或d i r e c t 3 d 的用户或软件专业用厂来说,直接 使用其扩充的接口软件应该是比较妤的选择,因为这里可以从底层实现更灵活的控制和对 g p u 编程。 使j | j 类似于c 的高级语言对g p u 直接编程一直是i 墨| 形界努力追求的f l 标,也是将来应该达 到的目标。在这方面,已取得了一些进艘。使用绘制语苦及高级语言进行绘制编程可以方便 用户书写各种不同功能的绘制程序以及对其绘制程序提供各种控制,从l 酊使g p u 硬件的具体 功能对于用户而占更具有透明性。绘制程序( s h a d e r ) 设计的思想源自于早年p i x a r 设计的 r e n d e r m a n l 3 8 4 0 绘制软件。此软件多年来j “泛应用于好莱坞电影中特技效果的绘制。关于新 型标准绘制语言的研究工作,近年来有较人影响的是:o p e n g ls h a d i n gl a n g u a g e 【4 0 钉j ,斯 坦祸

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论