IA039: Architektura superpočítačů a náročné výpočty Profiling and Benchmarking Luděk Matýska Fakulta informatiky MU Jaro 2016 Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 1/38 Měření času výpočtu • Optimalizace není možní bez znalosti, co optimalizovat • Potřebujeme znát údaje o běhu programu • Čas výpočtu celého programu: příkaz time • Čas výpočtu částí programů: profilování • Srovnání systémů: benchmarking Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 2 / 38 Příkaz time • User time • Čas procesoru strávený uživatelskými procesy • System time • Čas procesoru strávený obsluhou funkcí jádra 9 Elapsed time • Celkový čas výpočtu CPU time = user time + system time Luděk Matýska (Fl MU) Profiling and Benchmarking Příkaz time - další údaje • Dostupné pro time v prostředí C shellu • Sdílený paměťový prostor • Privátní (unshared) paměťový prostor • Počet block input operací • Počet block output operací • Počet page faultů • Počet swapů Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 4 / 38 Profilovaní • Snaha získat informace o částech programu • Důraz na dynamické chovaní • statická analýza je součástí softwarového inženýrství • Profilování ukazuje výsledek interakce mezi programem a výpočetním systémem, na kterým běží • Doba strávená v jednotlivých blocích • Doba strávená jednotlivými příkazy • Počet opakování bloků/příkazů • Primární pozornost zaměřena na procedury « Profil: graf • Osa X: jednotlivé procedury • Osa Y: Doba výpočtu Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 5 / 38 Základní principy • Používá softwarové nástroje pro sběr dat nezbytných na konstrukc profilu • Zpravidla podpora ze strany operačního systému • přístup k informacím, které má k dispozici pouze kernel • Příklady běžných nástrojů pro profilování • gprof, oprofile, valgrind, pin • Profile je sbírán při běhu programu - dynamický profil • Analýza profilových dat se nazývá Performance Engineering Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 Typy sbíraných dat • Graf volání (call graph) na úrovni procedur a funkcí • Graf volání na úrovni základních bloků • Výkon paměti • Události související s architekturou, např. chybné předpovědi skok výjimky, výkon vyrovnávací paměti (hit/miss), .. . • Hodnoty výkonnostních čitačů (performance counters) Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 Typy profilů o Ostrý profil • Píky odpovídají dominujícícm blokům • Numerické aplikace, technické výpočty s maticemi atd. • Snadno" optimalizovatelné • Plochý profil o Program tráví čas rovnoměrně ve všech procedurách • Zpravidla databáze, informační systémy, systémové programy • Obtížně optimalizovatelné o Amdahlovo pravidlo platí i zde Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 8 / 38 Profilery a Nástroje pro tvorbu profilů • Samozřejmě možné i „ručně" o Procedurově orientované • gprof 9 Blokově (řádkově) orientované • pixie • tcov • Iprof Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 9 / 38 Použití profilerů o Dvě fáze: • Instrumentovaný běh programu (s nebo bez opětného překladu) 9 Vlastní zpráva o výsledcích (report) • Přístup ke zdrojovému kódu • Znalost struktury programu Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 Procedurově orientované profilery • Typický představitel: gprof • Instrumentace • Nový překlad programu • Zpravidla dostupný přes přepínač překladače -pg • Výpočet • Instrumentovaný program vytváří záznam o výpočtu • Soubor gmon.out • Vytvoření zprávy • Vlastní běh programu gprof Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 11 / 38 Typy profilů SpeedShop jako příklad • usertime - uživatelský čas • [f]pcsamp[x] - vzorkování • ideal (pixie) - blokový profiler • fpe - pohyblivá řádová čárka • proLhwc - hardwarové čitače f gLhwc, [f]cy_hwc, [f]ic_hwc, [f]isc_hwc, [f]dc_hwc, [f]dsc_hwc, [f]tlb_hwc, [f]gfp_hwc • Framework PAPI Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 12 / 38 Přesnost měření ereni casu • Absolutní čas vstupu a výstupu procedury • Vnořené procedury • Krátké procedury • Sběr hodnoty citace instrukcí v pravidelných intervalech • Přesnost výsledku závislá na vzorkování (sampling interval) Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 13 / 38 Blokově orientované profilery 9 Poskytují informace o průchodech základními bloky • Počet průchodů každým příkazem (řádkem) • Počet cyklů procesorů strávený v každém příkazu Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 14 / 38 Pril klad 1 2 3 4 5 6 7 8 9 10 11 12 static void fooO, bar(), 13 bazO; 14 mainO 15 { int 1; 16 for (1=0; 1 <1000; 1++) 17 { if ( 1 == 2*(1/2) ) 18 fooO; 19 barO; 20 baz(); 21 } 22 } 23 24 void fooO { int j ; ; for (j=0; } void bar() { int j; for (j=0; } void baz() { int j; for (j=0; } j<200; j++) j<200; j++) j<300; j++) Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 15 / 38 Usertime usertime: index °/0Samples self descendents total name [1] 100.0°/0 0.00 0.03 1 main [2] 100.0% 0.03 0.00 1 bar Profiling and Benchmarking Jaro 2016 16 / 38 Vzorkování pcsamp: samples 2 1 1 fpcsamp: samples 18 12 12 time(°/0) 0.02s( 50.0) 0.01s( 25.0) 0.01s( 25.0) cum time(°/0) procedure 0.02s( 50.0) foo 0.03s( 75.0) bar 0.04s(100.0) baz time(°/o) cum time(°/0) procedure 0.02s( 41.9) 0.02s( 41.9) baz 0.01s( 27.9) 0.03s( 69.8) bar 0.01s( 27.9) 0.04s( 97.7) foo Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 Blokový přístup ideal: cycles (7o) 3918000(49.63) 2618000(33.16) 1309000(16.58) 47024( 0.60) cum A sees instrns 49.63 0.03 2111000 82.80 0.02 1411000 99.38 0.01 705500 99.98 0.00 25017 alls procedure 1000 baz 1000 bar 500 foo 1 main Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 18 / 38 Blokový přístup II ideal -h: cycles(%) cum % 3907858 (49. 507.) 49 . 50% 2607858 (33. 04%) 82 . 54% 1303930 (16. 52%) 99 . 06% 14000 ( o. 18%) 99 . 24% 13009 ( o. 16%) 99 . 40% 8000 ( o. 10%) 99 . 50% 8000 ( o. 10%) 99 . 60% 7000 ( o. 09%) 99 . 69% 7000 ( o. 09%) 99 . 78% 4000 ( o. 05%) 99 . 83% 3500 ( o. 04%) 99 . 88% 3142 ( o. 04%) 99 . 92% 3142 ( o. 04%) 99 . 96% 1570 ( 0. 09'/.) 99 . 987. Luděk Matýska (Fl MU) Profilir times line procedure 300000 23 baz 200000 19 bar 100000 15 f 00 1000 6 main 1000 5 main 1000 9 main 1000 8 main 1000 24 baz 1000 20 bar 500 7 main 500 16 f 00 1000 18 bar 1000 22 baz 500 14 f on g and Benchmarking Blokové (tcov) tcov: 1 -> for (1=0; 1 <1000; 1++) 1000 -> { if ( 1 == 2*(1/2) ) 500 -> foo(); 1000 -> barO ; baz(); void fooO 500 -> for (j=0; j<200; j++); void bar() 1000 -> for (j=0; j<200; j++); void baz() 1000 -> for (j=0; j<300; ; Blokové - pokračování Top 10 Blocks Line Count 6 1000 8 1000 19 1000 23 1000 7 500 15 500 5 1 7 Basic blocks in this file 7 Basic blocks executed 100.00 Percent of the file executed 5001 Total basic block executions 714.43 Average executions per basic block Ludek Matyska (Fl MU) Profiling and Benchmarking Jaro 2016 21 / 38 Profiling viz též http://www.site.uottawa.ca/~mbolic/elg6158/Subhasis_ profiling.pdf Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 22 / 38 Zjišťování výkonu - benchmarking • Snaha o porovnaní systému 9 Hardware i software společně • Neexistuje žádné „zázračné" řešení • Základní přístupy • Průmyslové („profesionální") benchmarky • Porovnatelnost, nezávislost na výrobcích • „Privátní" benchmarky • Konkrétní (specifické) požadavky Luděk Matýska (Fl MU) Profiling and Benchmarking Mysteriózní MIPS a MFLOPS • Srovnání na základě počtu instrukcích vykonaných za sekundu • MIPS - milion celočíselných instrukcí za sekundu • MFLOPS - milion operací s pohyblivou řádovou čárkou za sekundu • Problémy • Jaké instrukce? • V jaké posloupnosti? • Umělé, nevypovídající Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 24 / 38 Celočíslené benchmarky • VAX MIPS 9 Dhrystones Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 25 / 38 Benchmarky s pohyblivou řádovou čárkou • Whetstone (umělý mix, skalární) 9 Linpack (daxpy, vektorizace) • 100*100 • 1000*1000 Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 26 / 38 SPEC benchmarks a Nezávislá organizace • Standard Performace Evaluation Corporation • Standardizované benchmarky pro různé architektu o Vychází z tzv. kernel kódů • Celý nebo část existujícího programu o Dostupné ve zdrojovém kódů • Je možno doladit" Luděk Matýska (Fl MU) Profiling and Benchmarking SPEC skupiny Open Systems Group (OSG) High Performance Group (HPG Graphics Performance Characterization Group (GPC) Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 28 / 38 SPEC OSG podskupiny • CPU • SPECmarks a CPU benchmarks • JAVA • JVM98, JBB2005, Java client a server benchmarky • MAIL • SPECmail2001 • SFS • Systémy souborů (SFS97) • WEB • WEB99, WEB99_SSL, WEB2005 Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 29 / 38 CPU2006 • Aktuální CPU benchmark • Dělení • ClNT2006 - celočíselné výpočty • CFP2006 - výpočty s pohyblivou řádovou čárkou Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 30 / 38 CINT2000 • Jednotlivé součásti 164.gzip Compression 175.vpr FPGA Circuit Placement and Routing 176.gcc C Programming Language Compiler 181.mcf Combinatorial Optimization 186.crafty Game Playing: Chess 197.parser Word Processing 252.eon Computer Visualization 253.perlbmk PERL Programming Language 254.gap Group Theory, Interpreter 255.vortex Object-oriented Database 256.bzip2 Compression 300.twolf Place and Route Simulator Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 31 / 38 CINT2006 • Jednotlivé součásti 400.perlbench C PERL Programming Language 401.bzip2 C Compression 403. gcc C C Compiler 429.mcf C Combinatorial Optimization 445.gobmk C Artificial Intelligence: go 456.hmmer C Search Gene Sequence 458.sjeng C Artificial Intelligence: chess 462.libquantum C Physics: Quantum Computing 464.h264ref C Video Compression 471.omnetpp C+4 Discrete Event Simulation 473.astar Path-finding Algorithms 483.xalancbmk C+4 - XML Processing Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 CFP2000 • Jednotlivé součásti 168.wupwise 171. swim 172. mgrid 173. applu 177. mesa 178. galgel 179. art 183.equake 187. facerec 188. ammp 189.lucas 191.fma3d 200.sixtrack 301.apsi Physics / Quantum Chromodynamics Shallow Water Modeling Multi-grid Solver: 3D Potential Field Parabolic / Elliptic Partial Differential Equations 3-D Graphics Library Computational Fluid Dynamics Image Recognition / Neural Networks Seismic Wave Propagation Simulation Image Processing: Face Recognition Computational Chemistry Number Theory / Primality Testing Finite-element Crash Simulation High Energy Nuclear Physics Accelerator Design Meteorology: Pollutant Distribution Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 33 /3 CFP2006 410.bwaves Fortran Fluid Dynamics 416.gamess Fortran Quantum Chemistry 433.mile C Physics: Quantum Chromodynamics 434.zeusmp Fortran Physics/CFD 435.gromacs Q Fortran Biochemistry/Molecular Dynamics 436.cactusADM Q Fortran Physics/General Relativity 437.leslie3d Fortran Fluid Dynamics 444.namd CH Biology/Molecular Dynamics 447.dealll CH Finite Element Analysis 450.soplex CH Linear Programming, Optimization 453.povray CH Image Ray-tracing 454.calculix c/ Fortran Structural Mechanics 459.GemsFDTD Fortran Computational Electromagnetics 465.tonto Fortran Quantum Chemistry 470.lbm C Fluid Dynamics 481-wrf c/ Fortran Weather Prediction Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 34 / 38 Transakční benchmarky • Výkon databází • TPC-A • Testuje interakci s ATM (6 požadavků za minutu) • 1TPS znamená, že 10 ATM současně vydá požadavek a výsledek dostane do 2 s (s 90% účinností) • TPC-B • Jako TPC-A, ale testuje se přímo, ne přes (pomalou) síť • TPC-C • Komplexní, transakce jsou objednávky, platby, dotazy s jistým procentem záměrných chyb vyžadujících automatickou korekci Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 Síťové benchmarky 9 netperf • iperf • End to end měření • Pozor na to, co skutečně v síti měříme Vlastní benchmarky Specifické (konkrétní) požadavky Důležité parametry: • Co testovat • Jak dlouho testovat • Požadavky na velikost paměti Typy benchmarků • Jednoduchý proud (opakování) Propustnost (benchmark stone wall) 9 Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 37 / 38 Kontroly • Nezbytná součást používání benchmarků • Měříme opravdu to, co chceme? • Možné příčiny ovlivnění • Použitá optimalizace • Velikost paměti • Přítomnost jiných procesů • Co je třeba explicitně kontrolovat • CPU čas a čas nástěných hodin • Výsledky! « Srovnání se ,,známým" standardem Luděk Matýska (Fl MU) Profiling and Benchmarking Jaro 2016 38 / 38