您好,欢迎来到保捱科技网。
搜索
您的当前位置:首页基于任务的Cholesky分解多核并行化研究

基于任务的Cholesky分解多核并行化研究

来源:保捱科技网
计算机工程与设计ComputerEngineeringandDesign 2011,Vo1.32,N0.12 4057 基于任务的Cholesky分解多核并行化研究 吴华平, 郑晓薇, 张建强 (辽宁师范大学计算机与信息技术学院,辽宁大连116081) 摘要:针对Cholesky分解算法采用OpenMP并行程序设计时的并行性开销增大和线程负载不平衡的问题,利用并行性能分 析工具对串行程序进行热点分析,提出了一种基于任务的Cholesky分解多核并行算法。该算法将大循环问题划分成各个相 互的小任务,并运用任务窃取技术和动态负载均衡算法使多个任务能够并行完成。采用ParallelAmpliifer对并行程序进 行调试和优化,实验结果表明,其性能得到较大幅度的提升。 关键词:Cholesky分解;并行化;热点分析;任务窃取技术;动态负载均衡 中图法分类号:TP311 文献标识码:A 文章编号:1000.7024(2011)12—4057.03 Research on Cholesky decomposition multi—core parallelism based on task WU Hua・ping,ZHENG Xiao—wei,ZHANG Jian—qiang (College of Computer and Information Technology,Liaoning Normal University,Dalian 1 1 608 1,China) Abstract:In order to solve the problem that the cost increases and the thread load is imbalance when we adopt OpenMP parallel progra・ mming for Cholesky decomposition algorithm.A parallel algorithm is proposed,which is a task—based multi-core or fCholesky decom— position and a serial programs are analyzed using the parallel studio tools.This algorithm divides the large circulation problems into each independent small tasks,using the task stealing technique and dynamic load balancing algorithm to make multiple tasks to be paralle1. The Parallel Amplifier is used to debug and optimize the parallel programs.And the experiment shows that the performance is improved substantially. Key words:Cholesky decomposition;parallelization;hotspot analysis;task stealing technique;dynamic load balancing 0引 言 科学计算是计算机发展中的一个重要领域,以Cholesky 分解、LU分解等为代表的线性代数数值计算在现代科学研究 和工程技术中得到广泛应用。许多工程问题、力学问题、动力 系统问题最终都归结为线性方程组的求解问题,其系数矩阵 大多具有对称正定的性质。长期以来,为提高科学计算的速 度,科学计算函数库中积累了大量的库程序。目前市场上多 核处理器已成为主流,但传统的科学计算程序都是针对单处 理器计算架构编写的,在多核平台上由于多核附带的开销造 成性能下降。随着计算机技术的不断发展,并行结构从集中 式机群到分布式PC,再从多处理器向多核的架构发展;科学计 例如文献[4]提出的LDL 分解递归算法具有自动矩阵分块的 功能,可计算满足精度要求的特征值;文献[5】以针对算术单元 设计的有理分数的数据表示形式来实现Cholesky并行分解; 还有基于FPGA利用共享存储的多处理器软核实现Cholesky 分解和基于FPGA采用细粒度流水线实现Cholesky分解并行 算法 等。也有的研究者采用MPI和机群系统对线性方程组 的并行求解进行了研究 。针对基于MPI的并行算法设计复 杂、消息传递和数据移动开销大问题,本文着重考虑多核计算 机的优势,并结合使用lntel公司的Parallel Studio并行程序开 发工具套件… ,提出了一种基于任务划分的Cholesky分解多核 并行优化算法。该算法提高并优化了基于多核平台的大规模 线性方程组求解速度,对其它科学计算具有重要的推广意义。 实验结果表明,经过并行优化后的并行程序,计算性能得到大 幅提高,多核CPU资源的利用率得到提高。 算的发展方向也随着计算机技术的发展经历着相应的变化, 特别是多核并行计算技术及其应用引起了越来越多的重视。 多核技术已广泛地应用于多核嵌入式软件VERTAF,MultiCore (Ⅵ C)、建模与仿真和傅里叶变换的数字信号处理等领域 。 。 有关线性方程组的求解许多文献都给出了很好的方法。 收稿日期:2011-O1一Ol;修订日期:2011-03—10。 基金项目:国家自然科学基金项目(60603047)。 1串行Cholesky分解算法 Cholesky分解用于求解系数矩阵的线性方程组Ax=b,其 作者简介:吴华平(1984--),男,江西赣州人,硕士研究生,研究方向为并行计算、多核计算机系统; 郑晓薇(1957--),女,辽宁大连人,教 授,CCF高级会员,研究方向为并行计算、多核计算机系统; 张建强(1981一),男,内蒙古乌兰察布人,硕士研究生,研究方向为并行计算、 多核计算机系统。E-mail:wuhuaping1103@yahoo.corn.cn 4058 2011,Vo1.32,No.12 计算机工程与设计ComputerEngineering andDesign 地观察程序的执行,对称矩阵阶数选为2000,对OpenMP并行 算法程序分析的结果如图1所示。Concurrency当中用Idle、 Poor、Ok、Ideal、Over这5种不同状态来表示并发状态,并采用 不同的颜色显示,例如,红色表示利用率低,即运行的线程数 少于CPU的核数;绿色表示理想的并行度,即运行的线程数 等于CPU的核数,CPU得到充分利用。 Concutr ̄rency 中,A是一个nxn阶的稠密正定对称矩阵,b大小为n向量。求 解该方程组的标准解法是对A先进行Cholesky分解A=LD , 得到下三角矩阵L后,通过前向回代求解下三角方程和后向 回代求解上三角方程:Ly=b和L X=Y,最终得到方程组的解 向量x。实数矩阵A的Cholesky分解可以通过求解公式,同时 为减少乘法次数,引入辅助量 :lik ,求得计算 及 的公式 f =口 一∑ J1 ,2,…, (1) 曩墨墨 鸸T・ ~~ tik=aik一∑ f=k+l, ,…, u l , 由式(1)可以看出,同一行t ,l ,d。的计算存在明显的数据 相关,只能依次顺序进行计算。为消除数据相关,便于实现并 行计算,将式(1)的计算顺序改为按列进行,并且将累 ̄Jn,n改为 超前加。由于A为对称阵,故只需给出下三角阵即可。存储 元素共n(n+1)/2个,用一维数组A存放,顺序为{aIjj a 。,a2:,…, 。,anz,…,a },则矩阵元素a 对应一维数组元素A(i (i一1)/2+ j)。为了减少存储空间,又由于矩阵A在经过计算后就不需要 再使用了,因此可以采用原位存储的方法,即用D覆盖A的对 角线相应位置,T、L则覆盖A的对角线以下相应位置。由式 (1)可得到计算Cholesky分解的串行算法如下: for k=l tO N ofrm=1 to k A[k,k]:A[k,k].A[m,k]?  A[k,k]~一 ; end for ofri=k+1 tON ofrm=l tO N A[k,i]=A[k,i]一A[m,i1 A[k,m】; end for A[i,kl=A【k,i]/A[k,kl; endfor endfor 2 Cholesky分解的并行化 2.1 串行Cholesky分解算法的瓶颈问题 在设计串行算法时定义了多个函数,其中LDLTDCMP0 一 函数是Cholesky分解的主体部分。运用ParallelAmpliifer中的 Hotspots对程序进行热点分析,可收集到不同类型的数据,确 定应用程序运行消耗的时间,以及识别出最耗时的函数。通 一 过热点分析,得出热点函数LDLTDCMP()是最耗时的,它是 Cholesky分解算法运行的瓶颈。 2.2 OpenMP方法并行化 为了有效利用多核CPU资源,对Cholesky分解串行程序 采用OpenMP方法并行化。此处只需要对其热点函数 LDLTDCMPO进行并行化。OpenMP是基于共享存储系统并行 编程方法,它具有编程简单、移植性好和可扩展等优点。但由 于LDLTDCMP()函数体内的最外层循环存在相关,只能在内 层循环加OpenMP并行编译制导语句。本文的测试平台为: CPU Intel(R)Pentium(R)Dual 1.86GHz、内存1GB、Windows XP 以及Parallel Ampliifer中的Concurrency工具。为了更为直观 “v抽 …tt #5酐¥l 乱 瓠 0 t瓤t口 瓣 i s t州c 强 o髓“I nt札l“l … O‘∞ l ∞LL x 图I OpenMP方法的并行度状态 从图1可知,OpenMP方法的并行度的主导状态是Poor, 逻辑CPUs利用率很低。这是因为在LDLTDCMP 0函数中, OpenMP需要频繁地创建、汇合、销毁以及管理线程,线程负载 不平衡,再加上计算的颗粒度太细,造成并行性开销增大,导 致性能很低。 3 Cholesky分解的任务划分 针对热点函数LDLTDCMP0采用OpenMP方法并行化性 能低的问题,我们考虑以任务作为计算粒度,增大并行度,以 提高并行加速比和系统效率。将函数LDLTDCMP()内部的计 算任务划分成若干个的小计算任务,在考虑各个小任务 负载均衡的问题后,通过适当的任务调度将这些小任务均衡 地分配给多个CPU核执行,进而达到任务高效的并行执行。 本算法中任务划分采用依次将计算任务递归地分为两个 子任务的递归划分方式。对划分程度的关键就是粒度, 在程序设计时选择自动地确定恰当的粒度可使并行调度开销 最小。常用的动态任务调度方法有任务窃取法和全局任务排 队法“ 。任务窃取技术是由任务调度器自动地为每一个内核 构建线程,然后将创建的逻辑任务映射到某个工作线程的逻 辑池内,当一个工作线程完成了线程池内的任务时,还可以从 其它任务池取得任务继续执行。本文研究的递归任务划分适 用于任务窃取法,该算法将递归和任务窃取有效地结合起来, 使得Cholesky分解并行程序运行速度和CPU利用率得到较 大提升。 我们选择的并行工具是线程构建模块(threading building blocks,TBB),它是Intel公司针对多核平台开发的一组开源的 基于运行时的c++线程并行编程模型,可支持可扩展的线程 嵌套和递归并行。TBB在多核并行编程上与OpenMP相比有 更好的表现。TBB在并行编程方面是基于任务而非线程,具 有适当的抽象、自动负载均衡的不绑定CPU数量的优势“ ’川。 TBB任务通常是轻量级的组件,在Linux系统和Windows系统 上启动和结束过程更加迅速。同时TBB的任务调度器采用任 务自动迁移技术来实现调度,这种调度方式要优于指导调度 吴华平,郑晓薇,张建强:基于任务的Cholesky分解多核并行化研究 或动态调度,并且不会带来集中负荷的问题“ 。 本文算法实施步骤如下: (1)循环并行化改造。将热点函数LDLTDCMP()内的循环 体转换为在小空间上进行操作的形式,这种形式也称为体对 象(body object),每个operator()方法中将处理一个小空间。其 改写的主要代码如下: class ParallelLDLTTask 2011,Vo1.32,No.12 4059 图2所示。从图2当中可知,Para11elLDu’函数所划分的小任 务确实由二个CPU核均衡并行执行。由图l、图2比较得出, TBB方法的并发性能明显好于OpenMP方法,并且主导状态 也由Poor变为Ideal。与OpenMP方法对比后得到并行性分析 统计对比图3。图3中的r003cc和r001cc分别是OpenMP方 法和TBB方法的分析统计数据,从中可知,OpenMP方法的 CPU等待时间和空闲时间比TBB方法的要多;OpenMP方法 的逻辑CPUs利用较低,而TBB方法的逻辑CPUs利用则达到 {float mJla;int _k; public:void operator()(const blockedrange<int>&range) 1.93。这是由于TBB任务调度器的任务窃取技术和动态负载 const {for(int i=range.begin();i!=range.end():++i) {f0r(intm=0;m<m_k;m++) m_pa(mk,i):m ̄a(m_k,i)一m ̄oa(m,i) m pa(m_ k,m); m ̄a(i,m_k)=m_pa(mk,i)/mdga(mk,m_k);}} _ParaUelLDLTTlask(){} ); 在operator0方法中blockedrnage<T>表示类型T上可递 归划分的一维迭代空间,参数range明确了方法体的空间。声 明operator()时使用的const是作为一道屏障,用以防止对线程 私有副本的错误修改被积累起来。从类ParallelLDLTTask中 可以看出,并行化改造后的循环体与最初的代码很相似。类 中将访问频率很高的值放入局部变量有助于在编译时更好地 优化循环。 (2)函数定义和任务划分。定义函数来使用改造后的体对 象,并对其需要用到的数据进行初始化,再用TBB中的para1. 1el for把热点函数LDLTDCMP()内层的循环体划分成若干子 区间(即逻辑任务)并分配到每个处理器。parallel for(blocked rnage<T>(begin,end),task,grainsize))迭代循环体当中的参数be— gin、end为迭代空间的起始索引,task是体对象,grainsize用来 指定分配给处理器的合理迭代数量。对迭代区间递归划分程 度取决于任务粒度,粒度过小可能会使循环模板中的调度开 销超过并行性所带来的加速,而粒度过大则并行性。本 文采用的auto partitione(r)提供一种启发式的方法来选择粒度, 这种启发式方式在努力各种开销的同时,还能尽量实现 负载均衡。 (3)任务调度设计。对于TBB来说,最有效的并行是每个 核上只跑一个工作线程。本文的实验平台为双核,设置线程 数为2,在使用算法模版或者任务调度器之前,每个线程必须 初始化线程构建模块,其代码如下: TBB::task scheduler init init(2);//O;g建线程池 ParallelLDLT(A,N); (4)检查错误及优化。对程序并行化后,先用ParallelInspector 检查内存与多线程错误;如果没有错误,对比并行前后的程序, 再用ParallelAmpliifer找到可以再并行的部分,不断优化性能,使 得并行化程度达到最优,提高硬件资源的使用率和算法效率。 4并行算法的性能分析 使用Parallel Ampliifer中的Concurrency对TBB方法并行 化后的Cholesky分解算法程序进行并发性分析,实验结果如 均衡算法,可调度所有处理器内核全力处理有益工作,既可有 效避免过度使用线程又可)rl ̄U解决线程用力不足的难题,并 使用启发式方法的auto partitioner宏来确定粒度,通过系统努 力各种开销,因而系统性能得到了较大提升。在Concur- rency中TBB方法执行时间比OpenMP方法多,是由于进行并 发性分析时,需要插入和一些检测代码及统计各种状 态,会产生额外的分析时间。 勰CoDcurrency 曩墨墨墨 哪广 … 一 鎏图2 TBB方法的并行度状态 一  弱 佛矾~ 釜 ∞17 .ar4 ̄t u 档 T ̄Te: 器艘 辫0盆 ・10,901 ̄ 鲰确 0_0{j 辱96暑 勰10,434 ̄ 蕺 ^舯 ∞ 鼢违镪 § LOgiCal 神峨端 獬 髋 ∞ 钧 1Il_蚺d apU舶r憾 IL643S 奢0绺∞ q缸 嚣 ≤ _ 踊圈龃——■圈—鼬一 图3 OpenMP方法和TBB方法的并行性分析统计对比 一 为了进一步验证本文并行算法的效果,选用测试矩阵规 模分别为1000阶和2000阶,对Cholesky分解串行算法、Open— MP方法并行和TBB方法并行算法进行了测试,实际执行时 间的结果如表1所示。从运行时间,加速比和CPU利用率分 析得出,Cholesky分解采用TBB方法并行化比OpenMP方法 更具有优势,CPU多核资源得到了充分利用。 表1不同问题规模下3种算法运行时间和结果 1000阶 2000阶 算法 时间CPU利 CPU利 /s 加速比 用率 时间/s 加速比 用率 串行算法 2.437 1.000 50.0O% 20 359 1.000 50.00% OpenMP并行算法 2.062 1.182 59.1O% 15.5O1 1I3l3 65.65% TBB并行算法 1.640 1.486 74-30% 13.515 1.506 75-30% (下转第4255页) ,陈婷,王猛:基于频率跟踪插值抽取法的电参量计算 2011,Vo1.32,No.12 4255 (上接第4059页) 5结束语 随着多核计算机的普及,相应的软件编程方式和科学计 算方向也在发生着巨变;如何选择一种并行编程技术使得算 法并行化的运行效率最高就显得非常重要。本文把Parallel Studio工具应用到Cholesky分解算法的并行化分析和优化设 [5】 Maslennikow O,Lepekha、‘Sergiyenko A,et a1.Parallel imple- mentation of Cholesky LLT algorithm in FPGA2 based pro— cessor[C].Proc ofPPAM 07,2008:137—147. [6】Haridas S G.FPGA implementation ofa Cholesky algorithm orf a shared memory multiprocessor architecture[D].New Jersey:In— stitute of Technology,Department of Electrical and Computer Engineering,2003. 计中,通过TBB的任务并行化,使得算法的时间效率和多核 资源的利用率大大提高。这种并行算法的设计方法在大规模 数值的科学计算领域具有较好的推广意义。 [7】 邬贵明.Cholesky分解细粒度并行算法[J】.计算机工程与科学, 2010,32(9):103—106. 参考文献: [I]LI Ni,GONG Guanghong,PENG Xiaoyuan,et a1.Scene matching algorithm evaluation based on multi-core parallel computing [8] 付朝江.基于工作站机群并行求解有限元方程组[J].计算机工 程与设计,2008,29(24):6441.6443. [9]DUAN Zhi-jian.Parallel alternating—direction iterative algorithm orf solving banded linear equations[J].Computer Engineering and Applications,2009,45(20):54—56. technology【C].Proceedings of WRI World Congress on Soft- ware Engineering.Washington,DC:IEEE Computer Society, 2009:94—98. [10】刘洋.基于奇偶归约法并行求解三角块线性方程组的研究[J] _计算机工程与设计,2009,30(13):3193—3195. [1 1]英特尔@软件网络[EB/OL].http://software.inte1.com/en—us/in- tel—parallel—studio・home/Intel Parallel Studio,20 1 1. [2] Marowka A.Towards high level parallel programming models for multi-core systems【C].Proceedings of Advanced Software Engineering and Its Applications.Washington,DC:IEEE Com— puter Society,2008:226—229. [12]周伟明.多核计算与程序设计[M].武汉:华中科技大学出版社, 2008:320.322. [3] YANG Chuan,YANG Bin.Fourier transform multi.core para— llelization implement ̄ion based on TBB[J].Computer Engi— neering,2010,36(16):288—290. 【4]ZHANGKun,ZHANGYou-zhi.Recursivealgorithmfor calculating e envNues ofreal symmetric matrix based on LDLT decomposition [13】胡斌,袁道华.TBB多核编程及其混合编程模型的研究[J].计算 机技术与发展,2009,19(2):98-101. [14】郑晓薇.张建强.基于TBB任务调度器的N皇后并行算法[J]. 计算机工程与设计,2010,31(15):3423—3426. [15]Reinders J,Stepanov A.Itnel threading building blocks编程指南 【M】.聂学军,译.北京:机械工业出版社,2009:23. [J].Computer Engineering and Applicaitons,2008,44(3):78-80. 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoaiwan.cn 版权所有 赣ICP备2024042794号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务