返回
A Multiple Compiler Framework for Improved Performance
DOI:10.1007/978-3-032-02436-7_12.png)
摘要
En 中文
生产型编译器在生成高效代码方面已达到很高的成熟度。任何两个生产型编译器生成的代码可能基于各自中间表示(IR)、实现的循环变换及其顺序、使用的成本模型甚至指令选择(如向量指令)和调度等因素而截然不同。因此,给定编译器为某程序段生成的代码性能未必能被其他编译器匹配。本文提出一个元编译框架MCompiler,允许使用不同的编译器/优化器编译程序的不同段并组合成单个可执行文件。它将各编译器间编译过程和性能优化的差异从劣势转变为优势。利用各段的最优代码可显著提升整体性能。本研究以循环嵌套为段,但也可采用其他选择。关键问题是,哪个编译器能为某段生成最佳代码。本研究随后提出一种机器学习方法实现此目标。它学习循环嵌套的固有特征,并在编译时预测应用程序中每个循环嵌套最适合的代码优化器。结果表明,本框架在自动向量化代码方面相比当前最先进的编译器(等效于-O3编译)提升了1.97倍的几何平均性能,在自动并行化代码方面提升了2.62倍,对含OpenMP指令的并行应用也提升了1.13倍的几何平均性能。机器学习预测的性能接近探索性搜索选择最优优化器的性能:自动向量化代码在4%以内,自动并行化代码在8%以内。
Keyword:
Compiler Optimizations
Loop Transformations
Compilation Framework
Machine Learning
期刊
L
IF:
0
论文数:
14
被引数:
0

