论文部分内容阅读
随着多核处理器在高性能计算领域的广泛应用,面向多核处理器优化科学计算程序性能成为重要的研究问题。当前主流多核处理器均采用共享Cache结构,但线程间的干扰会降低程序的性能。Cache划分技术通过把共享Cache划分给多个独立程序而避免了线程间的干扰。在多道程序环境下,Cache划分能提高系统整体性能、降低失效率、提高系统的公平性。然而对于科学计算程序,Cache划分技术能否提高程序性能,以及如何提高程序性能,仍然是开放的问题。本课题面向科学计算程序,针对上述问题,深入研究了多核处理器的共享Cache划分技术。论文的创新点如下:(1)提出了共享Cache空间冲突模型(SCCM)。针对采用LRU替换策略的共享Cache,SCCM模型可以预测多个进程并行访问共享Cache时的Cache空间占用率、失效率和进程间冲突概率。试验结果表明:SCCM模型不但功能强于传统的Prob模型,而且具有更高的精度。此外,本文还应用SCCM模型分别分析了理想情况下和实际情况下,MPI(Message Passing Interface)程序使用共享Cache时的性能参数。在理想情况下,建模了进程数为2的MPI程序使用相联度为2的共享Cache时的性能参数,并且给出了与使用Cache划分技术相比,Cache共享具有较高失效率的充分条件。在实际情况下,应用SCCM模型分析了实际MPI程序的Cache空间占用率、失效率和进程间冲突概率。最后得出结论是:Cache划分技术可以提高MPI程序的性能。(2)面向负载均衡的MPI程序,提出了共享Cache空间划分技术(SLCP)。SLCP根据失效率监控器(MRM)收集的失效信息,使用性能预测模型,把Cache划分问题归结为规划问题;并且根据MPI程序所包含进程的IPC曲线是否都是非降凸函数,把规划问题分为两种情况求解。针对SLCP有可能会导致程序负载不均衡的问题,在SLCP基础上提出了共享Cache时间划分技术(TLCP),TLCP在时间维度上进行Cache划分,以保证MPI程序的负载均衡。本文使用NPB测试用例,对SLCP和TLCP进行了详细的评测。评测结果表明:对于工作集较大的负载均衡的MPI程序,SLCP和TLCP在多数情况下会取得相同的性能加速,少数情况下SLCP会产生负载不均衡的问题,此时TLCP能够解决负载不均衡的问题而获得更多的性能加速。(3)面向多个OpenMP程序组成的多道多线程程序集合,提出了加权共享Cache划分技术(WCP)。现有的面向多道程序的Cache划分技术多以进程为单位进行Cache划分,但是在划分过程中没有考虑到不同进程包含线程数目的不同。WCP基于传统的失效率最优的Cache划分技术,考虑到线程数目对共享Cache划分的影响,在Cache划分时根据进程包含的线程数目赋予其一定的权值。试验结果表明:WCP虽然使失效率有所增高,但却改进了IPC吞吐率、加权加速比和公平性。(4)面向负载不均衡的MPI程序,提出了基于Cache划分的两级负载均衡框架(CPTLLBF)。CPTLLBF利用程序运行时实时提供的负载均衡信息,动态地进行基于Cache划分的负载均衡操作(包括局部负载均衡和全局负载均衡)。局部负载均衡在多核处理器范围内,为在其上运行的进程组进行共享Cache划分,从而做到多核处理器范围内的负载均衡。全局负载均衡适用于MPI程序使用的所有多核处理器,根据进程对共享Cache的需求,动态地把进程映射到不同的多核处理器上,并对MPI程序所使用的每个多核处理器分别进行局部负载均衡,以保证系统范围内的负载均衡。实验结果表明:CPTLLBF可以有效降低负载不均衡的MPI程序的执行时间。