论文部分内容阅读
随着科学技术的发展,许多生产和科学研究领域对计算机的计算能力要求越来越高,传统的单处理器系统受散热问题和制造工艺等因素的影响已达到性能瓶颈,处理器体系结构开始向多核心处理器和多处理器的方向发展。多核处理器和多处理器都必须依靠并行计算来发挥其计算优势,不同的是多核处理器环境下,数据的交换是在同一个系统中通过共享系统内存实现,而多处理器则是通过网络进行数据交换,多处理器的可扩展性相对要优于多核处理器,而网络延时使得多处理器要比多核处理器付出的额外开销要大一些,总体来说这两种技术差异不大,只要略做调整就可以实现两种不同平台之间软件的相互移植。相对于串行计算而言,并行计算涉及到的硬件更多,对算法的效率要求也相对更高,因此在多处理器环境下分析并行计算软件的性能也就显得更加重要。
在以往的并行程序开发中,程序源代码经过编译链接生成可执行二进制代码后其执行时序和处理逻辑就固定了,用户若要获取程序的性能数据必须先停止正在运行的程序,在程序源代码里面手动添加相关代码,然后重新编译链接和执行才能获得程序的性能数据。本文介绍了一种在多处理器环境下有别于常规的对并行软件进行性能数据采集和分析的方法,该方法可以在不需要改动并行程序源代码的条件下将性能采集代码插入到正在运行的并行程序中,动态的获取到用户指定的程序中的某个算法的性能数据。本文的工作重点为实现多处理器环境下对并行软件性能的动态获取和实时反馈,文章首先阐述了如何在Linux环境下使用应用程序性能接口(PAPI)读取硬件性能计数器(HPM)中记录的软件性能数据,根据得到的性能数据分析程序的性能和给出优化软件性能的建议;然后分析了在多处理器环境下结合MPI和PAPI采集并行程序的性能数据,借助于并行软件动态指令插入接口Paradyn,在不修改并行程序源代码和重新编译并行程序的条件下将PAPI的采集代码动态插入到已编译好的进制可执行文件中,可以在不影响原并行程序运行逻辑的情况下,对并行软件的性能数据进行采集;最后结合Paradyn、PAPI、MPI、GTK等技术开发了在多处理环境下动态获取并行程序性能数据的性能监控软件ParaPerf-monitor,该软件实现了动态插入PAPI采集代码获取并行程序的性能数据并以图形的方式反馈给用户。