热门关键词:

基于GPU加速的边界面法正则积分的研究

  • 该文件为pdf格式
  • 文件大小:310.7KB
  • 浏览次数
  • 发布时间:2014-11-25
文件介绍:

本资料包含pdf文件1个,下载需要1积分

Research on Regular Integration in Boundary FaceM ethod Based on GPU-acce1erationZHANG Jian-ming”。YU Lie-xiang ,LIU Lu-ping(1.State Key Laboratory of Advanced Design and Manufacturing for Vehicle Body。Hunan Univ。Changsha,Hunan 410082。China;2.Hydrochina Zhongnan Engineering Corporation。Changsha,Hunan 410014,China)Abstract:Based on GPU high-performance parallel computation,a parallel acceleration of regular inte-gration in boundary face method(BFM )has been implemented in CUDA (Compute Unified Device Archi-tecture)programming environment.Comparative computations compared with traditional regular elementintegration were made on both NVIDIA GTX680 GPU and Intel(R)Core(TM )i7-3770K CPU.Numericalexamples show that。a speedup of 8.3 x has been achieved at the same level of accuracy。

Key words:GPU ;parallel computing;acceleration;BFM ;CUDA;regular integration近年来,GPU已具备了实现大规撵速计算的编程能力,不仅用来进行图形处理,还用于通用计算[1].CPU的架构提供了 2~4个核,而 GPU架构提供了 100多个核,使得利用很多线程来进行并行处理成为可能[2].GPU 的每秒浮点操作数和带宽也远远超过同-时期的 CPU,且价格更为低廉。

NVIDIA 公 司 于 2006年 11月 提 出 了 CU-DA 。- (Compute Unified Device Architecture,计算统-设备架构),它不需要借助于图形学 API,并 收稿日期:2012-09-o7基金项目:国家自然科学基金资助项目(10972074,11172098)作者简介:张见明(1965-),男,湖北孝昌人,湖南大学教授,博士十通讯联系人,E-mail:zhangjm###hnu.edu.cn采用了比较容易掌握的类 C语言进行开发,开发人员能够从熟悉的 C语言比较平稳地从 CPU过渡到GPU,而不必重新学习语法,因此大大降低了 CU-DA程序的开发难度.CUDA是-个新的基窜构,是-个软硬件协同的完整的解决方案.这种架构使得 GPU可以处理复杂的科学计算问题,特别是极大数据量的并行计算问题[6].如今,CUDA 被广泛应用于石 油勘 探、天文 计算"]、计算 流体 动力学[8 ]、生物学l 等领域,在很多应用中获得了几42 湖南大学学报(自然科学版)倍、乃至上百倍的加速比.Cai1 等运用 CUDA进行了显示有限元板材成形仿真系统的并行开发,获得了 27倍的加速比;Januszewski[1 等提出了随机微分方程的数值解的并行方案,加速比达到了675;Pichelc 等将稀疏矩阵向量乘法并行化,获得了2.6倍的加速比。

在传统的边界元法1 中,边界单元不仅要用来进行边界积分和物理变量插值,而且用来近似几何体.当网格较稀疏时,会引起较大的几何误差,从而影响计算精度.张见明[ 等提出了边界面法,边界积分和场变量插值均在实体边界的参数空间内进行.在边界积分过程中,积分点的几何数据,如物理坐标、雅可比、外法向量均直接由曲面算得,而不是通过单元插值近似,避免了几何误差l ]。

随着计算规模的增大,计算精度和效率之间的权衡成为了边界面应用的瓶颈,而单元积分的计算时间占整个边界面法分析计算时间的比重相对较大.为提高边界面法的计算效率,我们提出了-个基于 GPU计算的并行积分方案来加速边界面法中的单元积分.在初始阶段,我们已经实现了单元积分中正则积分的并行化。

本文详细介绍了边界面法正则积分的 CUDA并行加速方案,并给出了典型的数值算例.本文的后续内容组织如下:第 1节概述了CUDA;第 2节介绍边界积分方程、边界积分方程离散和正则积分;第 3节提出了正则积分 的并行加速方案 ;第 4节给出了2个数值算例来评估本文并行代码的加速性能;第 5节对本文作出了总结和工作展望。

1 CUDA概 述GPU由若干个流多处理器 SM组成,8个标量流处理器 SP组成-个 SM.作为 CPU的协调处理器,CUDA为GPU提供了大规模的多线程架构.相比CPU仅有 1~4个内核,GPU架构的内核却达到数百个,使得其更适合用于单指令多数据(SIMD)计算H .如图 1所示 ,CUDA通用并行计算过程包括4个步骤 :1)初始化主机端上的数据 ;2)从主机端复制数据到设备端(GPU);3)并行计算;4)从设备端传递数据回主机端。

在 CUDA环境下编程时,可把 GPU视为-个能进行多线程并行处理的运算设备.如果程序中的某个函数对于不同的数据要重复执行多次,就可以把这部分函数独立出来,分配给 GPU 的线程来执行.将此函数编译为在 GPU上执行的指令集,编译后的目标程序称之为核(Kerne1).核(Kerne1)以网格(Grid)的形式执行,如图 2所示,每个网格由若干个线 程块 (Block)组成,每- 个线 程块 由线 程(Thread)组成.在同-个 Block中的线程通过共享存储器 (Shared memory)交换数据,并通过栅栏(Barrier)同步保证线程间能正确地共享数据.在实际操 作 中,Block会 被 分 割 成 更 小 的线 程 束(warp[。I5])。

图 1 CUDA 通用并行计算过程Fig.1 General parallel computing process of CUDA设备端圈 圈 圈 Il lThI Thr l TIce- Thred Thre(o-o, (1.o) <2.o (3,o) (4.0)Thread Thr。耐 Tare.d Threld 1 e.d(O。1) (1.I) (2,1) (3。t) (4,lThread Thre 11lfe Thre Tbre2 (1,2) (2,2) (3.2) (4,2)图 2 线程块 网络Fig.2 Grid of thread blocks2 边界积分方程、边界方程离散和正则积分2.1 边界积分方程对任意三维域 Q,满足拉普拉斯控制方程的位势边界值问题可表示为:, - 0,V E Q;- , V ∈ P ;, 三 q- q,V z E P。. (1)式中:Q的整个边界为 P-P P。; 和 分别是位势已知边界 和法向流已知边界 r。的边界值;是边界外法向矢量;7/i是法矢量分量i-1,2,3。

第 3期 张见明等:基于 GPU加速的边界面法正则积分的研究 43该问题可以等价地转化为以下的势问题正则化边界积分方程 :0- l[( (s)-( )3q (s, )dP-I q(s)U (s,.),)dI". (2)式中:r为边界; 和 q代表位势和法向流量,q-Ou/On;Y和s为边界上的源点和场点,q (s,j,)和 U(s, )是基本解。

4 -L S,V d S(4)2.2 边界积分方程离散和正则积分首先把域边界离散成 M个边界单元和N 个相应的积分点.位势和法向流量已给出,对于任何-个节点, 或者q其中-个是已知的,在边界上的 和q可表示成式 (5)。

(s)-u(u, )-∑ ,q(s)-u(u, )-∑N q (5)式中: 和 表示边界参数曲面的二维参数坐标;三维物理空间坐标( ,Y,z)满足 z-z( , ),YY(, ),z- ( , );N (s)是形函数.将方程(5)代入方程(2)后 ,可得 :M r N0-∑I q 5 )∑ENd(s)-Nk(y)]ukdI"M N∑1 )∑N (s) dI". (6)公式(6)可以组装成矩阵形式:H l1 H12 H2l H 22 Hm HN2[-G1l G12l r1 b2l L,22l: :。 。

其中,H1NHzN:H NNG1NG2N:GNNJ 2 l1(7)(8)MH -∑I 口 (s, )[N (s)-N ( )]dr; i- 1(9)G - > I (s,Y )N ( )dF. (10) 苒 J方程(6)右端第-项在任何情况下都是正则的。

因此在任-单元内可用正则高斯积分法计算.对于方程(6)右端第二项 ,当源点 Y趋近于场点 S时会出现弱奇异性.假使 Y距离s足够远,则认为方程右端第二项是正则的.以矩形单元为例,如图 3所示,L为矩形长边,d表示 和s的距离.若 d>Lk(愚为系数,取 4.O),则该单元便是正则单元。

图 3 矩形单元Fig.3 Rectangle cell3 CUDA并行方案本文通过运用 CUDA计算规则单元的正则积分得到矩阵H和矩阵G每-项的值.在传统正则积分程序中,矩阵H和矩阵G的计算过程是串行的.图4描述了该串行算法:在第-层循环中有N个单元,每个单元包含-定数量的场点(三角形线性单元有 3个场点)。

在第二层循环里,CPU串行计算矩阵H和矩阵G,-次计算得到H和G中的-项.在第二层循环结束,返回第- 层循环再对其他单元进行循环计算。

本文基于 CUDA开发 GPU并行程序,每-个线程并行计算矩阵 H 和矩阵 G中的-项.考虑到GPU全局内存即显存大小限制和图 4第二层循环中正则积分所需数据大小,在-次数据传输中旧能传输更大的数据量.如图 5所示,将 P个单元的数据量打包-次性传人显存中,而不采用-次只传单个单元数据量的方式,以节省更多的时间。

GPU并行程序的算法如图 6所示.首先,通过传人数据量除以 GPU显存得到传输数据的次数GPUCompute-div,N表示单元的个数.在第二层循环中,将从内存传输 P个单元的数据量到显存中.tid-in-grid表示线程在整个 Grid中的位置,每- 个线程计算并行计算矩阵 H和矩阵G中的-项。

每-个执行 内核的线程被赋予唯-的线程 ID,它能在 Kernel中通过内建变量访问[7].blockldx..71和threadldx.z从 CUDA运行时中获得,blocksize定义为 Block在 z方向上的维度.本文使用-维 Grid和-维 Block,每个 Grid里拥有 Q个线程并行计算矩阵H 和矩阵G。

44 湖南大学学报(自然科学版)图 4 CPU 计算流程 图Fig.4 Flowchart of CPU computing内存 内存l 圆 团 显存 -· 圈 显存I.....- 图 5 数 据传榆方式Fig.5 Scheme of data transmission1:P - Nf GPU-Compute-div2:for i- 0 to GPU-Compute-div do3: forj-0 tOP do4: tid-in grid bloekldx.x bloeksizethreadldx.x5: if tid-in- grid< Q then6: compute H and G7: end if8: endfor9:endfor图6 GPU计算的算法Fig.6 Algorithm of GPU computing4 数值算例本文选用两种三维几何模型对 GPU并行程序进行测试:-种模型是槽钢,另-种是散热片.为评估该 GPU程序的计算精度,本文使用以下立方体解析场 :x。 Y。 z。- 3yx - 3xz - 3zy . (11)GPU程序的计算机测试平台见表 1。

表 1 计算平台Tab.1 Computing platform操作系统CPUGPU编译器Windows 7 64bit,16GB内存Intel(R)Core(TM)i7-3700K CPU 3.5GHzNVIDIA GTX680 GPU,NVIDIA driver version 296.10,包含8个多流处理器 SM,2 GB显存.计算能力为3.0Visual studio 2008,CUDA toolkit 4.2.9 64bitGPU并行程 序 的执行 效率 与 CPU 程序作 对比.加速比通过 CPU程序的计算时间除以 GPU并行程序的计算时间计算得到,本文只记录计算正则积分所耗费的时间。

4.1 槽钢模型本文对所用槽钢模型进行了简化,去除圆角特征,并采用线性三角形单元划分网格.如图 7所示,该槽钢被离散划分为1 026个单元和3 078个节点。

图 7 边界面法的槽钢 网格 划分Fig.7 The BFM mesh for channel-section steel表 2记录了 CPU程序和 GPU程序的正则积分计算时间、精度,加速比.从表中可明显看出数据传输占用的时间占据 GPU计算时间很大-部分的比重 ,这是 由于本 文所使 用的 GPU 的带宽不足导致的.图 8为 GPU程序的加速 比,可以看出 GPu程序的计算速度明显比 CPU程序快得多.在计算精度得到保证的前提下,随着节点数的增加,加速比也随之增大,但当节点数增大到-定值时,继续增大节点数,加速比提高得却不明显。

表 2 槽钢计算 结果Tab.2 Result of cube computing注:表中未列出GPU计算时数据在内存之间的传输时间第 3期 张见明等:基于 GPU加速的边界面法正则积分的研究 45节点数图 8 GPU程序 的加速比Fig.8 Speedup of GPU-based code4.2 散热片模型如图 9所示,将散热片模型划分为 2 046个三角形线性单元和 6 138个节点.GPU程序的加速比见图 1O,从图中可看出,模型划分网格数越密,计算精度越高,加速比也随之增大.且 CPU程序和 GPU程序的计算精度保持高度-致,在节点数为 14 478时,加速比达到 8.1.但并行程序在计算规模增大到- 定程度时加速效果提高得并不明显。

图 9 边界 面法的散 热片 网格划分Fig.9 The BFM mesh for heatsink节点数图 1O GPU程序 的加速比Fig.10 Speedup of GPU-based code5 结 论本文将 GPU和边界面法相结合,开发出了基于CUDA的边界面法正则积分的并行程序,并验证边界面法在 CUDA并行硬件平台的可行性.通过两个数值算例,在获得高计算精度的前提下,加速比达到8.3倍。

加速比随着节点数的增大而增大,但不是线性增长,计算规模增大到-定程度时,加速比提高的不明显,这是因为用于传输的数据量较大,花费在显存与内存之间的数据传输时间将严重制约着程序的计算速度,因此GPU的带宽便成了程序的瓶颈.对于并行性好,数据传输量少的程序,GPU的加速效果将会非常显著。

本文仅是对边界面程序中正则积分进行了并行化,为更 大限度地运用 GPU 对边界面程序进行并行化 ,在未来的工作 中,我们将 运用 CUDA对边界面法中的近奇异积分、奇异积分,大型线性方程组的LU分解进行加速。

正在加载...请等待或刷新页面...
发表评论
验证码 验证码加载失败