Predic've ¡Modeling ¡ ¡ in ¡a ¡Polyhedral ¡Op'miza'on ¡Space ¡ Eunjung ¡“EJ” ¡Park 1 , ¡Louis-‑Noël ¡Pouchet 2 , ¡John ¡Cavazos 1 , ¡ ¡ Albert ¡Cohen 3 , ¡and ¡P. ¡Sadayappan 2 ¡ ¡ 1 ¡ University ¡of ¡Delaware ¡ 2 ¡The ¡Ohio ¡State ¡University ¡ 3 ¡ALCHEMY ¡group, ¡INRIA ¡Saclay ¡-‑ ¡Île-‑de-‑France ¡ ¡ April ¡5 th , ¡2011 ¡ IEEE/ACM ¡Symposium ¡on ¡Code ¡Genera'on ¡and ¡Op'miza'on ¡ Chamonix, ¡France ¡
4/7/11 ¡ Predic've ¡Modeling ¡in ¡a ¡Polyhedral ¡Op'miza'on ¡Space ¡ 1 ¡ Do ¡you ¡want ¡good ¡performance? ¡ • Op'mizing ¡loops ¡is ¡crucial! ¡ • Difficulty ¡on ¡finding ¡good ¡loop ¡op'miza'ons ¡ – Complex ¡interplay ¡between ¡hardware ¡resources ¡ – Conflicts ¡between ¡op'miza'on ¡strategies ¡ – Large ¡compiler ¡op'miza'on ¡space ¡ • Any ¡Solu'ons? ¡ – Using ¡itera've ¡compila'on ¡ – Using ¡polyhedral ¡framework ¡
4/7/11 ¡ Predic've ¡Modeling ¡in ¡a ¡Polyhedral ¡Op'miza'on ¡Space ¡ 2 ¡ Why ¡polyhedral ¡framework? ¡ • Advantages ¡over ¡standard ¡compiler ¡framework ¡ – Good ¡expressiveness ¡ – Complex ¡op'miza'on ¡sequences ¡ – Loop ¡'ling ¡of ¡imperfectly ¡nested ¡loop ¡ • Very ¡large ¡op'miza'on ¡space ¡ Our ¡Solu?on ¡ Let’s ¡take ¡advantages ¡of ¡ Polyhedral ¡Framework ¡ and ¡ Itera?ve ¡Compila?on! ¡
4/7/11 ¡ Predic've ¡Modeling ¡in ¡a ¡Polyhedral ¡Op'miza'on ¡Space ¡ 3 ¡ Contribu?ons ¡of ¡this ¡paper ¡ • Power ¡of ¡three ¡approaches ¡ – Expressiveness ¡from ¡polyhedral ¡framework ¡ – Performance ¡predic'on ¡by ¡machine ¡learning ¡ – Itera've ¡compila'on ¡ • Build ¡predic'on ¡model ¡for ¡polyhedral ¡op'miza'on ¡ primi'ves ¡ • Reduce ¡number ¡of ¡evalua'ons, ¡achieve ¡good ¡ performance ¡ ¡
4/7/11 ¡ Predic've ¡Modeling ¡in ¡a ¡Polyhedral ¡Op'miza'on ¡Space ¡ 4 ¡ Polyhedral ¡Compiler ¡Framework ¡ Input ¡Program ¡ PoCC : ¡source-‑to-‑source ¡itera've ¡and ¡ ¡ model-‑driven ¡polyhedral ¡compiler ¡ Extract ¡ Build ¡Legal ¡ Source ¡Code ¡ Polyhedral ¡ Transforma'ons ¡ Genera'on ¡ Representa'on ¡ Transformed ¡Program ¡by ¡ Polyhedral ¡Op'miza'ons ¡
4/7/11 ¡ Predic've ¡Modeling ¡in ¡a ¡Polyhedral ¡Op'miza'on ¡Space ¡ 5 ¡ Polyhedral ¡Op?miza?on ¡Space ¡ Encode ¡in ¡fixed ¡length ¡vector ¡ T ¡ Op'miza'ons ¡Handled ¡in ¡each ¡step ¡ -‑ ¡Fusion/Distribu'on/Code ¡Mo'on ¡ Fusion/Distribu'on ¡ Compute ¡a ¡schedule ¡(Pluto) ¡ -‑ ¡Auto ¡Paralleliza'on, ¡Tileability ¡ -‑ ¡Vectoriza'on ¡ Modify ¡schedule ¡ Individually ¡Tile ¡Loops ¡ -‑ ¡Tiling ¡ 864 ¡possible ¡ points ¡ Process ¡all ¡other ¡op'miza'ons ¡ -‑ ¡OpenMP ¡Pragma, ¡Unrolling ¡ Final ¡Search ¡ Space ¡
4/7/11 ¡ Predic've ¡Modeling ¡in ¡a ¡Polyhedral ¡Op'miza'on ¡Space ¡ 6 ¡ Finding ¡Best ¡Speedup ¡is ¡Hard ¡ 14 Actual Low ¡density ¡of ¡best ¡points ¡in ¡actual ¡curve ¡ Performance ¡Improvement ¡over ¡Baseline ¡ 12 10 Performance Imp. 8 6 4 2 1 ¡ 0 Op'miza'on ¡sequences ¡applied ¡(sorted ¡by ¡actual ¡speedup) ¡ 0 50 100 150 200 250 300 350
4/7/11 ¡ Predic've ¡Modeling ¡in ¡a ¡Polyhedral ¡Op'miza'on ¡Space ¡ 7 ¡ Predic?on ¡Model ¡ • Model ¡Descrip'on ¡ • Building ¡Model ¡ – Model ¡Construc'on ¡ – Model ¡Usage ¡
8 ¡ 4/7/11 ¡ Predic've ¡Modeling ¡in ¡a ¡Polyhedral ¡Op'miza'on ¡Space ¡ Speedup ¡Predic?on ¡Model ¡ Performance Counter � Characteristics � Optimizations � … … Predicted speedup of optimizations over a baseline �
4/7/11 ¡ Predic've ¡Modeling ¡in ¡a ¡Polyhedral ¡Op'miza'on ¡Space ¡ 9 ¡ Building ¡Model ¡ • Leave-‑one-‑out ¡cross ¡valida'on ¡ for ¡i-‑th ¡program ¡where ¡i=1 ¡to ¡N ¡ do ¡ ¡ ¡Train ¡a ¡model ¡on ¡N-‑1 ¡programs ¡excluding ¡i-‑th ¡program ¡ ¡Test ¡the ¡model ¡on ¡the ¡i-‑th ¡program ¡lek ¡out ¡ ¡ done ¡
4/7/11 ¡ Predic've ¡Modeling ¡in ¡a ¡Polyhedral ¡Op'miza'on ¡Space ¡ 10 ¡ Model ¡Construc?on ¡ • Collect ¡dynamic ¡behavior ¡for ¡a ¡program ¡ Backend ¡ Compiler ¡ 1 ¡Program ¡ ICC ¡ Performance ¡Counters ¡ ¡ for ¡the ¡program ¡ … ¡ Underlying ¡Architecture ¡ Performance ¡Counters ¡include ¡total ¡number ¡of ¡ -‑ accesses ¡and ¡misses ¡in ¡all ¡levels ¡of ¡cache ¡and ¡TLB ¡ -‑ stall ¡cycles ¡ -‑ vector ¡instruc'ons ¡ -‑ issued ¡instruc'ons ¡
4/7/11 ¡ Predic've ¡Modeling ¡in ¡a ¡Polyhedral ¡Op'miza'on ¡Space ¡ 11 ¡ Model ¡Construc?on ¡ • Now ¡do ¡this ¡for ¡N-‑1 ¡programs ¡ … ¡ … ¡ Backend ¡ … ¡ Compiler ¡ … ¡ ICC ¡ Performance ¡Counters ¡ ¡ for ¡N-‑1 ¡programs ¡ N-‑1 ¡Programs ¡ … ¡ Underlying ¡Architecture ¡
4/7/11 ¡ Predic've ¡Modeling ¡in ¡a ¡Polyhedral ¡Op'miza'on ¡Space ¡ 12 ¡ Model ¡Construc?on ¡ • Run ¡transformed ¡programs, ¡and ¡get ¡speedups ¡ Baseline ¡(-‑fast) ¡ Backend ¡ Compiler ¡ … ¡ ICC ¡ One ¡Program ¡ … ¡ … ¡ Speedup ¡over ¡ Primi've ¡Sequences( T ) ¡ baseline ¡ Primi've ¡sequences ¡and ¡ their ¡speedup ¡over ¡baseline ¡ Polyhedral ¡ Compiler ¡ Transformed ¡Polyhedral ¡Programs ¡ ¡ for ¡the ¡one ¡Program ¡
4/7/11 ¡ Predic've ¡Modeling ¡in ¡a ¡Polyhedral ¡Op'miza'on ¡Space ¡ 13 ¡ Model ¡Construc?on ¡ • Now ¡do ¡this ¡for ¡N-‑1 ¡programs ¡ … ¡ Baseline ¡(-‑fast) ¡ … ¡ Backend ¡ Compiler ¡ … ¡ ICC ¡ … ¡ … ¡ … ¡ … ¡ N-‑1 ¡Programs ¡ Primi've ¡sequences ¡(T) ¡ Speedup ¡over ¡ … ¡ baseline ¡ Primi've ¡sequences ¡and ¡ Polyhedral ¡ their ¡speedup ¡over ¡baseline ¡ Compiler ¡ Transformed ¡Programs ¡ ¡ from ¡each ¡of ¡N-‑1 ¡Programs ¡
4/7/11 ¡ Predic've ¡Modeling ¡in ¡a ¡Polyhedral ¡Op'miza'on ¡Space ¡ 14 ¡ Model ¡Construc?on ¡ Primi've ¡sequences ¡and ¡ Performance ¡Counters ¡ ¡ their ¡speedup ¡over ¡baseline ¡ for ¡a ¡program ¡ … ¡ … ¡ … ¡ Linear ¡Regression ¡/ ¡Support ¡Vector ¡Machine ¡(SVM) ¡ … … Generated ¡model ¡ ¡ for ¡a ¡given ¡machine ¡
4/7/11 ¡ Predic've ¡Modeling ¡in ¡a ¡Polyhedral ¡Op'miza'on ¡Space ¡ 15 ¡ Model ¡Construc?on ¡ Primi've ¡sequences ¡and ¡their ¡speedup ¡ Performance ¡Counters ¡ ¡ over ¡baseline ¡for ¡N-‑1 ¡programs ¡ for ¡N-‑1 ¡programs ¡ … ¡ … ¡ … ¡ … ¡ … ¡ … ¡ … ¡ … ¡ … ¡ Linear ¡Regression ¡/ ¡Support ¡Vector ¡Machine ¡(SVM) ¡ … … Generated ¡model ¡ ¡ for ¡a ¡given ¡machine ¡
4/7/11 ¡ Predic've ¡Modeling ¡in ¡a ¡Polyhedral ¡Op'miza'on ¡Space ¡ 16 ¡ Using ¡Model ¡ Primi've ¡Sequences ¡ … ¡ Performance ¡ ¡ Counters ¡ ¡ Backend ¡ … ¡ Compiler ¡ … ¡ Nth ¡Program ¡ ICC ¡-‑fast ¡ (one ¡lek ¡out) ¡ … … Generated ¡model ¡ ¡ for ¡a ¡given ¡machine ¡ We ¡can ¡use ¡predicted ¡speedups ¡in ¡two ¡ways ¡ Predicted ¡speedup ¡for ¡ -‑ Non-‑itera've ¡Fashion ¡ each ¡sequences ¡ -‑ Itera've ¡Fashion ¡
4/7/11 ¡ Predic've ¡Modeling ¡in ¡a ¡Polyhedral ¡Op'miza'on ¡Space ¡ 17 ¡ Experimental ¡Configura?on ¡ • Hardware ¡configura'on ¡ – Nehalem ¡ • Intel ¡Xeon ¡E5620 ¡2.4GHz, ¡2 ¡sockets ¡4 ¡cores, ¡16 ¡H/W ¡threads, ¡L3 ¡12MB ¡ – R900/Dunnington ¡ • Intel ¡Xeon ¡E7450 ¡2.4GHz, ¡4 ¡sockets ¡6 ¡cores, ¡24 ¡H/W ¡threads, ¡L3 ¡12MB ¡ • Sokware ¡Configura'on ¡ – Backend ¡compiler: ¡ICC ¡ ¡ – Baseline: ¡ICC ¡with ¡–fast, ¡single ¡threaded ¡(no ¡auto-‑par) ¡ – Machine ¡learning ¡framework: ¡Weka ¡v3.6.2 ¡ • Linear ¡Regression/SVM ¡(SMOReg) ¡ – Benchmark: ¡PolyBench ¡2.0 ¡(28 ¡different ¡kernels ¡and ¡applica'ons) ¡
Recommend
More recommend