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)