55
Shambo Ghosh University of Kansas April 29, 2019

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

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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
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
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

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

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

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

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

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

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

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

• 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
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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.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
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

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
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

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