登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
程序
>
可编程性使GPU面向更通用计算领域
发帖
回复
3093
阅读
0
回复
[
转载
]
可编程性使GPU面向更通用计算领域
离线
febi
UID :2537
注册:
2007-05-11
登录:
2016-05-05
发帖:
123
等级:
退休版主
0楼
发表于: 2007-07-14 17:48:11
可编程性使GPU面向更通用计算领域
u';9zk/$
http://www.ed-china.com/ART_8800011456_400014_500004_OT_0c909b84.HTM
T# .pi@PF>
上网时间:2006年01月01日 打印版 推荐给同仁 发送查询
Ajm4q_
7 T
\:4SN&I~
过去10年间,图形处理器(GPU)在台式电脑中的使用已非常普遍。GPU具有强大的计算能力和很高的存储带宽,而这两点对于高性能三维图形应用是至关重要的。以往GPU计算都是专用于这些应用的,但现在新型的GPU允许具备一定的用户可编程性,这就使得GPU能够面向更通用的计算。不过,通用计算功能首先必须被高效地映射到GPU上。
7yQw$zG,Iz
hn=tSlte
2EiE5@
三维图形计算被组织进一个图形管道,该管道描述场景输入和图像输出之间的一系列计算阶段。图形管道的输入是一个场景,它由许多几何体(定义为连接顶点)以及用来从几何体计算场景的图形指令组成。
<DZ$"t
X]}:WGFM
tID=I0D
GPU对那些顶点进行处理,并将之变换为屏幕空间几何体(screen-space geometry),该几何体通过光栅化(rasterization)过程依次被划分为像素片段(pixel-sized fragments)。每一片段与屏幕上的一个像素位置相关。最后,这些片段被处理并组合到由像素组成的图像中。
'81c>qA
gy Ey=@L
Mp?L9
该管道包含大约12级(stage),每级都在一个GPU里执行,作为在同一裸片上每级的一个单独处理器。管道的典型输入是几十个到几十万个顶点,每一个顶点都可在GPU上并行处理。
b\S~uFq6
dJ{q}U
U:0Ma6<
因此,复杂的图形管道可以按空间划分,GPU上的各个处理器并行运行每一级。这种体系与CPU不同,它使每一个处理器可以专用于执行自己的任务,而CPU只有一个处理器。在CPU上实现图形管道是按时间来划分复杂任务的:CPU在其处理器上处理管道的第一级,仅当第一级完成时才开始下一级。
weH3\@
HCw,bRxm
] @:x<>
\}71pzw(
图1:新型的GPU可用于更通用的计算。
/B<QYvv
0.[tEnLZ
mXs.@u/
89x;~D1
Y_<-.?jf
从通用编程人员的观点来看,GPU包含两个重要的级,都是用户可编程的,即顶点级(vertex stage)和片段级(fragment stage),前者在每一个顶点输入端运行用户定义程序,后者在每一个片段上运行用户定义程序。
\Oxyc}&
_tRRIW"Vx"
两个级具有类似的编程模型。在运行长串的输入(几十万个顶点或片段)时两者都很有效率。不过,每个输入都是被独立处理的,因此一个顶点或片段的计算不会影响另一个顶点或片段。用这种方法,能够并行处理许多顶点或片段。
|:]}u|O
8"}8Nrb0
=O3)tm;
每一个输入用相同的片段或顶点程序处理。这些程序通常在SIMD(单指令多数据)情况下运行时最有效,这意味着用控制每个计算的指令序列来并行计算每个顶点或片段。不过,新近开发的硬件已开始允许在这些程序中执行更为复杂的控制流程。
8a3EVc
a"&cm'\lL
K\FLA_J
那么,片段或顶点程序是什么样呢?首先,它们都只支持IEEE单精度浮点运算。其次,二者都可以从全局存储器的任意位置读取,但不能写入任意全局存储器。顶点程序的输出是一个单独的顶点,而片段程序的输出则只是这该片段像素位置上的一个片段。
>hY.F/[
d7S?"JpV
h [@}}6
在通用编程人员看来,这些局限性意义重大,能使GPU支持许多功能性单元,这些单元能并行运算大量数据元的顶点或片段程序。例如,在16个并行片段处理器上,Nvidia GeForce 6800的片段程序的总体运算速率超过每秒500亿次浮点运算。
u|cP&^S
Bo$dIn2_
*x:*Q \|
若顶点和片段程序具有可编程性,就可以在GPU上运行通用应用。迄今大多数努力都集中在片段级,因为它比顶点程序具有更多的处理器和更高的性能。要使这些应用有效,关键在于将必要的计算映射到片段处理硬件的SIMD并行编程模型上。
sa TS8p z
NfWL3"&X
bTt1y O
在图形硬件上构建通用程序的典型方法之一是:给定一个大的几何体,如屏幕大小的矩形。该几何体覆盖屏幕的主要部分,故产生大量片段。
F*T$n"^
K /$-H#;N
2ZEDyQM
由该几何体产生的每个片段都可以被并行处理。现在的GPU能用相同的指令并行处理16个片段。每一个片段计算都能从全局存储器的任一位置读取(矢量术语称为“搜集”),但不能写入任意全局存储器(“分散”)。
bXSAZWf
@'<=EAXe
=Z ql6D
片段程序的输出是全局存储器中的一个图像,每一片段计算都对应于该图像中的一个单独的像素点。
szCB}WY
ey6ujV7!
zpjE_|
一些简单的应用可在单个图形管道循环中表达出来,但许多复杂的应用却不行。这些更复杂的应用要通过利用后继循环计算中 ..
h[mJ=LIrg
hHZ'*,9 y
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
条评分
磁砖
发帖
回复