CQA: A code quality analyzer tool at binary level

CQA: A code quality analyzer tool at binary level
复制标题

CQA:二进制级别的代码质量分析工具

DOI:
10.1109/hipc.2014.7116904
复制
发表时间:
2014
期刊:
2014 21st International Conference on High Performance Computing (HiPC)
影响因子:
--
通讯作者:
G. Lartigue
G. Lartigue
中科院分区:
--
文献类型:
--
作者:
Andres Charif Rubial;Emmanuel Oseret;Jose Noudohouenou;W. Jalby;G. Lartigue

文献摘要

被引文献

相似文献

当今的大多数性能分析工具都集中在多核和通信级别发生的问题上。然而,有几个原因可以解释为什么应用程序在核心级别的性能方面可能不正确。在很大程度上,工业应用中的循环受到编译器生成的代码质量的限制,并且并不总是完全受益于最近处理器的可用计算能力。例如,当编译器无法对循环进行向量化时,可能会丢失高达8倍的因子。在关注更高级别的问题之前,首先验证核心级别的性能至关重要。本文介绍了CQA工具,一个以循环为中心的代码质量分析器,基于简化的unicore架构性能建模和质量度量。该工具分析编译器生成的代码的质量。它提供了高水平的指标沿着与人类可理解的报告,涉及到源代码。我们的性能模型假设所有数据都驻留在第一级缓存中。它提供了架构瓶颈和对给定最内层循环的每次迭代所花费的周期数的估计。我们的建模和分析是静态完成的,不需要执行或重新编译应用程序。我们展示了我们的工具能够提供非常有价值的信息,从而提高性能的情况下的实际例子。
Most of today's performance analysis tools are focused on issues occurring at multi-core and communication level. However there are several reasons why an application may not correctly behave in terms of performance at the core level. For a significant part, loops in industrial applications are limited by the quality of the code generated by the compiler and do not always fully benefit from the available computing power of recent processors. For instance, when the compiler is not able to vectorize loops, up to a 8x factor can be lost. It is essential to first validate the core level performance before focusing on higher level issues. This paper presents the CQA tool, a loop-centric code quality analyzer based on a simplified unicore architecture performance modeling and on quality metrics. The tool analyzes the quality of the code generated by the compiler. It provides high level metrics along with human understandable reports that relates to source code. Our performance model assumes that all data are resident in the first level cache. It provides architectural bottlenecks and an estimation of the number of cycles spent in each iteration of a given innermost loop. Our modeling and analyses are statically done and requires no execution or recompilation of the application. We show practical examples of situations where our tool is able to provide very valuable information leading to a performance gain.