论文部分内容阅读
随着计算机多核、众核平台的发展以及结构化网格的广泛应用,把大量的网格应用遗产代码迁移到多核、众核平台上并高效的利用处理器的性能是一个重要的挑战。 中科院计算所编译组开发的AceMesh运行时系统支持任务图(DAG)并行,并取得较好的性能。目前,基于该系统完成了单进程网格应用的任务图并行化,多进程程序的任务图并行尚未实现。 本文以遗产的Chombo框架为基础,对程序中的通信实现任务图并行,以此完成整个网格应用的进程间和进程内程序的任务图并行,然后从区分Patch块的远程数据依赖这一角度尝试进行了优化工作,使得结构化网格应用程序充分利用多核、众核计算资源,对程序的高性能计算具有重要的意义。 本文对多进程网格应用的任务图并行和优化的具体内容如下: 首先,分析多进程结构化网格应用中通信的特点和过程,具体包括其中的通信打包、解包、数据交换、非阻塞通信的同步等相关数据结构和算法过程。根据通信过程将通信相关代码进行任务抽象,并从中抽象出任务间的数据依赖关系。 其次,针对近邻通信的各个阶段之间的数据依赖,面对通信过程所涉及的多种类型的、复杂的动态数据结构,抽象出任务注册的一般性方法。用尽量少的访问区域来正确地表达通信任务间以及通信任务和计算任务间的数据依赖。 然后,通过对本地通信任务的依赖关系的分析,尝试区分每个patch块是否涉及远程数据依赖,来减少本地数据通信任务中不必要的远程依赖关系,从而提高了任务图的并行度,完成任务图并行的优化。 最后,通过对Chombo库中的AMRPoisson、AMRWave方程的多进程任务图并行化和优化,并在多核众核平台上进行了测试,测试结果表明,相比于MPI+OMP并行模型,基于任务图并行化方法的多进程并行(MPI+DAG)程序可以更有效提高程序性能。区分Patch块的本地/远程数据依赖的优化方法,对程序的并行性能也有一定的提高。