Browse Prior Art Database

Compiler-aid finegrain option tuning for applications

IP.com Disclosure Number: IPCOM000233953D
Publication Date: 2014-Jan-03
Document File: 5 page(s) / 87K

Publishing Venue

The IP.com Prior Art Database

Abstract

The core idea of this invention is to leverage compiler's knowledge to help performance developer, we will evaluate the option effectiveness and necessity during optimizations inside compiler , do inter-procedural analysis based on the option setting and options evaluation information, then revise the option setting base on IPA results, unset unnecessary options and set (or propose) required options and recompile necessary modules. With the help of this invention, the performance tuning can be accelerated a lot. The performance developer can still tune the application in coarse granularity, the compiler will propagate the options and do the fine grain granularity tuning automatically to get better performance.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 49% of the total text.

Page 01 of 5

Compiler

Compiler-

When doing performance tuning, we would definitely try to find the best option sets for application. Normally, we will set the option in coarse granularity, that is in Makefile level, we will add options to a list of files together.

For quite some options, the effect will inhibit some optimization inside complier.

If we can do this in fine grain granularity, that is file to file or even function to function, then we can let compiler to apply more optimization on the specific functions, then grap more performance opportunities, the performance would definitely better.

But, it is hard to do so for performance developers, because there are quite some challenges:

The application is usually complicated, there are hundreds of thousands of files


1.

Even if we can do the investigation with scripts automatically, it is hard and time-consuming.


2.

The combinations of different options are large, the search space is very large.

We need some guide to make the search more efficiently, but the relation ship between files or functions are even hard to know,

the performance developer have to dig into files to know what is the relationship between two files, two modules.

A simple example is for float point sub-option tuning.

For applications that use float points, it is important that we have to apply some strict options to preserve the correct behaviors.

But normally only some of the files in the application will be affected only by one or two of the sub-options, we can relax other options to let the compiler optimize more, then get better performance. Without compiler's help, it is hard for performance developer to tune the sub-options, as the challenge listed above are all there. So, most of the performance developers chose to tune only in coarse granularity.

The core idea of this invention is to leverage compiler

leverage compiler'

''s knowledge to help performance developer

s knowledge to help performance developer, we will


1. Evaluate the option effectiveness and necessity during optimizations inside compiler


2. Do inter-procedural analysis based on the option setting and options evaluation information


3. Revise the option setting base on IPA results, unset unnecessary options and set (or propose) required options


4. Recompile necessary modules

With the help of this invention, the performance tuning can be accelerated a lot.The performance developer can still tune the application in coarse granularity, the compiler will propagate the options and do the fine grain granularity tuning automatically to get better performance. We can apply this invention to file granularity , function granularity or even block granularity.

--aid finegrain option tuning for applications

aid finegrain option tuning for applications

1



Page 02 of 5

This invention works as below in 5 steps, we introduce a new inter-procedural analysis pass to compute the required options for modules.

2



Page 03 of 5

for each call tree{

}

Step 1:

Form option setting...