Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose...
Transcript of Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose...
![Page 1: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/1.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Introduction to Optimization1
Kristoffer H. [email protected]
Compiler ConstructionCSCI-GA.2130-001/Fall 2013
NYU Courant Institute
December 5, 2013
1ALSU §§8.5,7Introduction to Optimization Kris Rose
![Page 2: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/2.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Context
sourceprogram
FrontEnd// Code
OptimizerIR// Code
GeneratorIR// target
program//
Introduction to Optimization Kris Rose
![Page 3: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/3.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
1 Basic Block DAG
2 Peephole Optimization
3 Thanks!
4 HACS Q&A
Introduction to Optimization Kris Rose
![Page 4: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/4.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
DAG – Directed Acyclic Graph
I One node per initial value.I One node per statement, with an edge to last node
observing every parameter.I Node labeled by operator and list of variables not used
further.I Output nodes are those with live exit variables.
Introduction to Optimization Kris Rose
![Page 5: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/5.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
DAG uses
I Local common subexpressions.I Dead code elimination.I Apply albegraic simplifications.I Reorder statements to reduce variable count.
Introduction to Optimization Kris Rose
![Page 6: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/6.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Local Common Subexpressions
1 a = b + c2 b = a - d3 c = b + c4 d = a - d
b0 c0
+
�� ��
a d0
−
�� ��
b,d
+
��
c
Introduction to Optimization Kris Rose
![Page 7: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/7.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Local Common Subexpressions
1 a = b + c2 b = a - d3 c = b + c4 d = a - d
b0 c0
+
�� ��
a d0
−
�� ��
b,d
+
��
c
Introduction to Optimization Kris Rose
![Page 8: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/8.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Dead Code Elimination
Inputs: b,c,d1 a = b + c2 b = b - c3 c = c + d4 e = b + c
Outputs: a,bb0 c0 d0
+
�� ##
a −
{{ ##
b +
{{ ��
c
+
�� ��
e
Introduction to Optimization Kris Rose
![Page 9: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/9.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Dead Code Elimination
Inputs: b,c,d1 a = b + c2 b = b - c3 c = c + d4 e = b + c
Outputs: a,bb0 c0 d0
+
�� ##
a −
{{ ##
b +
{{ ��
c
+
�� ��
e
Introduction to Optimization Kris Rose
![Page 10: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/10.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Algebraic Identities
x + 0 = 0 + x = x x − 0 = xx × 1 = 1× x = x x/1 = x
EXPENSIVE CHEAPER
x2 = x × x2× x = x + x
x/2 = x × 0.5
Introduction to Optimization Kris Rose
![Page 11: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/11.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Algebraic Identities
x + 0 = 0 + x = x x − 0 = xx × 1 = 1× x = x x/1 = x
EXPENSIVE CHEAPER
x2 = x × x2× x = x + x
x/2 = x × 0.5
Introduction to Optimization Kris Rose
![Page 12: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/12.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Algebraic Identities
I Constant foldingI Commutativity with Local Common SubexpressionsI Associativity with composite expressions
1 a = c + b2 e = c + d + b
b0 c0
+
�� ��
a d0
+
�� ��
e
Introduction to Optimization Kris Rose
![Page 13: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/13.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Algebraic Identities
I Constant foldingI Commutativity with Local Common SubexpressionsI Associativity with composite expressions
1 a = c + b2 e = c + d + b
b0 c0
+
�� ��
a d0
+
�� ��
e
Introduction to Optimization Kris Rose
![Page 14: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/14.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Algebraic Identities
I Constant foldingI Commutativity with Local Common SubexpressionsI Associativity with composite expressions
1 a = c + b2 e = c + d + b
b0 c0
+
�� ��
a d0
+
�� ��
e
Introduction to Optimization Kris Rose
![Page 15: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/15.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Array References
1 x = a[i]2 a[j] = y3 z = a[i]
a0 i0 j0 y0
=[]
�� ��
xKilled!
[]=
tt�� ��
=[]
�� ��
z
Introduction to Optimization Kris Rose
![Page 16: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/16.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Array References
1 x = a[i]2 a[j] = y3 z = a[i]
a0 i0 j0 y0
=[]
�� ��
xKilled!
[]=
tt�� ��
=[]
�� ��
z
Introduction to Optimization Kris Rose
![Page 17: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/17.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
No Pointing!
1 x = *p2 *q = y
Needs pointer (“points-to”) analysis!
Introduction to Optimization Kris Rose
![Page 18: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/18.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
No Pointing!
1 x = *p2 *q = y
Needs pointer (“points-to”) analysis!
Introduction to Optimization Kris Rose
![Page 19: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/19.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Back to Code
b0 c0
+
�� ��
a d0
−
�� ��
b,d
+
��
c
1 a = b + c2 b = a - d3 c = b + c4 d = b
Respect ordering, pay special attention to overlapping sideeffects!
Introduction to Optimization Kris Rose
![Page 20: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/20.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Back to Code
b0 c0
+
�� ��
a d0
−
�� ��
b,d
+
��
c
1 a = b + c2 b = a - d3 c = b + c4 d = b
Respect ordering, pay special attention to overlapping sideeffects!
Introduction to Optimization Kris Rose
![Page 21: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/21.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Back to Code
b0 c0
+
�� ��
a d0
−
�� ��
b,d
+
��
c
1 a = b + c2 b = a - d3 c = b + c4 d = b
Respect ordering, pay special attention to overlapping sideeffects!
Introduction to Optimization Kris Rose
![Page 22: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/22.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
1 Basic Block DAG
2 Peephole Optimization
3 Thanks!
4 HACS Q&A
Introduction to Optimization Kris Rose
![Page 23: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/23.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Redundant Load&Store
1 LD R0, a2 ST a, R0
↓
1 LD R0, a
Introduction to Optimization Kris Rose
![Page 24: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/24.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Redundant Load&Store
1 LD R0, a2 ST a, R0
↓
1 LD R0, a
Introduction to Optimization Kris Rose
![Page 25: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/25.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Unreachable Code
1 if debug == 1 goto L12 goto L23 L1: compute-and-print-really-big-expensive-stuff4 L2:
↓
1 if debug != 1 goto L22 L1: compute-and-print-really-big-expensive-stuff3 L2:
With debug = 0,1 L2:
Introduction to Optimization Kris Rose
![Page 26: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/26.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Unreachable Code
1 if debug == 1 goto L12 goto L23 L1: compute-and-print-really-big-expensive-stuff4 L2:
↓
1 if debug != 1 goto L22 L1: compute-and-print-really-big-expensive-stuff3 L2:
With debug = 0,1 L2:
Introduction to Optimization Kris Rose
![Page 27: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/27.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Unreachable Code
1 if debug == 1 goto L12 goto L23 L1: compute-and-print-really-big-expensive-stuff4 L2:
↓
1 if debug != 1 goto L22 L1: compute-and-print-really-big-expensive-stuff3 L2:
With debug = 0,1 L2:
Introduction to Optimization Kris Rose
![Page 28: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/28.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Flow of Control
1 goto L12 . . .3 L1: goto L2
↓
1 goto L22 . . .3 L1: goto L2
Introduction to Optimization Kris Rose
![Page 29: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/29.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Flow of Control
1 goto L12 . . .3 L1: goto L2
↓
1 goto L22 . . .3 L1: goto L2
Introduction to Optimization Kris Rose
![Page 30: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/30.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Flow of Control
1 goto L12 . . .3 L1: if a < b goto L24 L3:
↓
1 if a < b goto L22 goto L33 . . .4 L3:
Introduction to Optimization Kris Rose
![Page 31: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/31.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Flow of Control
1 goto L12 . . .3 L1: if a < b goto L24 L3:
↓
1 if a < b goto L22 goto L33 . . .4 L3:
Introduction to Optimization Kris Rose
![Page 32: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/32.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Just the Beginning. . .
I Peephole vs Good Code GeneratorI Everything above has better analysis-based solutions
Introduction to Optimization Kris Rose
![Page 33: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/33.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
1 Basic Block DAG
2 Peephole Optimization
3 Thanks!
4 HACS Q&A
Introduction to Optimization Kris Rose
![Page 34: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/34.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
Finally. . .
I Evaluations!I Project Milestone 3 on Sunday.I Exam:
I 5:10 pm–7:00 pm, December 12, 2013, Room WWH 312.I Closed book.I All ALSU sections quoted on class web page.
Introduction to Optimization Kris Rose
![Page 35: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/35.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
1 Basic Block DAG
2 Peephole Optimization
3 Thanks!
4 HACS Q&A
Introduction to Optimization Kris Rose
![Page 36: Introduction to Optimization · Introduction to Optimization1 Kristoffer H. Rose krisrose@cs.nyu.edu Compiler Construction CSCI-GA.2130-001/Fall 2013 NYU Courant Institute December](https://reader034.fdocuments.net/reader034/viewer/2022042600/5f436ec42cfacb33092b022c/html5/thumbnails/36.jpg)
Basic Block DAG Peephole Optimization Thanks! HACS Q&A
The End
Introduction to Optimization Kris Rose