Addressing)Long,term)Challenges)in)Compiler)Construc6on) The)PACE)Project)

advertisement
platform-aware compilation environment
platform-aware compilation environment
Addressing)Long,term)Challenges)in)Compiler)Construc6on)
The)PACE)Project)
Computer)Science)Affiliates)Day,)October)15,)2009)
Keith)D.)Cooper)
Doerr%Professor%in%Computa1onal%Engineering%
Department%of%Computer%Science%
Rice%University%
PACE%Project%Lead%%
1501 Casho Mill Road, Suite 4, Newark DE 19711, Tel: (302) 738-1438, Fax :(302) 7
Email: info@etinternational.com
This)work)is)funded)by)the)Defense)Advanced)Research)Projects)Agency)through)AFRL)Contract)FA8650L09LCL7915)
ETI Letter of Commitment
with)Rice)University.))The)opinions)and)findings)in)this)document)do)not)necessarily)reflect)the)views)of)either)the)
United)States)Government)or)of)Rice)University.)
July 1, 2008
The)PACE)Project)
The)PACE)Project)is)a)mulULinsUtuUonal)research)project)funded)by)the)
Defense)Advanced)Research)Projects)Agency)through)the)Air)Force)
Research)Laboratory.)
The)PACE)Project)is)developing)an)architecture)aware)compiler)environment.)
Senior%Personnel:%
Keith%Cooper,%John%MellorECrummey,%Krishna%Palem,%
Vivek%Sarkar,%and%Linda%Torczon%+%Michael%Burke,%Philippe% Rice%University%
Charles,%Erzsebet%Merenyi,%Ray%Simar,%Tim%Harvey%
Rishi%Khan%
ET%Interna1onal%%
P.%Sadayappan%
Ohio%State%University%
Sanjiva%Lele%
Stanford%University%
Reid%Tatge%
Texas%Instruments,%Inc.%%
platform-aware compilation environment
platform-aware compilation environment
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
2)
The)Challenge)
It)takes)years)to)obtain)a)highLquality)compiler)for)a)new)computer)system)
•  Classic)examples)are)three)to)five)years)in)development)and)tuning)
•  Modern)computer)systems)may)be)harder)than)the)classic)examples)
–  Heterogeneity)&)ubiquitous)parallelism)
Why)is)porUng)an)opUmizing)compiler)hard?)
•  Compilers)deal)in)details)and)interacUons)between)the)details)
–  Cache)parameters,)ILP)available)in)applicaUon,)instrucUon)fetch)&)issue)
discipline,)pipeline)structure,)thread)creaUon)cost,)call)overhead,)…)
–  To)achieve)performance,)compiler)must)discover)rate)limiters)and)relieve)them)
•  Compilers)must)get)all)the)details)right)to)achieve)performance)
–  Simply)takes)Ume)to)understand)the)details,)the)problems,)&)the)cures)
How)can)we)reduce)the)Ume)to)obtain)highLquality)compilers?)
Automate%the%process%of%tuning%and%por1ng%the%compiler%
platform-aware compilation environment
Subs1tute%computa1on%for%human%effort%
platform-aware compilation environment
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
3)
MeeUng)the)Challenge)
PACE)will)aaack)the)problem)of)portable)opUmizaUon)
•  Goal)is)to)build)a)selfLretargeUng,)sourceLtoLsource)opUmizer)
–  PACE)System)will)measure)performance)criUcal)system)properUes)
–  PACE)System)will)adapt)its)behavior)to)those)measured)properUes)
•  PACE)will)not)aaack)portable)code)generaUon))))))))(e.g.,%no%back%end%research))
–  PACE)will)rely)on)existence)of)a)C)compiler)for)the)target)machine)
–  PACE)produces)targetLspecific,)compiler)specific)C)code)
•  ExisUng)naUve)C)compiler)produces)executable)code)for)the)target)
•  Might)use)more)than)one)C)compiler)
PorUng)PACE)to)a)new)system)should)be)quick)and)easy)
•  Compile)&)run)the)resource)characterizaUon)sodware)
•  Compile)PACE)and)start)using)it)to)compile)&)run)your)applicaUon)
platform-aware compilation environment
platform-aware compilation environment
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
4)
PACE)Project)Overview)
The)PACE)System)will)embody)four)key)themes)
•  Measure)system)performance,)both)hardware)and)sodware)
–  View)effecUve)or)available)performance)through)the)lens)of)system)sodware)
•  Use)system)&)applicaUon)characterizaUons)to)drive)opUmizaUon)
–  Levels)of)opUmizaUon)for)plahormLwide)and)targetLspecific)concerns)
•  Adjust)and)adapt)behavior)at)runUme))
–  Shid)strategies)&)parameters)to)improve)observed)performance)
•  Use)offline)learning)to)encode)experience)&)observed)behaviors)
–  Learn)about)interplay)of)system,)sodware,)&)applicaUons)
We)will)instanUate)these)themes)in)a)sophisUcated)openLsource)compilaUon)
environment)
platform-aware compilation environment
platform-aware compilation environment
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
5)
PACE)Project)Overview)
PACE)decomposes)the)problem)into)four)key)subprojects))
•  Resource)CharacterizaUon)Task)
–  IdenUfy)system)parameters)that)should)drive)opUmizaUon)
–  Develop)sodware)tools)that)can)measure)these)parameters)in)a)portable)way)
•  PACE)Compiler)Task)
–  Transform)applicaUon)code)for)systemLwide)performance)
–  Tailor)applicaUon)code)to)specific)processing)elements)
•  RunUme)System)Task)
–  Measure)applicaUon)behavior)for)characterizaUon)&)performance)debugging)
–  Adjust)code)&)parameters)at)runUme)to)improve)performance)
•  Machine)Learning)AcUvity)
–  Gather)experience)and)observaUon)and)turn)them)into)knowledge)
–  Use)staUsUcal)machine)learning)techniques)to)solve)deep)(noisy))problems)
platform-aware compilation environment
platform-aware compilation environment
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
6)
The)PACE)System) ))
Learning)
Engine)
Knowledge)
Base)
AppLAware)
ParUUoner)
uBenchmarks)
Source)
Code)
Plahorm)Aware)
OpUmizer)
System)
CharacterizaUon)
ApplicaUon)
CharacterizaUon)
IR)
Config)
File)
Compiler)
CharacterizaUon)
platform-aware compilation environment
uBenchmarks)
platform-aware compilation environment
Target)Aware)
OpUmizer)
C)or))
Fortran)
Vendor)
compiler)1)
IR)
Vendor)
compiler)2)
RunUme)System)
X86)
Backend)
Performance)
HPCToolkit)
Measurement)
RunUme))
opt.)
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
7)
Resource)CharacterizaUon)
Learning)
Engine)
Knowledge)
Base)
AppLAware)
ParUUoner)
uBenchmarks)
Source)
Code)
Plahorm)Aware)
OpUmizer)
System)
CharacterizaUon)
ApplicaUon)
CharacterizaUon)
IR)
Config)
File)
Compiler)
CharacterizaUon)
platform-aware compilation environment
uBenchmarks)
platform-aware compilation environment
Target)Aware)
OpUmizer)
C)or))
Fortran)
Vendor)
compiler)1)
IR)
Vendor)
compiler)2)
RunUme)System)
X86)
Backend)
Performance)
Measurement)
RunUme))
opt.)
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
8)
The)PACE)Compiler)
Learning)
Engine)
C,)C++,)Fortran)with)
MPI)calls)or)OpenMP)
pragmas)&)calls)
Knowledge)
Base)
AppLAware)
ParUUoner)
uBenchmarks)
Source)
Code)
Plahorm)Aware)
OpUmizer)
System)
CharacterizaUon)
ApplicaUon)
CharacterizaUon)
IR)
Config)
File)
Compiler)
CharacterizaUon)
platform-aware compilation environment
uBenchmarks)
platform-aware compilation environment
Target)Aware)
OpUmizer)
C)or))
Fortran)
Vendor)
compiler)1)
IR)
Vendor)
compiler)2)
RunUme)System)
X86)
Backend)
Performance)
HPCToolkit)
Measurement)
RunUme))
opt.)
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
9)
The)PACE)RunUme)
Learning)
Engine)
Knowledge)
Base)
AppLAware)
ParUUoner)
uBenchmarks)
Source)
Code)
Plahorm)Aware)
OpUmizer)
System)
CharacterizaUon)
ApplicaUon)
CharacterizaUon)
IR)
Config)
File)
Compiler)
CharacterizaUon)
platform-aware compilation environment
uBenchmarks)
platform-aware compilation environment
Target)Aware)
OpUmizer)
C)or))
Fortran)
Vendor)
compiler)1)
IR)
Vendor)
compiler)2)
RunUme)System)
X86)
Backend)
Performance)
HPCToolkit)
Measurement)
RunUme))
opt.)
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
10)
The)Role)of)Machine)Learning)
Learning)
Engine)
Knowledge)
Base)
AppLAware)
ParUUoner)
uBenchmarks)
Source)
Code)
Plahorm)Aware)
OpUmizer)
System)
CharacterizaUon)
ApplicaUon)
CharacterizaUon)
IR)
Config)
File)
Compiler)
CharacterizaUon)
platform-aware compilation environment
uBenchmarks)
platform-aware compilation environment
Target)Aware)
OpUmizer)
C)or))
Fortran)
Vendor)
compiler)1)
IR)
Vendor)
compiler)2)
RunUme)System)
X86)
Backend)
Performance)
HPCToolkit)
Measurement)
RunUme))
opt.)
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
11)
PACE)Resource)CharacterizaUon)
The)remainder)of)this)talk)will)focus)on)resource)characterizaUon)
•  First)part)of)PACE)with)a)“due)date”)
•  Piece)of)PACE)where)my)efforts)are)currently)directed)
Present)a)liale)background,)then)a)series)of)vigneaes)
The)work)I)present)is)the)product)of)a)large)and)talented)team)
Senior)Personnel)
Keith%Cooper,%Tim%Harvey,%John%MellorECrummey,%
Vivek%Sarkar,%Ray%Simar,%Reid%Tatge,%Linda%Torczon)
Junior)Personnel)
Heba%Bevan,%Arnold%Schwaighofer,%Jeff%Sandoval,%
Anna%Youseffi)
platform-aware compilation environment
platform-aware compilation environment
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
12)
PACE)Approach)to)Resource)CharacterizaUon)
Select)characterisUcs)that)the)compiler)or)runUme)system)will)actually)use)
•  No)point)measuring)numbers)for)their)own)sake)
•  Emphasis)on)discernible)and)effecUve)numbers)
•  Each)characterisUc)should)be)jusUfied)
platform-aware compilation environment
platform-aware compilation environment
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
13)
PACE)Approach)to)Resource)CharacterizaUon)
Select)characterisUcs)that)the)compiler)or)runUme)system)will)actually)use)
•  No)point)measuring)numbers)for)their)own)sake)
•  Emphasis)on)discernible)and)effecUve)numbers)
•  Each)characterisUc)should)be)jusUfied)
Measure)them)in)simple)and)direct)ways)(whenever)possible))
•  MulUple)microbenchmarks)for)complex)or)tricky)numbers)
•  Simple)interfaces)and)simple)code)for)portability)
•  Small)set)of)sodware)requirements))(in)the)spirit)of)AACE))
platform-aware compilation environment
platform-aware compilation environment
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
14)
Remember,)the)overarching)goal)is)to)build)
PACE)Approach)to)Resource)CharacterizaUon)
an)opUmizing)compiler)that)retargets)itself.)
Select)characterisUcs)that)the)compiler)or)runUme)system)will)actually)use)
•  No)point)measuring)numbers)for)their)own)sake)
•  Emphasis)on)discernible)and)effecUve)numbers)
•  Each)characterisUc)should)be)jusUfied)
Measure)them)in)simple)and)direct)ways)(whenever)possible))
•  MulUple)microbenchmarks)for)complex)or)tricky)numbers)
•  Simple)interfaces)and)simple)code)for)portability)
•  Small)set)of)sodware)requirements))(in)the)spirit)of)AACE))
Create)a)standalone)tool)that)compiles,)measures,)and)reports)
•  Should)be)robust)across)machines)and)compilers)
• platform-aware
Perform)extensive)tesUng)on)variety)of)local)machines)
compilation environment
–  Add)tests)on)remote)machines)when)confident)of)behavior)
platform-aware compilation environment
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
15)
Sodware)Resources)Available)to)the)PACE)RC)Sodware)
Because%PACE%is%to%be%portable,%it%has%a%small%set%of%requirements.)
•  POSIX,)including)pthreads))(will)use)POSIX)clock())for)Umer)support))
•  C)Compiler)+)standard)libraries)+)math)libraries)
•  An)interface)to)specify)thread)affinity)
•  Syntax)for)compiling)and)execuUng)microbenchmarks)at)appropriate)
opUmizaUon)level)
–  Must)include)compiler)opUons)to)let)microbenchmarks)funcUon)correctly)
•  Standard)set)of)tools,)such)as)shell,)make,)autoconf,)automake,)…)
You)can)think)of)resource)characterizaUon)as)an)adversarial)game)played)with)
a)few)simple)tools)–)C)code,)your)understanding)of)architecture,)and)your)
colleagues)ingenuity)
platform-aware
compilation environment
platform-aware compilation environment
C)Compiler:))
)LL))May)need)assembly)output)opUon)on)C)compiler)
)LL))May)need)assembly)code)“drop”)
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
16)
CharacterisUcs)of)Interest)to)PACE)
Memory)Hierarchy)
EffecUve)sizes,)granularity,)associaUvity,)&)latency)at)each)
discernible)level)of)the)hierarchy)))))))))))))))))))))))(code%&%data))
Memory)bandwidth)as)measured)by)Stream)benchmark)
Number)of)concurrent)memory)streams)before)degradaUon))
Outstanding)memory)operaUons)before)stall)or)interlock))
Impact)of)stride)on)latency)&)effecUve)cache)size)
Processor)
Issue)width)by)typed)operator)
RelaUve)operator)costs)
Branch)costs))
System)
EffecUve)number)of)threads)before)degradaUon)
Cost)of)moving)value)between)threads)
platform-aware compilation environment
platform-aware compilation environment
Cost)of)thread)creaUon,)destrucUon,)&)various)pLthread)and)
MPI)primiUves)
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
17)
CharacterisUcs)of)Interest)to)PACE)
NaUve)Compiler)
Performance)on)specific)C)language)idioms)(array)vs.)
pointer,)mulUplyLadd,)sequenUal)vs.)parallel)loop,)…))
Number)of)concurrently)live)values)before)performance)
degradaUon)
We)are)also)interested)in)a)class)of)quesUons)that)deal)with)resource)sharing)
•  Not)yet)sure)what)the)quesUons)are))
• platform-aware
Not)sure)how)to)measure)useful)answers)
compilation environment
•  Our)Machine)Learning)folks)are)looking)at)this)issue)
platform-aware compilation environment
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
18)
Stories)from)Microbenchmark)Development)
•  Some)microbenchmarks)are)easy)
•  Some)microbenchmarks)are)easy)but)have)complex)postLanalysis)
•  Some)microbenchmarks)are)simply)hard)
•  Most)of)the)microbenchmarks)we)have)built)incorporate)subtle)knowledge)
of)interacUons)between)compiler,)architecture,)and)performance)
We)will)see)examples)of)each)kind)
platform-aware compilation environment
platform-aware compilation environment
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
19)
Easy)microbenchmark)
Cost)of)Array)Access)versus)Pointer)Access)
The)TAO)should)make)an)intelligent)decision)about)how)to)represent)arrays)
The)Idea)
•  Use)an)array)that)fits)in)L1)cache))
•  Access)it)a)significant)number)of)Umes)
These)raUos)should)
change)with)opUmizaUon)
(e.g.,)strength)reducUon))
–  Measure)1D)array)with)pointer)and)array)subscripts)
–  Measure)2D)array)with)pointer)and)array)subscripts)
–  Measure)3D)array)with)pointer)and)array)subscripts)
•  Microbenchmark)produces)a)raUo)of)pointer)cost)to)array)cost)
•  On)Intel)T9600,)with)gcc)4.1)–O3)
Intel)T9600)
1D)
2D)
3D)
Rel.)Cost)of)Ptr.)vs.)Array)Access)
1)
0.62)
0.28)
platform-aware compilation environment
No)effect,)with)this)compiler)and)system,)from)row)vs.)column)major)order)
TAO)≈)Target)Aware)OpUmizer)
platform-aware compilation environment
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
20)
Easy)microbenchmark,)
Complex)postLanalysis)
Anomalies)in)Access)Data)by)Stride)
Changing)the)stride)of)array)access)can)change)the)cost)of)those)accesses)
•  The)PAO)should)consider)adjusUng)the)dimension)of)an)array)if)a)nearby)
size)will)produce)faster)access)
easy)(Interest)out)to)
fairly)large)strides))
•  InterpreUng)and)
summarizing)the)
data)is)harder)
•  SummarizaUon)may)
reduce)accuracy)but)
increase)usability!)))
1.100)
L1)Line)Size)
Intel)T9600)
1.000)
0.900)
Anomalous)Behavior)from)Prefetch)Engine?)
Seconds)
•  Gathering)the)data)is)
0.800)
0.700)
0.600)
Simple stride test, 1 to 100
Each iteration reads and
writes the array at stride.
0.500)
0.400)
0)
10)
20)
30)
40)
50)
Stride)
60)
compilation environment
• platform-aware
Both)large)and)small)sizes)are)of)interest)to)PAO)
•  Polyhedral)system)wants)to)know)1,)2,)and)several)sizes)of)large)
platform-aware compilation environment
70)
80)
90)
100)
PAO)≈)Plahorm)Aware)OpUmizer)
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
21)
Hard)microbenchmark)
Measuring)Memory)Hierarchy)Parameters)
The)PAO)needs)to)know)the)effecUve)size,)associaUvity,)granularity,)&)access)
cost)of)each)discernible)level)in)the)memory)hierarchy)
–  Used)in)polyhedral)transformaUons)(+%others))to)improve)memory)behavior))
•  People)assured)us)
•  It)was)not)clear)how)
various)hardware)
features)affect)data)
platform-aware compilation environment
platform-aware compilation environment
4KB
8KB
16KB
32KB
64KB
128KB
256KB
512KB
1MB
2MB
4MB
8MB
16MB
32MB
64MB
Intel)Xeon)3220)
60
50
Time (nsec)
that)membench)
already)solved)these)
problems)
•  Membench)output)
requires)expert)
interpretaUon)
•  It)was)not)clear)how)
to)read)this)data)
with)75%)accuracy)
70
40
30
20
10
0
4
16
64
256
1K
4K
16K
Stride (bytes)
64K
256K
1M 2M 4M 8M 16M32M
Graph)generated)locally)with)
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
Yelick’s)membench)code)
22)
You)Can)Find)Experts)…)
Graphs)&)interpretaUon)from)Kathy)Yelick)@)Berkeley)
Sun)UltraL2i,)333)MHz)
Array length
ate)
m
o
t
u
)to)a
d
a))
r
t
a
a
h
d
)
)
e
s
i
b
ay)
of)th
)
m
)
n
t
i
o
)
t
U
u
a
B
pret
r
e
t
n
i
)
expert
Mem: 396 ns
(132 cycles)
L2: 2 MB,
12 cycles (36 ns)
platform-aware compilation environment
L1: 16 B line
L2: 64 byte line
platform-aware compilation environment
L1:
16 KB
2 cycles (6ns)
8 K pages,
32 TLB entries
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
23)
Measuring)Memory)Hierarchy)Parameters)
So,)we)set)out)to)build)our)own)microbenchmarks)
•  Focused)on)finding)level)size)and)granularity)
• 
• 
0.0300)
Intel)T9600)
Unpermuted)Array))
1)KB)to)16)MB)
Actual)L2)
0.0290)
Miniscule)Change)
• 
strides)through)an)
array)
Fix)#)of)accesses)&)
vary)array)size)
Time)should)rise)
when)size)exceeds)
cache)size)
Here)is)the)data)
from)a)Core)2)Duo)
What)happened?)
0.0310)
Seconds)
•  Built)a)code)that)
20%)
–  AssociaUvity)is)not)too)hard,)once)you)know)size)
0.0280)
0.0270)
Actual)L1)
Actual)TLB)
0.0260)
• 
0.0250)
platform-aware
compilation
environment
•  All)of)the)money)that) 1,000)
Array)Size)
Log)Scale)
10,000)
100,000)
1,000,000)
10,000,000)
)Intel)spent)on)the)design)of)prefetch)units)paid)off)
platform-aware compilation environment
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
24)
Measuring)Memory)Hierarchy)Parameters)
Strategy:)to)defeat)the)prefetch)unit,)use)randomizaUon)
100)
Intel)T9600)
Straight)PermutaUon)Test)
2)KB)to)28)MB)
e)and)
is
o
)n
s
a
)h
ll
U
)s
t
)i
)beaer,)but
h
c
u
)m
s
)i
e
v
r
pected.)
u
x
)e
e
This)c
)w
t
a
h
)w
h
id)not)matc
)d
t
)I
.)
s
e
li
a
m
o
n
a
Tiny)Dips)
10)
Seconds)
Log)Scale)
Actual)L2)
Actual)TLB)
False)L2)?)
1)
1,000)
10,000)
100,000)
1,000,000)
Array)Size)
Log)Scale)
10,000,000)
Actual)L1)
platform-aware compilation environment
0.1)
platform-aware compilation environment
This)test)uses)a)single)permutaUon,)
stored)in)the)accessed)array.)
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
25)
Measuring)Memory)Hierarchy)Parameters)
Strategy:)to)defeat)the)prefetch)unit,)use)randomizaUon)
2.5)
This)test)uses)a)block)cyclic)permutaUon,)
stored)in)the)accessed)array.))The)data)is)
much)closer)to)what)we)expected.)
Intel)T9600)
Block)Cyclic)PermutaUon)
Blocksize)=)1)KB)
4)KB)to)16)MB)
2)
Seconds)
1.5)
Shared)code)
&)data)?)
1)
Actual)L2)
Private)TLB)
0.5)
Shared)TLB)
Actual)L1)
platform-aware compilation environment
0)
4,000)
platform-aware compilation environment
40,000)
400,000)
4,000,000)
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
Array)Size)
Log)Scale)
26)
Measuring)Memory)Hierarchy)Parameters)
Strategy:)to)defeat)the)prefetch)unit,)use)randomizaUon)
2.5)
Even)though)this)graph)appears)easier)
to)read,)it)sUll)has)minor)anomalies.)
Intel)T9600)
Block)Cyclic)PermutaUon)
Blocksize)=)1)KB)
4)KB)to)16)MB)
2)
1.5)
Seconds)
Anomalies)
1)
Actual)L2)
Private)TLB)
0.5)
Shared)TLB)
Actual)L1)
platform-aware compilation environment
0)
4,000)
platform-aware compilation environment
40,000)
400,000)
4,000,000)
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
Array)Size)
Log)Scale)
27)
Measuring)Memory)Hierarchy)Parameters)
New)Strategy:))Now)that)we)have)fairly)clean)data,)learn)to)read)the)data)
•  For)level)size:)find)points)that)we)suspect)are)levels)&)zoom)on)on)them)
2.5)
–  Three)tests:))log)test,)inflecUon)test,)and)a)concavity)test)
–  In)a)typical)run)on)the)T9600,)five)suspect)points)appear)in)the)block)cyclic)data)
2)
Seconds)
1.5)
1)
Actual)L2)
Private)TLB)
0.5)
Actual)TLB)
Actual)L1)
platform-aware compilation environment
0)
4,000)
platform-aware compilation environment
40,000)
400,000)
4,000,000)
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
Array)Size)
Log)Scale)
28)
Measuring)Memory)Hierarchy)Parameters)
New)Strategy:))Now)that)we)have)fairly)clean)data,)learn)to)read)the)data)
•  For)level)size:)find)points)that)we)suspect)are)levels)&)zoom)on)on)them)
2.5)
Closer)look)at)32)KB)
0.0009)
–  Three)tests:))log)test,)inflecUon)test,)and)a)concavity)test)
0.0008)
–  In)a)typical)run)on)the)T9600,)five)suspect)points)appear)in)the)block)cyclic)data)
0.0007)
2)
0.0006)
0.0005)
0.0004)
Seconds)
1.5)
0.0003)
0.0002)
Real)cache)transiUon)
1)
0.0001)
0)
0)
10,000)
20,000)
30,000)
0.5)
40,000)
50,000)
Private)TLB)
60,000)
Actual)L2)
70,000)
Actual)TLB)
Actual)L1)
platform-aware compilation environment
0)
4,000)
platform-aware compilation environment
40,000)
400,000)
4,000,000)
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
Array)Size)
Log)Scale)
29)
Measuring)Memory)Hierarchy)Parameters)
New)Strategy:))Now)that)we)have)fairly)clean)data,)learn)to)read)the)data)
• 0.0009)
For)level)size:)find)points)that)we)suspect)are)levels)&)zoom)on)on)them)
2.5)
Closer)look)at)64)KB)
–  Three)tests:))log)test,)inflecUon)test,)and)a)concavity)test)
–  In)a)typical)run)on)the)T9600,)five)suspect)points)appear)in)the)block)cyclic)data)
0.0008)
0.0007)
2)
Real)TransiUon,)
Hard)to)Find))
0.0006)
0.0005)
Seconds)
1.5)
0.0004)
0.0003)
1)
0.0002)
0)
Actual)L2)
20,000) 40,000) 60,000) 80,000) 100,000) 120,000) 140,000)
Private)TLB)
0.5)
Actual)TLB)
Actual)L1)
platform-aware compilation environment
0)
4,000)
platform-aware compilation environment
40,000)
400,000)
4,000,000)
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
Array)Size)
Log)Scale)
30)
Measuring)Memory)Hierarchy)Parameters)
New)Strategy:))Now)that)we)have)fairly)clean)data,)learn)to)read)the)data)
• 0.0009)
For)level)size:)find)points)that)we)suspect)are)levels)&)zoom)on)on)them)
2.5)
Closer)look)at)64)KB)
–  Three)tests:))log)test,)inflecUon)test,)and)a)concavity)test)
–  In)a)typical)run)on)the)T9600,)five)suspect)points)appear)in)the)block)cyclic)data)
0.0008)
0.0007)
2)
Real)TransiUon,)
Hard)to)Find))
0.0006)
0.0005)
Seconds)
1.5)
0.0004)
0.0003)
Clear)granularity)at)1024)
words)or)4096)bytes)
(1)VM)Page))
1)
1)
0.8)
0.0002)
0)
20,000) 40,000) 60,000) 80,000) 100,000) 120,000) 140,000)
0.6)
0.5)
Private)TLB)
0.4)
Actual)L2)
Actual)TLB)
L1)Line)Size)
Actual)L1)
0.2)
platform-aware compilation environment
0)
4,000)
40,000)
0)
1)
platform-aware compilation environment
400,000)
10)
Stride)Test)for)Granularity,)1)MB)array))
(Shows)effects)at)32KB)&)64)KB)levels))
Array)Size)
Intel)T9600) 4,000,000)
Log)Scale)
100)
1000)
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
10000)
31)
Measuring)Memory)Hierarchy)Parameters)
New)Strategy:))Now)that)we)have)fairly)clean)data,)learn)to)read)the)data)
0.025)
•  For)level)size:)find)points)that)we)suspect)are)levels)&)zoom)on)on)them)
2.5)
Closer)look)at)1)MB)
–  Three)tests:))log)test,)inflecUon)test,)and)a)concavity)test)
0.02) –  In)a)typical)run)on)the)T9600,)five)suspect)points)appear)in)the)block)cyclic)data)
2)
0.015)
Real,)if)small,))transiUon)(TLB))
1.5)
Seconds)
0.01)
0.005)
1)
0)
Actual)L2)
0)
500,000)
1,000,000)
0.5)
1,500,000)
2,000,000)
Private)TLB)
2,500,000)
Actual)TLB)
Actual)L1)
platform-aware compilation environment
0)
4,000)
platform-aware compilation environment
40,000)
400,000)
4,000,000)
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
Array)Size)
Log)Scale)
32)
Measuring)Memory)Hierarchy)Parameters)
New)Strategy:))Now)that)we)have)fairly)clean)data,)learn)to)read)the)data)
• 0.05)For)level)size:)find)points)that)we)suspect)are)levels)&)zoom)on)on)them)
2.5)
Closer)look)at)2)MB)
0.045)
–  Three)tests:))log)test,)inflecUon)test,)and)a)concavity)test)
?) To)be)useful,)the)methodology)
must)be)robust)against)anomalies)
–  In)a)typical)run)on)the)T9600,)five)suspect)points)appear)in)the)block)cyclic)data)
0.04)
2)
Anomaly)
0.035)
0.025)
Seconds)
1.5)
0.03)
1)
0.02)
1,000,000)
2,000,000)
3,000,000)
0.5)
4,000,000)
Private)TLB)
Actual)L2)
5,000,000)
Actual)TLB)
Actual)L1)
platform-aware compilation environment
0)
4,000)
platform-aware compilation environment
40,000)
400,000)
4,000,000)
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
Array)Size)
Log)Scale)
33)
Measuring)Memory)Hierarchy)Parameters)
New)Strategy:))Now)that)we)have)fairly)clean)data,)learn)to)read)the)data)
0.35)
Private)TLB)
•  For)level)size:)find)points)that)we)suspect)are)levels)&)zoom)on)on)them)
2.5)
Closer)look)at)6)MB)
0.3)
–  Three)tests:))log)test,)inflecUon)test,)and)a)concavity)test)
–  In)a)typical)run)on)the)T9600,)five)suspect)points)appear)in)the)block)cyclic)data)
0.25)
2)
InflecUon)test)
finds)this)point)
0.2)
Log)test)finds)
1.5)
this)point)
0.1)
0.05)
Seconds)
0.15)
Real)cache)transiUon)
Shape)indicates)shared)
with)other)uses)(other)
core,)code)cache))
1)
0)
2,000,000)
4,000,000)
6,000,000)
Private)TLB)
0.5)
Actual)L2)
8,000,000)
Actual)TLB)
Actual)L1)
platform-aware compilation environment
0)
4,000)
platform-aware compilation environment
40,000)
400,000)
4,000,000)
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
Array)Size)
Log)Scale)
34)
Measuring)Memory)Hierarchy)Parameters)
New)Strategy:))Now)that)we)have)fairly)clean)data,)learn)to)read)the)data)
•  For)level)size:)find)points)that)we)suspect)are)levels)&)zoom)in)on)them)
–  Three)tests:))log)test,)inflecUon)test,)and)a)concavity)test)
–  In)a)typical)run)on)the)T9600,)five)suspect)points)appear)in)the)block)cyclic)data)
•  Run)both)straight)permutaUon)and)block)cyclic)permutaUon)
–  Apply)same)analysis)to)each)and)compare)results)
–  Consensus)points)are,)in)our)experience,)the)real)levels)in)the)hierarchy)
•  Sod)transiUons,)such)as)the)Core)2)Duo)L2)cache)are)real)
“EffecUve”)comes)into)play)
with)shared)resources)
–  We)will)report)a)range)of)numbers)
–  Those)numbers)will)depend)on)code)cache)acUvity)&)other)cores’)acUviUes)
•  We)are)launching)a)learning)subproject)to)develop)good)esUmates)for)
shared)resources)
platform-aware compilation environment
platform-aware compilation environment
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
35)
Measuring)Memory)Hierarchy)Parameters)
What)about)the)rest)of)the)numbers?)
•  AssociaUvity)is)mostly)straighhorward,)given)size)
AssociaUvity)may)provide)
another)check)on)level)sizes)
–  Concerns)about)raUo)of)cache)to)main)memory)
–  Same)associaUvity)at)different)levels)can)be)hard)to)discern)
platform-aware compilation environment
platform-aware compilation environment
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
36)
Measuring)Memory)Hierarchy)Parameters)
What)about)the)rest)of)the)numbers?)
•  AssociaUvity)is)mostly)straighhorward,)given)size)
–  Some)number)theory)involved)in)isolaUng)effects)to)a)given)level)
–  Uniform)associaUvity)at)different)levels)can)be)hard)to)discern)
•  Finding)granularity)
resembles)finding)
level)sizes)
1.800)
L1)Line)Size)Data)
Intel)T9600)Processor)
MulUuser)test,)Power)of)2)Search)
1.600)
1.400)
1.200)
Time)
1.000)
Change)in)Time)
find)inflecUons))
0.800)
"Slope)(dLt/dLstride)")
Seconds)
•  Use)same)analysis)
•  Compute)slopes)&)
"Percent)Change")
0.600)
0.400)
0.200)
0.000)
platform-aware compilation environment
L0.200)
L0.400)
platform-aware compilation environment
1)
10)
100)
Access)Stride)(words))
Log)Scale)
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
1000)
Log)spacing)in)Ume)
creates)anomaly)
37)
Measuring)Behavior)of)MulUplier)
Need)to)know)raUo)of)mulUply)cost)to)add)cost,)number)of)mulUplies)that)can)
)issue)at)each)cycle,)and)presence)of)mulUplyLadd)))))(Scheduling,)unrollLandLjam))
The)Strategy)
•  Generate)independent)streams)of)
operaUons)
•  Use)mulUple)mulUply)streams)for)issue)slots)
•  Change)raUo)of)operaUons)to)measure)raUo)
of)operaUon)costs))
•  Careful)mixing)can)measure)ability)to)
overlap)add)&)mulUply)
Stream)1)
Stream)2)
a2))=)a0)*)a1)
b2)=)b0)+)b1)
a3))=)a1)*)a2)
b3)=)b1)+)b2)
a4))=)a2)*)a3)
b4)=)b2)+)b3)
a5))=)a4)*)a3)
b5)=)b4)+)b3)
a6))=)…)
b6)=)…)
The)Challenges)
•  Compilers)display)sensiUvity)to)naming)regimes)within)straightLline)code)
• platform-aware
(Some))compilers)have)problems)with)long)blocks)of)code))
compilation environment
•  Hardware)Umings)can)be)valueLsensiUve)
Conceptually)clean)microbenchmark)
Myriad)details)to)get)right)
platform-aware compilation environment
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
38)
Measuring)Code)Cache)Size)
AMD Opteron 275 2.2 GHz
40
35
The)Strategy)
•  Hold)number)of)operaUons)executed)constant)while)increasing)the)size)of)
the)execuUng)code))
•  Execute)some)benchmark)funcUon)k)Umes)
30
Time (s)
25
20
15
10
–  Use)funcUon)pointers)in)C)to)call)different)(adjacent))copies)of)the)code)
–  FuncUon)must)perform)lots)of)computaUon)on)a)small)amount)of)data)
5
0
1K
4K
16K
64K
256K
Code Size (bytes)
1M
4M
The)Lessons)&)the)Challenges)
•  Must)build)blocks)that)can)execute)at)prefetch)speed)or)beaer)
–  Otherwise,)the)iLcache)does)its)job)and)you)get)flat)response)
•  Must)overwhelm)prefetch)&)branch)predicUon)hardware)
–  Shuffle)the)instrucUon)pointers)
•  Need)to)generate)custom)benchmark)for)each)processor)(today))
platform-aware compilation environment
–  Need)to)know)number)and)type)of)funcUonal)units)
platform-aware compilation environment
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
39)
Summary)&)Conclusions)
I)focused)on)the)Resource)CharacterizaUon)problems)
•  PACE)has)many)other)difficult)technical)challenges)
•  Remember,)the)overarching)goal)is)to)build)an)opUmizer)that)retargets)itself)
Final)Thoughts)
•  We)are)eight)months)into)a)54)month)project)
•  We)are)working)on)a)broad)agenda)
–  I)did)not)address)the)Compiler,)RunUme,)or)Machine)Learning)subprojects)
–  You)will)likely)hear)from)them)in)future)years)
•  We)are)having)a)great)deal)of)fun)and)making)a)great)deal)of)progress)
Thank)you)for)your)aaenUon)
platform-aware compilation environment
platform-aware compilation environment
Addressing)Long)Term)Challenges)in)Compiler)ConstrucUon)
40)
Download