John Cavazos Institute for Computing Systems Architecture Schoo

runmidgeΤεχνίτη Νοημοσύνη και Ρομποτική

20 Οκτ 2013 (πριν από 3 χρόνια και 9 μήνες)

63 εμφανίσεις

CISC673


Optimizing Compilers



1
/34

Presented by: Sameer Kulkarni

Dept

of Computer & Information Sciences

University of Delaware


Phase Ordering

CISC673


Optimizing Compilers



2
/34

Optimization??

does it really work??


0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
SpecJVM98 relative speedup

O1
O2
O3
CISC673


Optimizing Compilers



3
/34

No. of optimizations


O64 = 264 (on last count)


JikesRVM = 67

CISC673


Optimizing Compilers



4
/34

Search space


Consider a hypothetical case where we apply
40 optimizations


O64 : 3.98 x 10
47



Jikes: 4.1 x 10
18


CISC673


Optimizing Compilers



5
/34

Could take a while


Considering the smaller problem, assume that
running all the benchmarks take just 1 sec to
run


Jikes would take: 130.2 billion years


Age of the universe 13 billion years


CISC673


Optimizing Compilers



6
/34

Some basic Optimizations


Constant Sub
-
expression Elimination


Loop Unrolling


Local Copy Prop


Branch Optimizations ...


CISC673


Optimizing Compilers



7
/34

Example

for(int i=0; i< 3;i++){

a = a + i + 1;

}

Loop Unrolling

CSE

CISC673


Optimizing Compilers



8
/34

Instruction Scheduling vs

Register Allocation





Maximizing Parallelism


IS


Minimizing Register Spilling


RA





CISC673


Optimizing Compilers



9
/34

Phase Ord. vs Opt Levels





Opt Levels ~ Timing Constraints


Phase ordering ~ code interactions




CISC673


Optimizing Compilers



10
/34

Whimsical??


Opt X would like to go before Opt Y, but not
always.


0.91
0.92
0.93
0.94
0.95
0.96
0.97
0.98
0.99
1
1.01
Best db
Best javac
Best
mpegaudio
Best jess
Best raytrace
Best
Compress
_209_db
_213_javac
_222_mpegaudio
_202_jess
_205_raytrace
_201_compress
CISC673


Optimizing Compilers



11
/34

Ideal Solution?


Oracle


Perfect sequence at the very start


Wise Man Solution


Given the present code
predict the best optimization solution


CISC673


Optimizing Compilers



12
/34

Wise Man



?



Understand Compilers



Optimizations



Source Code


CISC673


Optimizing Compilers



13
/34

Possible Solutions


Pruning the search space


Genetic Algorithms


Estimating running times


Precompiled choices

CISC673


Optimizing Compilers



14
/34

Pruning Search space






Fast and Efficient Searches for Effective Optimization Phase Sequences, Kulkarni et al. TACO 2005

CISC673


Optimizing Compilers



15
/34

Optimization Profiling




Fast and Efficient Searches for Effective Optimization Phase Sequences, Kulkarni et al. TACO 2005


CISC673


Optimizing Compilers



16
/34

Genetic Algorithms




Fast Searches for Effective Optimization Phase Sequences, Kulkarni et al. PLDI ‘04

CISC673


Optimizing Compilers



17
/34

Exhaustive vs Heuristic [2]

CISC673


Optimizing Compilers



18
/34

Disadvantages


Benchmark Specific


Architecture dependent


Code disregarded



CISC673


Optimizing Compilers



19
/34

Improvements


Profiling the application


Understand the code


Understanding optimizations


Continuous evaluation of transformations




CISC673


Optimizing Compilers



20
/34

Proposed solution

Input = Code Features

Output = Running time

Evolve

Neural Networks




CISC673


Optimizing Compilers



21
/34

Proposed solution

CISC673


Optimizing Compilers



22
/34

Experimental Setup


Neural Network Evolver (ANJI)


Training Set { javaGrande }


Testing Set { SpecJVM, Da Capo }

CISC673


Optimizing Compilers



23
/34

ANJI


Mutating & generating n/w s


Network


phase ordering


Timing Information


Scoring the n/w


CISC673


Optimizing Compilers



24
/34

Training Phase


Generations and Chromosomes


Random chromosomes


Back Propagation


Add/Remove/Update hidden nodes


CISC673


Optimizing Compilers



25
/34

Experimental Setup

CISC673


Optimizing Compilers



26
/34

Network Evolution

CISC673


Optimizing Compilers



27
/34

Network Evolution

CISC673


Optimizing Compilers



28
/34

javaGrande


Set of very small benchmarks


Low running times


Memory management


Machine Architecture


CISC673


Optimizing Compilers



29
/34

Testing


SpecJVM’98 & Da Capo


Champion n/w


Running times


CISC673


Optimizing Compilers



30
/34

Present Solution

CISC673


Optimizing Compilers



31
/34

Implementation in GCC


Milepost GCC


Created for intelligent compilation


Collecting source features


Submitting features to common loc.


Hooks into the Compilation process.




CISC673


Optimizing Compilers



32
/34

Possible Use Case

CISC673


Optimizing Compilers



33
/34

Structure for Phase Ordering

ANJI
network
from Source
features

CISC673


Optimizing Compilers



34
/34

LLVM


Open Source Compiler


Modular Design


Easy to work with


All Optimizations are interchangeable


CISC673


Optimizing Compilers



35
/34

Questions

Most of the files and this presentation have been uploaded to
http://www.cis.udel.edu/~skulkarn/ta.html