论文部分内容阅读
受功耗制约,仅通过提高单处理器核的频率的方式,已经无法继续提高处理器的计算性能。因此,增加芯片上的处理器核数来持续提升处理器计算性能的方式,已成当今主流的体系架构发展趋势。多核处理器的日益普及,以及众核平台的崭露头角,如Nvidia和AMD的GPU,AMD的APU,以及Intel的MIC,给高性能计算(HPC)带来了新的发展机遇和挑战。 基础线性代数子函数库(BLAS)是在高性能计算领域中被广泛使用的最基本最重要的数学库之一。许多大规模科学计算应用,如天体物理、流体动力学和石油勘探等,其核心计算问题都是求解偏微分方程(PDE),均依赖高度优化的BLAS库的性能来获得高效的运行效率。BLAS库中的矩阵相乘函数(GEMM)的性能,往往能够接近给定目标处理器的浮点计算峰值性能。该函数的优化严重依赖于处理器硬件架构的特征,从而很难直接被移植到一个新的处理器上而不引起性能损失。因此,往往需要领域专家花费大量的时间和精力来为矩阵乘法函数在新的处理器上进行细致入微的手工调优,有时甚至不得不为新的处理器重新设计和重新实现新的矩阵乘法函数。传统的手工优化软件包的开发方式,已无法跟上硬件架构的更新速度。近年来,自动代码生成及优化技术,已成为缩短软硬件开发周期差距的主要研究方向之一。针对上述问题,研究多核处理器上优化稠密线性代数函数优化,和自动代码生成技术具有重要意义。 本文主针对主流多核处理器,研究了稠密线性代数子程序的优化技术,自动代码生成的编译器框架构建,以及多线程应用程序中共享容器自动替换技术,详细介绍如下: 1.稠密线性代数核心函数的代码生成与优化框架。该工作提出了一种基于模板(template)的代码生成与优化技术,能够直接为稠密线性代数函数生成高度优化的汇编代码实现。生成的代码的性能超过了以Intel MKL等为代表的主流商业数学库的性能。 2.用户编程可控的特制化编译优化框架。该工作提出了一种协作优化技术,以消除不同优化操作之间不可预测的干涉影响,进而提高编译器优化的目标代码的运算性能。该工作优化的稠密线性代数函数的性能,比通用编译器icc优化的代码性能超出约20-200倍。 3.多线程应用程序中共享数据结构自动替换与优化编译框架。该工作提出了一个抽象容器适配接口,用以构建不同容器实现之间的等价关系,进而完成对多线程应用程序中低效的数据结构实施替换处理。该工作对PARSEC-2.1基准测试包中超过60%的应用有4%-50%的性能加速效果。