论文部分内容阅读
随着计算机技术的不断发展,从数据处理到智能处理,计算机的应用范围越来越广,处理问题的规模也越来越大。为了满足大量实际应用问题的需求,一个重要的解决途径就是采用并行计算技术。在高速发展的计算机技术推动下,并行计算机的研制和使用达到了前所未有的高度,并行计算机的体系结构已经从单核、单处理器、单节点,发展到了多核、多处理器、多节点,节点间的通信能力达到了前所未有的高性能和低延迟,其性能也随之得到了显著的提高。因此面对现在的多核甚至是众核处理器时代,将共享存储编程模型及分布式存储编程模型相结合组成的多层次并行编程模型,已经是一个主导方向。本文以高性能计算的应用为目标,通过研究国内外近十几年来探讨的多层次并行编程模型,实践该编程模型下比较经典的MPI与OpenMP多层次并行编程模型。MPI是消息传递编程模型的典型代表,而OpenMP是共享存储事实上的工业标准,将两者结合使用正是为了充分发挥现今的多核并行机群系统的优势。本文以地震层析反演、参数反演等领域常用的LSQR串行算法为应用基础,对它进行深入分析,从而挖掘出LSQR算法内在的并行性,通过对大型稀疏矩阵使用按行压缩的存储方法,依次实现大型稀疏矩阵与向量乘积的并行计算、大型稀疏矩阵的转置与向量乘积的并行计算等,解决LSQR串行算法中计算密集之处的核心计算的并行化问题,最终在分布式机群系统上设计与实现了一套基于MPI的LSQR的并行算法。在此基础上,应用MPI+OpenMP的多层次并行编程模型,分析LSQR串行算法中可细粒度并行计算的代码,设计与实现了一套基于MPI + OpenMP的LSQR多层次并行算法,同时对基于MPI的LSQR并行算法和基于MPI+OpenMP的LSQR多层次并行算法进行性能分析,验证多层次并行编程的并行计算性能。此外,本文还探讨了MPI-2新特性中的并行I/O及远程存储访问,将并行I/O中的显式偏移量文件读写方式应用于LSQR并行算法中,通过多进程同时读取同一文件来整体提高LSQR并行算法的性能。对于MPI-2的远程存储访问新特性,通过??用程序分析栅栏同步方式下的所有RMA操作的数据传输方式,并设计测试数据验证远程操作的正确性。实验和分析表明,本文基于MPI+OpenMP的LSQR多层次并行算法和基于MPI的LSQR并行算法在测试平台上都获得了较好的性能,在同等计算要求条件下,MPI+OpenMP多层次并行编程模型性能高于纯MPI编程模型的性能。此外,结合MPI-2的并行I/O新特性也大大缩减了算法的执行时间,进一步提高了算法的并行效率。