Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.

IPO report details

purplemonkey123
Beginner
383 Views
Hello,


I wished to inquire about what exactly the various optimizations do as part of IPO. There is a list of the various optimizations but it is not clear what types of operations are actually performed when such optimizations are applied.

Consider, for instance, this snippet from a generated IPO report:


BEFORE cse: E-SE E-DSE E-AR


BEFORE fmod_: E-SE E-DSE E-AR



AFTER main: E-SE E-DSE


AFTER ci: R-AR E-SE E-DSE E-AR


AFTER ce: R-AR E-SE E-AR


AFTER cse: R-AR E-SE E-DSE E-AR


AFTER fmod_: R-AR E-SE E-DSE E-AR


<;-1:-1;IPO ROUTINE ATTRIBUTES PROPAGATION;;0>
ROUTINE ATTRIBUTE PROPAGATION TOTALS:

RDECL: NSE(0->0), AR(0->4)
ENTRY: SE(5->5), DSE(4->4), AR(2->4)

What exactly is "routine attributes propagation"? I can see the function names are listed first but I could not find any mention of the meanings attached to the various abbreviations thereafter. What meaning then do the numerous abbrevations hold?

As far as I can tell, it seems to transform the function or the "function attributes" in some way but it is unclear as to what type of transformation this is.

It may be the case that I have to consult some compiler theory books but I would appreciate it if some particular book(s) explaining specifically the ~20 optimizations that are applied as part of IPO be recommended.

Any help in this matter is greatly appreciated.
0 Kudos
3 Replies
aazue
New Contributor I
383 Views
Hi
Ipo is used principally for merge objects as example source that have language C/c++
and Fortran ,But Is not the only one side where it can be used favoring
This side is complexe but if you want extand more subject search word FLTO , GIMPLE ,LTRANS
Gold linker (similar xild) (ELF) WWW.
Example
If you have last compiler gcc 4.6.0 you must discover that time for build could be reduced
divided by 20 or more when flag -fwhole-program used
Load this link you have general information vulgarized (IPO is similar almost functionally LTO)
http://gcc.gnu.org/projects/lto/whopr.pdf

http://www.google.fr/url?sa=t&source=web&cd=10&ved=0CGkQFjAJ&url=http%3A%2F%2Farxiv.org%2Fpdf%2F1010.2196&rct=j&q=GIMPLE%20LTO%20pdf&ei=XIjMTbaRCciAhQes2rXkBQ&usg=AFQjCNE_DxNjq59Tk0Bdzl5fRkTUrAGBVQ&cad=rja

Trace That you give could be reworked better functions ordered in objects for linker.
Better you use is an large control , trace strict for your source is correct
Unfortunately, is an new technology yet at start progressing
with yet several sides is imperfect.
Regards
Nb:
(maybe , show if subject is in google books ???)
0 Kudos
purplemonkey123
Beginner
383 Views
Hello bustaf,


Thank you for your timely response. I consulted the paper at:

http://www.google.fr/url?sa=t&source=web&cd=10&ved=0CGkQFjAJ&url=http%3A%2F%2Farxiv.org%2Fpdf%2F1010.2196&rct=j&q=GIMPLE%20LTO%20pdf&ei=XIjMTbaRCciAhQes2rXkBQ&usg=AFQjCNE_DxNjq59Tk0Bdzl5fRkTUrAGBVQ&cad=rja

It was helpful in the sense that it provided some hints about what "routine attribute propagation" might be. Upon further investigation, I may have found what the theoretical roots for it might be. It probably stems from the concept of "attribute grammars" in the theory of computation:

http://en.wikipedia.org/wiki/Attribute_grammar

It is likely that each "routine" or "function" is assigned certain attributes that are then propagated somehow through the call graph for the application. What those attributes are is unknown as the abbreviations are quite ambiguous.

I am hoping that someone can at least verify that I am on the right track or whether I am completely wrong.

Anyway, thanks for your help.
0 Kudos
aazue
New Contributor I
383 Views
Hi purplemonkey123

Thank for your link that give clear one side of process theorized principle.

I have read some files sources gnu compiler for understand more clear
gnu compiler flag -fwhole-program. but I'm afraid that it too hard for the possibility
my small head old now..
I am very surprise and curious for understand how is reduced same factor times
when you build with this flag, is crazy.. I think with I5 or I7 processor it would be
possible to build source contained, is contextual in real time, without penalty
observed for users.
I hope Icc take same process futures
I have build last package binutils that is required before build GNU with (lto & gold)
and no problem observed with shared same machine Icc compiler.

( I have test cross the library have origin of the two compilers without
problem at process linkage)(ICC 12.0.2 & GNU 4.6.0)


Regards
0 Kudos
Reply