面向fork-join框架的软件重构及性能分析

面向fork-join框架的软件重构及性能分析

ID:23841224

大小:138.37 KB

页数:22页

时间:2018-11-11

面向fork-join框架的软件重构及性能分析_第1页
面向fork-join框架的软件重构及性能分析_第2页
面向fork-join框架的软件重构及性能分析_第3页
面向fork-join框架的软件重构及性能分析_第4页
面向fork-join框架的软件重构及性能分析_第5页
资源描述:

《面向fork-join框架的软件重构及性能分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、向Fork/Join框架的软件重构及性能分析摘要:针对目前对于Fork/Join框架应用和性能分析的相关工作还不多的现状,以JGF基准测试程序套件为基础,对其中的series、crypt、sparsematmult和sor等程序使用Fork/Join框架进行重构,并以series程序为例,详细地说明了重构的过程。在实验中,首先,测试了每个程序在不同阈值下使用Fork/Join框架分别递归1、2、3次执行程序的时间,进而选择相对较好的阈值;然后,对每个程序使用Fork/Join框架和使用Thread的执行时间进行了对比;此外,测试了重构后的程序在执行

2、过程中任务窃取的情况。实验结果表明,Fork/Join框架执行时间与多线程执行时间相比,平均降低了14.2%;对于series程序,当数据大小为sizeC且线程个数为2时,Fork/Join框架执行时间比多线程执行时间降低高迗40%,可见,在多核处理器平台上应用Fork/Join框架比使用多线程将获得更好的性能。关键词:Fork/Join框架;软件重构;工作窃取;性能分析中图分类号:TP311文献标志码:A0引言随着多核处理器的普及和众核处理器的发展,面向多核的并行编程已经成为了高性能计算领域的研究热点。与传统的串行程序设计相比,并行编程不仅可以缩

3、短任务执行的时间,而且能更加充分地利用多核处理器资源,提高任务执行的效率[1]。因此,越来越多的人开始关注并行编程,并在多核平台使用并行程序设计技术。JDK1.7中提出的Fork/Join框架是并行编程中一个经典的编程框架,它可以适应多核时代并行编程的要求。Fork/Join框架的思想是分而治之,即将所要执行的任务分解为多个子任务并行执行。该框架的核心是工作窃取,当一个线程将自身任务队列中全部任务执行完毕后,会从其他未执行完毕的线程任务队列中窃取任务执行,从而帮助其他线程尽快地执行完毕,这样既可以缩短程序执行的时间,又能够充分发挥多核计算机的资源优

4、势。目前,国内外针对Fork/Join框架的研究很多。文献[2]中对JDK1.7中Fork/Join框架的基本原理、设计方法和实现机制进行了详细的介绍。文献[3]中通过典型案例详细的介绍了Fork/Join框架的应用,例如,如何应用Fork/Join框架建立ForkJoinPool、加入任务等。在国内,Wang等[4]对多处理器系统下Fork/Join程序的响应时间进行了研究。刘振英等[5]针对Fork/Join任务图,提出了一个基于任务复制的静态调度算法TSAFJ。虽然目前对于Fork/Join框架已有了一些研究,但对于Fork/Join框架的应

5、用及性能分析的相关研究还有待于进一步研究。针对这一问题,本文应用Fork/Join框架对JGF基准测试程序[6]中的series、crypt、sparsematmult和sor等程序进行了重构,将程序中单线程顺序执行的代码重构为Fork/Join框架并行执行的代码。在实验中,测试并分析了阈值大小对Fork/Join框架执行程序的影响,并在两种实验环境下测试了每个程序使用Fork/Join框架和多线程的执行时间。此外,测试了重构后的程序在执行过程中任务窃取的情况。1相关工作Dig等[7]提出了一个软件并行化重构工具CONCURRENCER,该工具可以

6、将串行的Java代码重构为并行的Java代码,通过使用java.util,concurrent并发库将线程操作转换为使用Fork/Join框架。Lujan等[8]对Fork/Join框架的扩展版本DIF0J0框架的应用、实现与性能进行了深入的研究,通过对比Fork/Join框架的性能,对DIF0J0的性能进行了评估。Ojail等[9]针对多核嵌入式系统中更细粒度的并行任务的调度问题,提出了一种轻量级的Fork/Join框架一一ATAM,并通过实验证明,ATAM框架的应用可以取得更加理想的加速比,明显优于本领域的其他技术方法。Lui等[10]通过对多

7、重处理环境下Fork/Join并行程序的计算时间的界限进行研究,提出了一种算法来获取预期执行时间的上限与下限。Nelissen等[11]通过研究提出了一种调度Fork/Join并行实时任务的新算法。Gao等[12]提出了一种静态的、平均的案例分析方法,该方法被称之为M0QA法,可以对Fork/Join框架执行的程序进行分析,以并行快速排序程序为例,验证了该分析方法准确性更高。杨峰等[13]针对广义Fork/Join任务图提出了基于遗传算法的调度算法,该算法将遗传算法和任务复制相结合,有效地缩短了得到最优结果的时间。梁珊珊等[14]提出了一种带通信限

8、制的Fork/Join图调度算法CCTD,通过实验表明,CCTD算法是一种适应性强的、高效的Fork/Join图调度算法;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。