论文部分内容阅读
由于性能价格比高和可扩展好等特点,基于COTS技术的机群系统逐渐成为并行计算的主流平台。目前消息传递编程是机群系统上主流的编程模型,而在机群系统上寻求共享存储编程乃至支持自动并行一直是并行计算的研究热点。OpenMP是共享存储体系结构的并行编程标准,易于编程且支持增量并行,因此研究在机群系统上支持OpenMP的共享存储计算环境非常有意义。可扩展性和可编程性是用来衡量并行系统处理能力的两个重要指标。这种并行计算环境结合了OpenMP语言的可编程性,以及机群系统的可扩展性,将极大地推动并行应用的开发和普及。本文采用编译时和软件DSM运行时相结合的技术路线实现机群OpenMP。其中软件DSM系统在机群的消息传递硬件上提供共享虚拟存储抽象,而编译器实现OpenMP语言到该编程抽象的翻译及优化。本文实现了一个机群OpenMP系统原型OpenMP/JIAJIA,具体组件包括一个源对源的编译器前端(OMP2JIA)和一个支持fork-join执行模式的OMP JIAJIA运行库后端。在透明支持OpenMP并行应用方面,本文的OpenMP/JIAJIA计算环境使得机群系统像硬件cc-NUMA结构的机器一样易用。本文着重研究了如何提高机群OpenMP系统的性能,分别从数据分布、循环调度和系统优化三个方面提出了增强性能的方法。OpenMP标准所针对的UMA体系结构与类NUMA的机群体系结构存在着本质差异。例如,机群系统的内存层次结构以及互连的商品网络使得数据的本地访问和远程访问速度相差很大,所以数据分布模式和进程访问模式是否匹配直接决定了OpenMP应用的性能。本文以语言扩展的形式,提出了适合机群体系结构特点的数据分布策略、静态和动态循环调度算法,能方便有效地实现拥有者计算。另外,本文从程序员、编译器和运行库三个环节上阐述了提高系统性能的途径,尤其是针对后端运行库做了许多优化工作,例如扩展OpenMP语言支持JIAJIA的写向量协议、Home迁移和数据预取,结合消息传递机制优化reduction归约操作等。对机群OpenMP系统进行客观评价需要一个覆盖面较广的测试程序集。本文收集了十二个应用程序,分别来自不同基准程序集,例如NAS、SPLASH2和SPEC等。该程序集包括用来测试制导开销的微程序,支持矩阵和偏微分方程等数值计算的核心算法程序,以及带有输入/输出、解决特定问题的应用级程序等。从程序的访存行为和通信模式看,这些程序包括规则和非规则应用、内存密集型和通信密集型应用等。本文从两个方面分析评价了机群OpenMP系统的实现。一方面比较了该计算环境和一个支持OpenMP的硬件cc-NUMA系统(SGI 2100服务器)的性能;另一方面比较了OpenMP和MPI两种编程模型在机群系统上的性能。测试结果表明,本文的OpenMP/JIAJIA原型系统在八个结点的PC机群平台上获得了与SGI 2100服务器相当的性能;在共享存储和消息传递的比较中,获得了MPI 82%的性能。本文的机群OpenMP