SIMD自动向量化是充分发挥处理器计算能力、提升应用程序性能的重要手段,但是控制流的存在给自动向量化带来了极大的挑战。传统的控制流向量化方法依赖于IF转换技术,但此技术也带来了代码执行效率低的问题。因此,为了缓解这一问题,提出...SIMD自动向量化是充分发挥处理器计算能力、提升应用程序性能的重要手段,但是控制流的存在给自动向量化带来了极大的挑战。传统的控制流向量化方法依赖于IF转换技术,但此技术也带来了代码执行效率低的问题。因此,为了缓解这一问题,提出了一种面向SIMD的控制流投机向量化方法。该方法在向量代码中检测谓词相关区域,使用代价模型在区域内引导实施针对分支一致的投机变换,在运行时消除无用的谓词执行,从而消除冗余计算导致的代码效率低的问题。该方法基于当前主流的GCC10.3编译器实现,实验选取业界公认的SPEC CPU 2006测试集课题和测试向量化能力的TSVC测试集,结果显示SPEC2006测试集481课题在使用该方法后性能提升10%,TSVC_2测试部分典型用例的性能提升在20%以上。在标准测试集上进行,结果表明,此方法能够有效提升GCC编译器的控制流向量化代码的执行效率。展开更多
文摘SIMD自动向量化是充分发挥处理器计算能力、提升应用程序性能的重要手段,但是控制流的存在给自动向量化带来了极大的挑战。传统的控制流向量化方法依赖于IF转换技术,但此技术也带来了代码执行效率低的问题。因此,为了缓解这一问题,提出了一种面向SIMD的控制流投机向量化方法。该方法在向量代码中检测谓词相关区域,使用代价模型在区域内引导实施针对分支一致的投机变换,在运行时消除无用的谓词执行,从而消除冗余计算导致的代码效率低的问题。该方法基于当前主流的GCC10.3编译器实现,实验选取业界公认的SPEC CPU 2006测试集课题和测试向量化能力的TSVC测试集,结果显示SPEC2006测试集481课题在使用该方法后性能提升10%,TSVC_2测试部分典型用例的性能提升在20%以上。在标准测试集上进行,结果表明,此方法能够有效提升GCC编译器的控制流向量化代码的执行效率。