Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University...
Transcript of Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University...
![Page 1: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/1.jpg)
Shambo GhoshUniversity of Kansas
April 29, 2019
![Page 2: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/2.jpg)
Also Known As
u Profile- guided optimizations
u FDO
u PGO (sometimes called pogo)
![Page 3: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/3.jpg)
OUTLINE
u Why ?
u How ?
u What happens when we do it ?
![Page 4: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/4.jpg)
![Page 5: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/5.jpg)
![Page 6: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/6.jpg)
KAI ZEN
![Page 7: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/7.jpg)
Static Analysis
![Page 8: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/8.jpg)
Static Analysis
for( i=0; i<n; i++){
bar();
}
![Page 9: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/9.jpg)
Static Analysis
if (a<b)foo();
elsebar();
![Page 10: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/10.jpg)
Static Analysis
switch(i){case 1: …case 2: …
}
![Page 11: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/11.jpg)
Static AnalysisIf (a<b)
foo(a);else
bar(a);
How frequently is a < b ?
switch(i){case 1: …case 2: …
}
Typical value of i ??
Unanswered Questions
for( i=0; i<n; i++){
bar();
}
How many times ??
![Page 12: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/12.jpg)
FDO
• Runtime optimization• Using profile data for improvements
![Page 13: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/13.jpg)
• Optimization based upon “how it behaves”• “ sections” for speed • “Cold sections” for size
Aim: Smaller code + Faster execution
FDO
![Page 14: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/14.jpg)
![Page 15: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/15.jpg)
STEPS
INSTRUMENTING TRAINING OPTIMIZATION
![Page 16: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/16.jpg)
INSTRUMENT
![Page 17: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/17.jpg)
INSTRUMENT
• “Building it again”• Add “probes”
![Page 18: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/18.jpg)
INSTRUMENT | TRAINING
• “Building it again”• Add “probes”
![Page 19: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/19.jpg)
INSTRUMENT | TRAINING
• “Building it again”• Add “probes”• Run test scenarios• Dump profile data into files
![Page 20: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/20.jpg)
INSTRUMENT | TRAINING | OPTIMIZE
• “Building it again”• Add “probes”• Run test scenarios• Dump profile data into files
![Page 21: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/21.jpg)
INSTRUMENT | TRAINING | OPTIMIZE
• “Building it again”• Add “probes”• Run test scenarios• Dump profile data into files• Reads profile data• Optimizes code
![Page 22: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/22.jpg)
PROBES
![Page 23: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/23.jpg)
PROBES
Value Probes
Counter Probes
![Page 24: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/24.jpg)
Static Analysisif (a<b)
foo(a);else
bar(a);
How frequently is a < b ?
switch(i){case 1: …case 2: …
}
Typical value of i ??
Unanswered Questions
for( i=0; i<n; i++){
bar();
}
How many times ??
![Page 25: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/25.jpg)
void foo(int a, int b){
int i;
for ( i=0; i<n; i++ ){if (a < b) {
bar(a);}
elseswitch (b) {
case 1:case 2:
}}return;
}
Example
![Page 26: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/26.jpg)
foo()
bar(a) switch(b){case 1: …case 2: …}
return
i = 0
a<b ?FalseTrue
i++i<n
True
False
![Page 27: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/27.jpg)
foo()
bar(a) switch(b){case 1: …case 2: …}
return
i = 0
a<b ?FalseTrue
i++i<n
True
False
![Page 28: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/28.jpg)
foo()
bar(a) switch(b){case 1: …case 2: …}
return
i = 0
a<b ?FalseTrue
i++i<n
True
False
![Page 29: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/29.jpg)
OPTIMIZATIONS
• Inlining• Speed vs Size• Block Layout• Code Separation• Function Layout• Switch Expansion• Partial Inlining
![Page 30: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/30.jpg)
INLINING
![Page 31: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/31.jpg)
eaton()
leep2()
learned()
spahr() m2sec()
10
100
20 140
INLINING
![Page 32: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/32.jpg)
eaton()
leep2()
learned()
spahr() m2sec()
spahr()
spahr()
m2sec()
m2sec()
75
50
15
10
100
20
INLINING
![Page 33: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/33.jpg)
eaton()
leep2()
learned()
spahr() m2sec()
spahr() m2sec()
10
100
20
15
125
INLINING
![Page 34: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/34.jpg)
SPEED VS SIZE
![Page 35: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/35.jpg)
eaton()
leep2()
learned()
spahr() m2sec()
spahr() m2sec()
10
100
20
15
125
SPEED VS SIZE
If HIGH Dynamic Instruction Count à SPEEDIf LOW Dynamic Instruction Count à SIZE
Done after inline decisions are made
![Page 36: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/36.jpg)
BLOCK LAYOUT
![Page 37: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/37.jpg)
BLOCK LAYOUT
B
D
A
C
D
B
C
A
200
200
30
30
![Page 38: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/38.jpg)
BLOCK LAYOUT
B
D
A
C
D
B
C
A
200
200
30
30
C
B
D
A
Improvement: Instruction cache locality
![Page 39: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/39.jpg)
CODE SEPARATION
![Page 40: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/40.jpg)
CODE SEPARATION
LIVE and DEAD code separated
C
B
D
A
![Page 41: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/41.jpg)
CODE SEPARATION
Improvement: Better code locality, lesser working set
C
B
D
A
![Page 42: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/42.jpg)
FUNCTION LAYOUT
![Page 43: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/43.jpg)
FUNCTION LAYOUT
• Achieve page locality in functions• Closest is best approach• Connected functions are put together
Done after in-lining and code separation
![Page 44: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/44.jpg)
FUNCTION LAYOUT
Done after in-lining and code separation
B
D
A
C
2000
150
11
2
B
D
A
C
11
2
150
B DA
C
112
![Page 45: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/45.jpg)
SWITCH EXPANSION
![Page 46: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/46.jpg)
SWITCH EXPANSION
We know thati = 5 most of the time
switch(i){case 1: …case 2: …
}
if( i == 5 )goto default;
switch(i){case 1: …case 2: …default: …}
![Page 47: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/47.jpg)
PARTIAL INLINING
![Page 48: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/48.jpg)
PARTIAL INLINING
if ( a < b ) {
a = a + b;}else
.
.
.
.(never ending code)
if ( a < b ) {
a = a + b;}else
Bar()
Foo()Foo()
Hot section
Improvement: Lesser page faults
![Page 49: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/49.jpg)
VISUAL STUDIO
![Page 50: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/50.jpg)
VISUAL STUDIO
![Page 51: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/51.jpg)
.pgc
.pgd
.pgc.pgc.pgc
.pgc
• In optimization stage, pgd is read• Determine which functions will be compiled for speed/size• Entry count, static/dynamic instructions count• pgomgr tool• Weights may be attached
VISUAL STUDIO
![Page 52: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/52.jpg)
![Page 53: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/53.jpg)
SPEC2K Sjeng Gobmk Perl POV-Ray Gcc
LTCG sizein MB
0.14 0.57 0.79 0.92 2.36
POGO sizein MB
0.14 0.52 0.74 0.82 2.0
# of LTCG in-lines
163 2678 8050 9977 21898
# of POGOin-lines
235 938 1729 4976 3936
live section size (pogo)
0.5 0.3 0.25 0.17 0.77
% page locality
97 75 85 98 80
% speed gain
8.5 6.6 14.9 36.9 7.9
CASE STUDY
![Page 54: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/54.jpg)
![Page 55: Shambo Ghosh - ITTCkulkarni/teaching/EECS768/19-Spring/Shambo_Ghosh_FDO.pdfShambo Ghosh University of Kansas April 29, 2019. Also Known As uProfile-guided optimizations uFDO uPGO (sometimes](https://reader033.fdocuments.us/reader033/viewer/2022052101/603ba8f6f7759d4636330a03/html5/thumbnails/55.jpg)
References
• Northwest C++ Users’ Group: Ankit Asthana https://nwcpp.org/march-2013.html• GoingNative :Program Manager Amit Mohindra and Development Lead Ten Tzen• A Survey of Adaptive Optimization in Virtual Machines: MATTHEW ARNOLD, STEPHEN J. FINK,
DAVID GROVE, MICHAEL HIND, AND PETER F. SWEENEY, MEMBER, IEEE