论文部分内容阅读
随着计算机科学的不断进步,使用集群计算来进行科学研究已成为一种发展趋势。这种大规模科学计算往往需要同时调用上千个节点进行运算,以确保用于计算的海量数据可以完全存放在计算机内存中。但是,对于一些大规模非结构计算,例如稀疏线性求解器,运行在上千个节点时,编程困难,高效性也难以保证,直接导致计算资源的浪费。核外计算技术可以通过将数据保存在外存的方式,对计算数据进行运行时的访问、调度和管理。中间件技术的发展也为大规模集群计算带来了更便捷、高效的途径。本文研究了针对集群计算中大规模线性求解问题的核外计算和中间件方面的相关技术,提出了一个支持核外计算技术的中间件,并且使用此中间件相对容易地建立了功能不同的、并行度高的、使用成本相对较低的大规模线性计算求解器。通过相关论证,有效证明了该中间件的通用性、易用性、高效性和进行绿色计算的能力等。本文的研究主要包括:分布式核外计算中间件的数据流与任务流体系架构;数据流处理中的任务调度策略研究;核外计算技术在大规模集群计算中的成本控制;分布式数据流处理系统的中间件构建方法等。本文的具体研究内容和创新工作主要包括以下几个方面:(1)分布式核外计算中间件针对大规模线性计算,本文在一个已有的分布式流处理中间件DataCutter的基础上,设计了一种新的分布式核外计算中间件。该中间件实现了多个节点之间的实时相互通信与协作;并通过全局地址管理模式,对于全部数据,包括远远大于计算平台内存容量的超大规模数组,实现了以数据块为单位的分布式数据核外技术管理;本文对数据流与任务流的管理进行了研究,设计了分布式核外数据管理系统与分布式任务分割、调度模式,实现了数据流与任务流的分离;本文研究的中间件,通过对任务的分割与派遣,达到了节点之间子任务序列的进程级并行,和节点内子任务之间的线程级并行。相对原有的DataCutter中间件,此中间件具有更先进的架构方式,更高效的管理策略,增加了对核外计算的支持,可以更为容易的构建分布式核外计算数据流处理系统。通过外存访问能力测试、核内计算性能测试,论证了中间件的外存访问能力与核内计算能力均达到了硬件条件允许范围内的最大值。(2)基于数据感知的任务调度策略针对中间件中的任务管理,本文设计了一种基于数据感知的任务调度策略。使用有向无环图建立任务之间的数据依赖关系,对任务进行划分并通过其相互之间的数据依赖建立任务序列。在任务总管模块中,根据任务依赖划分出多个子任务,分配至多个计算节点。计算节点接收到代表部分任务的有向无环图子图时,将子图中的每一个任务打散,重新排列形成任务链,并根据系统对于本地节点内存中已有数据的动态感知,实时调整任务链中的任务顺序。基于动态感知的任务调度策略可以优先触发当前满足数据依赖条件的任务,尽可能多的触发当前满足数据条件的任务,同时尽可能多的减少外存访问次数,以此提高系统整体运行效率。通过对比论证,基于数据感知的任务调度策略显著优于现有的MPI传统调度策略。针对基于数据感知的任务调度策略,本文还进行了一系列的提高算法执行效率的研究工作。其中,数据预读取机制,可以通过对任务序列的扫描,在计算当前任务的同时,提前装载下一个任务所需的数据,达到任务派遣与数据调度的联动,用计算时间掩盖数据迁移耗时;针对特定算法提出了同步叠加策略,可以同步触发有数据依赖关系的多个任务,达到执行时间的相互掩盖。这些研究工作均有效提高了中间件的任务调度和执行的效率。(3)中间件的绿色计算论文首先针对中间件的核内、核外计算混合计算能力和资源消耗情况进行了测试,根据总的资源耗费量=CPU占用数量*CPU占用时长的成本计算方式,论证了该中间件在绿色计算领域具备节省计算资源的能力。进而,论文将该中间件运用于一个具体的量子力学计算项目中,将具体的计算系统在搭载固态硬盘的高性能计算平台上进行了测试,系统以核外计算方式实现了MFDn系统的计算过程,相比现有的MFDn计算系统的核内计算模式而言,虽然延长了计算时间,但显著地减少了计算节点和CPU处理器的占用数量。从实验结果可知,中间件架构及相关策略较大程度地节约了计算成本,得到了明显的优于现有系统的结果。通过对比论证,证明了在核外计算模式下,该中间件可以有效地减少资源的消耗,能够达到绿色计算的目的。(4)线性代数编程框架分布式的大规模线性计算往往编程结构复杂,涉及到核外计算时,编程任务更是困难重重。本文基于分布式数据流系统中间件的架构模式,研究出了一种新的线性代数编程框架。该框架提供了多个编程接口,通过调用这些编程接口,程序员可以使用C或C++语言,以集中式、串行的编程方式,完成在集群环境对于大型线性核外计算的分布式、并行计算系统的构建。编程接口支持大量常用的线性代数的计算原语,通过这些原语的调用,中间件可以以相对容易的方式,实现规模庞大、逻辑复杂的多种算法。线性代数编程框架提供了新的分布式核外计算系统架构方式,很大程度上减少了在架构此类系统时的工作量,为大规模线性求解问题提供了一种通用的、易用的、高效的解决途径。本文以特征值求解过程为例,在该编程框架中通过原语的调用实现了相关算法,以非常简单的方式构建了分布式核外计算特征值求解器。并在搭载固态硬盘的高性能计算平台上进行了测试。实验中通过系统执行总时间、系统的外存访问时间、系统的计算时间三者对比,论证了中间件可以有效的达到计算耗时与数据迁移耗时的相互掩盖,同时对比任务的建立与调度所消耗的时间,论证了中间件在任务创立、分配、调度时的高效性。