基于任务并行的算法设计与性能优化关键技术研究

来源 :中国科学院大学 | 被引量 : 0次 | 上传用户:ding_zh
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
当前,受到功耗、散热等因素的制约,单纯提高CPU主频已经难以近一步提高计算机系统的整体性能.作为计算机体系结构的一大发展方向,人们着力于在单块CPU上集成更多计算核心,以通过提供强大并行处理能力来提高性能.在这种新的形势下,程序员将不再有免费的午餐一一过去的程序移植到新的机器上难以轻易取得理想的性能,面对新兴计算机体系结构,程序员一方面不得不大幅修改原有程序,使其并行化,以充分发挥当今多核、众核体系结构所提供的并行计算潜能;另一方面,程序员在设计新的程序时,必须将挖掘程序并行性作为非常重要的目标予以实现,以上两方面对程序员提出很高的要求.以“任务”这一概念为核心的任务并行范式为程序员提供了一种设计实现并行程序的系统方法,程序员可以通过任务这一结构来描述其所需操作,算法语义可以通过说明任务之间的前驱后继关系来实现,通过任务与计算核心的映射来有效实施并行处理,另外,使用任务并行模式设计的程序,具有很好的模块化结构,便于日后的调试与维护.  本文应用任务并行范式在当前多核、众核CPU平台上设计优化若干基础并行算法并考察它们的应用,关于本文工作的详细介绍如下:  1.在CPU多核、众核平台上,基于任务间依赖有向无环图动态任务调度的并行前缀和算法的设计与优化.该工作针对原有并行前缀和算法的不足,提出以任务并行、动态任务调度为基础的并行算法.该算法有更好的负载均衡性,并需要更少的全局同步,通过各种优化手段的组合和应用,新算法的性能超越了原有在相应平台上的最优实现,性能增长约34%到56%.  2.在CPU多核、众核平台上并行流压缩算法的设计实现.作为前缀和算法的一个应用,该工作进而研究其在上述平台上的实现与优化,通过算法层面的改进,新并行前缀和算法相较于原始算法在时空复杂度上都有较大优势,我们还采用了代码自动生成和自动调优技术,我们大幅度提高了该算法中计算核心的性能.我们还使用任务并行范式以应对负载不均衡的情况,在实验平台上,新算法的实现在性能上高出并行库Thrust中对应实现约38%到47%.我们还将并行流压缩算法应用于数据分类器中,展现其加速一系列以树、森林遍历操作为基础的非规则问题的能力,  3.在MIC平台上并行流分裂算法的设计实现.基于对并行流分裂算法的工作,本文进一步设计并优化了并行流分裂算法,该算法高效地实现了对数据集合中的元素按性质划分这一过程.该算法实现的语义能够很好地服务于任务并行范式,对程序员设计任务并行程序有重要的意义,作为例证,我们将并行流分裂算法应用于排序问题中,并设计实现了一个基于任务并行的并行排序算法.在MIC平台上,我们提出的并行排序算法比IntelTBB中的并行排序算法快2到3倍。
其他文献
网页游戏行业在最近几年迅速发展,成为了一个具有巨大发展潜力的产业。在巨大的产业发展前景的吸引之下,网页游戏开发的行业中不断涌现出新的开发商。利用引擎开发网页游戏是提
软件作为计算机系统的大脑,负责控制计算机硬件的执行操作,涉及到人们生活的每个角落,也广泛应用于安全关键部门,计算机软件安全的重要性不言而喻。操作系统安全是信息系统安全的
流体,如水、烟、火,是生活中最常见的自然现象之一,对于流体现象的仿真模拟在影视特效、游戏、灾害预防等应用中具有极为重要的意义。因此,近二十年来,流体模拟一直是计算机图形学
随着移动终端硬件技术以及移动互联网的发展,人们常用的设备越来越多,设备上的应用也越来越丰富。但是不同设备操作系统之间缺少统一的接口去实现应用软件的开发,如果开发一款应
软件复用作为提高软件开发效率和软件质量的一种重要途径,是软件工程研究的一个热点。软件复用的一个有效手段是领域工程,其目的是为特定领域的软件建立可复用的软件制品。领域
随着网络和计算机技术的发展,如何对网络上爆炸性增长的多媒体数据进行有效的分析和检索已经成为多媒体内容分析领域亟待解决的问题。为了对这个问题进行分析并提出相应的解
合作无论在自然界还是在人类社会都是最广泛也最重要的现象之一。然而尽管合作行为在我们的生活当中很常见,它背后的产生机制却并不是显而易见的。因为我们每个人都是自私的个
安全操作系统是保障信息安全的重要基础设施。由于其自身的复杂性,如何对安全操作系统进行测评以确保其能达到所声称的安全需求一直是科研界和工业界所关注的热点。但从安全操
图像超分辨率重建的目的是在不增加成像传感器数目的前提下,突破物理系统结构制约,以较低代价最大限度的增强成像系统分辨率和成像质量,有效的利用成像系统的观测数据和先验知识
近年来,互联网应用的高速发展和电信、交通、金融等各个领域数据规模的快速增长,大规模数据处理的应用日益显著。Google提出的MapReduce编程模型由于其高伸缩性、容错性和易用