论文部分内容阅读
高性能计算广泛运用在科学计算、可视化处理、商业数据模型分析等领域。程序性能与平台架构息息相关。龙芯作为具有自主知识产权的国产芯片的代表,它的3B系列芯片被广泛运用在航天、生物信息、气象等领域。但由于它的软件生态环境不健全,许多软件没有针对它的架构进行优化。龙芯普通访存速度慢,加上软件移植过程中龙芯编译器无法充分发挥硬件计算与访存分离的特性,软件与平台架构耦合性低,容易导致部分科学计算软件的运行性能低,不能满足用户的计算需求,这制约着龙芯的市场化推广。如何优化龙芯平台的软件性能成为龙芯亟需解决的问题。因此,本文围绕龙芯平台上高性能计算的访存和计算优化关键问题展开研究。主要的研究内容和贡献如下:(1)针对基础函数库与龙芯硬件架构耦合性低的问题,以BLAS库中矩阵矩阵乘函数GEMM为研究对象,提出了一种加速计算密集型应用的异步计算访存优化方法。该优化方法根据龙芯计算与访存分离的特性,通过对任务进行分组和流水化处理;然后在计算过程中,利用多通道DMA访存方法实现数据的预取或读写,从而将大量的访存开销隐藏到计算中;最后,使用SIMD指令向量化提升核心的计算性能。此外,通过分析计算与访存分离的特征,给出了一种龙芯平台上计算密集型应用的性能评估方法。(2)针对普通访存方法不能满足龙芯平台中应用访存速度需求的问题,以FFTW核心算法为研究对象,提出一种面向计算密集型应用的多层数据划分优化方法。该优化方法以龙芯3B1500处理器为研究平台,根据FFT中数据的访存规律,利用龙芯锁cache机制保证缓存中数据不会被替换,进而采用多层数据划分以提升缓存中数据的利用率,通过增加迭代层数提升寄存器堆数据的重用率,并且使用特殊向量指令加速核心运算;与此同时,通过使用CPU和DMA协同访存方法来提高数据读写速度。(3)针对CC-NUMA架构中易由数据部署不合理而导致计算密集型应用并行效率低的问题,以KD-90为研究平台,在PCAM并行框架的基础上,提出了一个面向计算密集型应用的并行框架HPFCA。根据应用的数据访存规律,对框架中的任务划分、节点间任务并行、数据重新部署、节点内多核并行和单核程序优化五个部分进行设计,利用访存数据局部性完成访存的性能优化。并且根据该框架,在KD-90上实现了GEMM和FFT的高效并行算法。(4)针对多核异构平台中应用程序难以并发执行的问题,以三维泊松方程求解算法为研究对象,提出了一种异构平台下多种计算资源负载均衡的高效算法。该算法通过使用多重网格法对三维泊松方程进行离散,将三维泊松方程求解问题转化成线性方程组求解问题,然后通过分析异构平台不同资源的计算能力决定任务负载比例,将任务按比例分配到不同的计算资源上,完成计算的负载均衡优化,从而提升异构平台中程序的并行加速比。