Evaluating Auto-Vectorizing Compilers through Objective Withdrawal of Useful Information

Evaluating Auto-Vectorizing Compilers through Objective Withdrawal of Useful Information
复制标题

通过客观提取有用信息来评估自动矢量化编译器

DOI:
--
复制
发表时间:
2019
期刊:
ACM Transactions on Architecture and Code Optimization (TACO)
影响因子:
--
通讯作者:
Jeyarajan Thiyagalingam
Jeyarajan Thiyagalingam
中科院分区:
--
文献类型:
--
作者:
Sergi Siso;W. Armour;Jeyarajan Thiyagalingam

文献摘要

被引文献

相似文献

随着现代处理器的矢量化功能的增加,编译器生成高度矢量化的代码的需求是有史以来高的。为此,编译器可以通过代码分析或通过用户注释可以使用的信息对自动矢量化起到了重要作用,因此有助于整体性能。但是,在编译时间可用的信息及其准确性差异很大,矢量化编译器的性能也有很大差异。已经开发了用于矢量化编译器的测试套件(TSVC)等基准测试套件来评估此类编译器的矢量化能力。 TSVC和类似基准的总体方法是在最佳情况下评估编译器(即,假设编译器可以在编译时访问所有有用的上下文信息)。尽管这种理想主义的观点对于观察编译器的自动矢量化能力很有用,但它并不是对现实世界应用中发现的条件的真正反映。在本文中,我们提出了一种评估编译器自动矢量化能力的新方法。我们没有假设编译器可以在编译时访问大量信息,而是制定了一种方法来客观地提供或撤回信息,否则可以在自动矢量化过程中帮助编译器。该方法与TSVC采用的方法正交,因此,它提供了以更详细的方式评估现代矢量化编译器的能力的方法。使用这种新方法,我们在四个代表性矢量平台(AVX-2,AVX-512(Skylake),AVX-512(KNL)和Altivec)使用TSVC和应用程序级代理内核的修改版本。结果表明,撤回信息对每个编译器的矢量化功能的影响,并证明了提出的技术的有效性。
The need for compilers to generate highly vectorized code is at an all-time high with the increasing vectorization capabilities of modern processors. To this end, the information that compilers have at their disposal, either through code analysis or via user annotations, is instrumental for auto-vectorization, and hence for the overall performance. However, the information that is available to compilers at compile time and its accuracy varies greatly, as does the resulting performance of vectorizing compilers. Benchmarks like the Test Suite for Vectorizing Compilers (TSVC) have been developed to evaluate the vectorization capability of such compilers. The overarching approach of TSVC and similar benchmarks is to evaluate the compilers under the best possible scenario (i.e., assuming that compilers have access to all useful contextual information at compile time). Although this idealistic view is useful to observe the capability of compilers for auto-vectorization, it is not a true reflection of the conditions found in real-world applications. In this article, we propose a novel method for evaluating the auto-vectorization capability of compilers. Instead of assuming that compilers have access to a wealth of information at compile time, we formulate a method to objectively supply or withdraw information that would otherwise aid the compiler in the auto-vectorization process. This method is orthogonal to the approach adopted by TSVC, and as such, it provides the means of assessing the capabilities of modern vectorizing compilers in a more detailed way. Using this new method, we exhaustively evaluated five industry-grade compilers (GNU, Intel, Clang, PGI, and IBM) on four representative vector platforms (AVX-2, AVX-512 (Skylake), AVX-512 (KNL), and AltiVec) using the modified version of TSVC and application-level proxy kernels. The results show the impact that withdrawing information has on the vectorization capabilities of each compiler and also prove the validity of the presented technique.