FAKULTA INFORMATIKY Masarykova univerzita IA039: Architektura superpočítačů a náročné výpočty Profiling and Benchmarking Luděk Matýska Jaro 2020 Luděk Matýska • Profiling and Benchmarking • Jaro 2020 1/43 FAKULTA INFORMATIKY Masarykova univerzita 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: príkaz time ■ Čas výpočtu částí programů: profilování ■ Srovnání systémů: benchmarking Luděk Matýska • Profiling and Benchmarking • Jaro 2020 2/43 FAKULTA INFORMATIKY Masarykova univerzita Příkaz time ■ User time v ■ Cas procesoru strávený uživatelskými procesy ■ System time v ■ Cas procesoru strávený obsluhou funkcí jádra ■ Elapsed time ■ Celkový čas výpočtu CPU time = user time + system time Luděk Matýska • Profiling and Benchmarking • Jaro 2020 FAKULTA INFORMATIKY Masarykova univerzita Příkaz time - další údaje ■ Dostupné pro time v prostředí C sheUu ■ 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 • Profiling and Benchmarking • Jaro 2020 4/43 FAKULTA INFORMATIKY I Masarykova univerzita Profilování ■ Snaha získat informace o částech programu ■ Důraz na dynamické chování ■ 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 • Profiling and Benchmarking • Jaro 2020 5/43 FAKULTA INFORMATIKY I Masarykova univerzita Základní princípy ■ Používá softwarové nástroje pro sběr dat nezbytných na konstrukci 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 • Profiling and Benchmarking • Jaro 2020 6/43 FAKULTA INFORMATIKY Masarykova univerzita Typy sbíraných dat ■ Graf volání (caU graph) na úrovni procedur a funkcí ■ Graf volaní na úrovni základních bloků ■ Výkon paměti ■ Udalosti související s architekturou, např. chybné predpovedi skoků,výjimky,výkon vyrovnávací paměti (hit/miss),... ■ Hodnoty výkonnostních čitačů (performance counters) Luděk Matýska • Profiling and Benchmarking • Jaro 2020 7/43 FAKULTA INFORMATIKY Masarykova univerzita Typy profilů ■ Ostrý profil ■ Píky odpovídají dominujícícm blokům ■ Numerické aplikace, technické výpočty s maticemi atd. ■ „Snadno" optimalizovatelné ■ Plochý profil ■ Program tráví čas rovnoměrně ve všech procedurách ■ Zpravidla databáze, informační systémy, systémové programy ■ Obtížně optimalizovatelné ■ Amdahlovo pravidlo platí i zde Luděk Matýska • Profiling and Benchmarking • Jaro 2020 8/43 FAKULTA INFORMATIKY Masarykova univerzita Profilery ■ Nástroje pro tvorbu profilů ■ Samozřejmě možné i „ručně ■ Procedurově orientované ■ gprof ■ Blokově (řádkově) orientované ■ pixie ■ tcov ■ Lprof Luděk Matýska • Profiling and Benchmarking • Jaro 2020 9/43 FAKULTA INFORMATIKY Masarykova univerzita Použití profile r u ■ Dvě fáze: ■ Instrumentovaný běh programu (s nebo bez opětného překladu) ■ Vlastní zpráva o výsledcích (report) ■ Přístup ke zdrojovému kódu ■ Znalost struktury programu Luděk Matýska • Profiling and Benchmarking • Jaro 2020 10/43 FAKULTA INFORMATIKY I Masarykova univerzita Procedurově orientované profilery ■ Typický představitel: gprof ■ Instrumentace ■ Nový preklad 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 • Profiling and Benchmarking • Jaro 2020 11/43 FAKULTA INFORMATIKY I Masarykova univerzita Typy profilů SpeedShop jako příklad ■ usertime - uživatelský čas ■ [f] pesa m p [x] - vzorkovaní ■ ideal (pixie) - blokový profiler ■ fpe - pohyblivá řádová čárka ■ profJiwc - hardwarové čitače f gi_hwc, [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 • Profiling and Benchmarking • Jaro 2020 12/43 FAKULTA INFORMATIKY Masarykova univerzita Přesnost měření ■ Měření času ■ Absolutní čas vstupu a výstupu procedury ■ Vnořené procedury ■ Krátké procedury ■ Sběr hodnoty čitače instrukcí v pravidelných intervalech ■ Přesnost výsledku závislá na vzorkování (sampling interval) Luděk Matýska • Profiling and Benchmarking • Jaro 2020 13/43 FAKULTA INFORMATIKY Masarykova univerzita Blokově orientované profilery ■ Poskytují informace o průchodech základními bloky ■ Počet průchodů každým příkazem (řádkem) ■ Počet cyklů procesoru strávený v každém příkazu Luděk Matýska • Profiling and Benchmarking • Jaro 2020 FAKULTA INFORMATIKY Masarykova univerzita Příklad static void foo(), bar(), 13 baz(); 14 main() 15 { int l; 16 for (1=0; I <1000; 17 { if ( l == 2*(l/2) ) 18 foo(); 19 bar(); 20 baz(); 21 } 22 } 23 24 void foo() { int j;; for (j=0; j<200; } void bar() { int j; for (j=0; j<200; } void baz() { int j; for (j=0; j<300; } Luděk Matýska • Profiling and Benchmarking • Jaro 2020 15/43 FAKULTA INFORMATIKY Masarykova univerzita Usertime usertime: index %Samples self descendents total name [1] 100.0% 0.00 0.03 1 main [2] 100.0% 0.03 0.00 1 bar Luděk Matýska • Profiling and Benchmarking • Jaro 2020 16/43 FAKULTA INFORMATIKY I Masarykova univerzita Vzorkování Vzorkování pcsamp: samples time(%) cum time(%) procedure 2 0.02s( 50.0) 0.02s( 50.0) foo 1 0.01s( 25.0) 0.03s( 75.0) bar 1 0.01s( 25.0) 0.04s(100.0) baz fpcsamp: samples time(%) cum time(%) procedure 18 0.02s( 41.9) 0.02s( 41.9) baz 12 0.01s( 27.9) 0.03s( 69.8) bar 12 0.01s( 27.9) 0.04s( 97.7) foo Luděk Matýska • Profiling and Benchmarking • Jaro 2020 17/43 FAKULTA INFORMATIKY Masarykova univerzita Blokový přístup ideal: cycles(%) 3918000(49.63) 2618000(33.16) 1309000(16.58) 47024( 0.60) cum % sees instrns alls 49.63 0.03 2111000 1000 82.80 0.02 1411000 1000 99.38 0.01 705500 500 99.98 0.00 25017 1 baz bar f oo main Luděk Matýska • Profiling and Benchmarking • Jaro 2020 18/43 FAKULTA INFORMATIKY Masarykova univerzita Blokový přístup II ideal -h: cycles(%) cum % times line procedure 3907858(49.50%) 49 .50% 300000 23 baz 2607858(33.04%) 82 . 54% 200000 19 bar 1303930(16.52%) 99 . 06% 100000 15 f 00 14000( 0.18%) 99 . 24% 1000 6 main 13009( 0.16%) 99 . 40% 1000 5 main 8000( 0.10%) 99 . 50% 1000 9 main 8000( 0.10%) 99 . 60% 1000 8 main 7000( 0.09%) 99 . 69% 1000 24 baz 7000( 0.09%) 99 .78% 1000 20 bar 4000( 0.05%) 99 .83% 500 7 main 3500( 0.04%) 99 .88% 500 16 f 00 3142( 0.04%) 99 .92% 1000 18 bar 3142( 0.04%) 99 . 96% 1000 22 baz 1570( 0.02%) 99 . 98% 500 14 f 00 Luděk Matýska • Profiling and Benchmarking • Jaro 2020 19/43 FAKULTA INFORMATIKY Masarykova univerzita Blokové (tcov) tcov: 1 -> for (1=0; I <1000; 1000 -> { if ( I == 2*(l/2) ) 500 -> foo(); 1000 -> bar(); baz(); void foo() 500 -> for (j=0; j<200; void bar() 1000 -> for (j=0; j<200; void baz() 1000 -> for (j=0; j<300; Luděk Matýska • Profiling and Benchmarking • Jaro 2020 20/43 FAKULTA INFORMATIKY Masarykova univerzita 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 Luděk Matýska • Profiling and Benchmarking • Jaro 2020 21/43 FAKULTA INFORMATIKY Masarykova univerzita Profiling viz též http: //www. site .uottawa. ca/~mbolic/elg6158/ Subhasis_profiling.pdf Luděk Matýska • Profiling and Benchmarking • Jaro 2020 22/43 FAKULTA INFORMATIKY I Masarykova univerzita Zjišťování výkonu - benchmarking ■ Snaha o porovnání systému m 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 • Profiling and Benchmarking • Jaro 2020 23/43 FAKULTA INFORMATIKY I Masarykova univerzita Mysteriózní MIPS a MFLOPS ■ Srovnání na základe 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 • Profiling and Benchmarking • Jaro 2020 24/43 FAKULTA INFORMATIKY Masarykova univerzita Celočíslené benchmarky ■ VAX MIPS ■ Dhrystones Luděk Matýska • Profiling and Benchmarking • Jaro 2020 25/43 FAKULTA INFORMATIKY Masarykova univerzita Benchmarky s pohyblivou řádovou čárkou ■ Whetstone (umělý mix, skalární) ■ Linpack (daxpy, vektorizace) ■ 100*100 ■ 1000*1000 Luděk Matýska • Profiling and Benchmarking • Jaro 2020 FAKULTA INFORMATIKY I Masarykova univerzita SPEC benchmarks ■ Nezávislá organizace ■ Standard Performace Evaluation Corporation ■ Standardizované benchmarky pro různé architektury ■ Vychází z tzv. kernel kódu ■ Celý nebo část existujícího programu ■ Dostupné ve zdrojovém kódů ■ Je možno „doladiť Luděk Matýska • Profiling and Benchmarking • Jaro 2020 27/43 FAKULTA INFORMATIKY Masarykova univerzita SPEC skupiny ■ Open Systems Group (OSG) ■ High Performance Group (HPG) ■ Graphics Performance Characterization Group (GPC) Luděk Matýska • Profiling and Benchmarking • Jaro 2020 28/43 FAKULTA INFORMATIKY Masarykova univerzita SPEC OSG podskupiny ■ SPEC CPU ■ Grafika ■ SPECviewperf 13, SPECapc for 3ds Max 2015,... ■ JAVA ■ SPECjAppServer 2004,SPECjbb 2015, SPECjvm 2008,Java client a server benchmarky ■ MAIL ■ SPECmail2009(alreadyretired) ■ SFS ■ Systémy souborů (SPEC SFS 2014) ■ SPEC Virt_SC 2013 Luděk Matýska • Profiling and Benchmarking • Jaro 2020 29/43 FAKULTA INFORMATIKY Masarykova univerzita CPU2006 ■ Delení ■ CINT2006 - celočíselné výpočty ■ CFP2006 - výpočty s pohyblivou rádovou čárkou Luděk Matýska • Profiling and Benchmarking • Jaro 2020 30/43 FAKULTA INFORMATIKY Masarykova univerzita 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 2 5 5.vortex Object-oriented Database 256.bzip2 Compression 300.twoLf Place and Route Simulator Luděk Matýska • Profiling and Benchmarking • Jaro 2020 31/43 FAKULTA INFORMATIKY Masarykova univerzita CINT2006 ■ Jednotlivé součásti 400.perLbench C 401.bzip2 C 403.gcc C 429.mcf C 445.gobmk C 456.hmmer C 458.sjeng C 462.libquantum C 464.h264ref C 471.omnetpp C++ 473.astar c++ 483.xaLancbmk c++ PERL Programming Language Compression C Compiler Combinatorial Optimization Artificial Intelligence: go Search Gene Sequence Artificial Intelligence: chess Physics: Quantum Computing Video Compression Discrete Event Simulation Path-finding Algorithms XML Processing Luděk Matýska • Profiling and Benchmarking • Jaro 2020 32/43 FAKULTA INFORMATIKY Masarykova univerzita CFP2000 Jednotlivé součásti 168.wupwise Physics / Quantum Chromodynamics lľl.swim Shallow Water Modeling 172. mgrid Multi-grid Solver: 3D Potential Field 173. applu Parabolic / Elliptic Partial Differential Equations 177. mesa 3-D Graphics Library 178. galgel Computational Fluid Dynamics 179. art Image Recognition / Neural Networks 183.equake Seismic Wave Propagation Simulation 187. facerec Image Processing: Face Recognition 188. ammp Computational Chemistry 189.lucas Number Theory / Primality Testing 191.fma3d Finite-element Crash Simulation 200.sixtrack High Energy Nuclear Physics Accelerator Design 301.apsi Meteorology: Pollutant Distribution Luděk Matýska • Profiling and Benchmarking • Jaro 2020 33/43 FAKULTA INFORMATIKY Masarykova univerzita CFP2006 410.bwaves Fortran Fluid Dynamics 416.gamess Fortran Quantum Chemistry 433.miLc C Physics: Quantum Chromodynamics 434.zeusmp Fortran Physics/CFD 435.gromacs C/F ort ran Biochemistry/Molecular Dynamics 436.cactusADM C/F ort ran Physics/General Relativity 437.LesLie3d Fortran Fluid Dynamics 444.namd C++ Biology/Molecular Dynamics 447.deaLII C++ Finite Element Analysis 450ZZ.sopLex C++ Linear Programming, Optimization 453.povray C++ 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/F ort ran Weather Prediction 482.sphinx3 C Speech recognition Luděk Matýska • Profiling and Benchmarking • Jaro 2020 34/43 FAKULTA INFORMATIKY I Masarykova univerzita SPEC CPU2017 ■ Aktuální CPU benchmark ■ 4 součásti intspeed SPECspeed 2017 Integer: 10 integer benchmarks fpspeed SPECspeed 2017 Floating Point: 10 integer benchmarks Vždy právě jedna kopie každého benchmarku OpenMP může být použito Měří se čas výpočtu intrate SPECrate 2017 Integer: 10 integer benchmarks fprate SPECrate 2017 Floating Point: 10 integer benchmarks Vždy více kopií každého benchmarku (nastavitelné při spuštění) OpenMP je zakázáno Měří se propustnost (kolik úloh za jednotku času) Luděk Matýska • Profiling and Benchmarking • Jaro 2020 35/43 FAKULTA INFORMATIKY Masarykova univerzita SPECpeed 2017 Integer 500.perLbench_r C PerL interpreter 502.gcc_r C GNU C compiler 505.mcf_r C Route planning 520.omnetpp_r C++ Discrete event simulation 523.xaLancmbk_r C++ XML to HTML conversion 525.x264_r c Video compression 531.deepsjeng_r C++ AI: ex — f3 search (Chess) 541.LeeLa_r C++ AI: Monte Carlo search (Go) 548.exchange2_r Fortran AI: recursive solution generator (Sudoku) 557.xz_r C General data compression Luděk Matýska • Profiling and Benchmarking • Jaro 2020 36/43 FAKULTA INFORMATIKY Masarykova univerzita SPECrate 2017 Integer 600.perLbench_s C PerL interpreter 602.gcc_s C GNU C compiler 605.mcf_s C Route planning 620.omnetpp_s C++ Discrete event simulation 623.xaLancmbk_s C++ XML to HTML conversion 625.x264_s c Video compression 631.deepsjeng_s C++ AI: ex — f3 search (Chess) 641.LeeLa_s C++ AI: Monte Carlo search (Go) 648.exchange2_s Fortran AI: recursive solution generator (Sudoku) 657.xz_s c General data compression Luděk Matýska • Profiling and Benchmarking • Jaro 2020 37/43 FAKULTA INFORMATIKY Masarykova univerzita SPECpeed 2017 Floating Point 503.bwaves_r Fortran Explosion modeLLing 507.cactuBSSN_r C++,C,Fortran Physics: relativity 508.namd_r C++ Molecular dynamics 510.parest_r c++ Biomedical imaging 511.povray_r C++,C Ray tracing 519.Lbm_r C Fluid dynamics 521.wrf_r Fortran,C Weather forecasting 526.blender_r C++,C 3D rendering and animation 527.cam4_r Fortran,C Atmoshpere modeling 538.imagick_r C Image manipulation 544.nab_r C Molecular dynamics 549.fotonik3d_r Fortran Computational Electromagnetics 554.roms_r Fortran Regional ocean modeling Luděk Matýska • Profiling and Benchmarking • Jaro 2020 38/43 FAKULTA INFORMATIKY Masarykova univerzita SPECrate 2017 Floating Point 603.bwaves_s 607.cactuBSSN_s 619.lbm_s 621.wrf_s 627. cam4_s 628. pop2_s 638.imagick_s 644.nab_s 649.fotonik3d_s 654.roms_s Fortran C++,C,Fortran C Fortran,C Fortran,C Fortran,C C C Fortran Fortran Explosion modelling Physics: relativity Fluid dynamics Weather forecasting Atmoshpere modeling Wide-scale ocena modeling Image manipulation Molecular dynamics Computational Electromagnetics Regional ocean modeling Luděk Matýska • Profiling and Benchmarking • Jaro 2020 39/43 FAKULTA INFORMATIKY Masarykova univerzita 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 • Profiling and Benchmarking • Jaro 2020 40/43 FAKULTA INFORMATIKY Masarykova univerzita Síťové benchmarky ■ netperf ■ iperf ■ End to end měření ■ Pozor na to, co skutečně v síti měříme Luděk Matýska • Profiling and Benchmarking • Jaro 2020 41/43 FAKULTA INFORMATIKY I Masarykova univerzita 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) Luděk Matýska • Profiling and Benchmarking • Jaro 2020 42/43 FAKULTA INFORMATIKY I Masarykova univerzita 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 • Profiling and Benchmarking • Jaro 2020 43/43