von Neumann's bottleneck Föreläsning 2: Prestandabegränsningar & Prestandamått von Neumann maskin En kontrollenhet som kopplar ihop minne och processor Kopplingen mellan processor och minne flaskhals Memory Flaskhals Instruction/Data Bus Control Unit Processing Unit Non-von dator Uppsnabbning (Speedup) Non von P-processorer, Q-minnen, R-kontrollenheter, ett nätverk Kan utföra PT instruktioner per sekund minus overhead där T är antalet instruktioner per sekund Processor Memory Processor Memory Processor Memory t s, tiden att exekvera den bästa seriella algoritmen på en processor t(1), tiden att exekvera parallella algoritmen på en processor t p t(n), tiden att exekvera parallella algoritmen på n processorer 1 S( n) speedup( n) t p t 1
Vad begränsar prestandan? Amdahl's Law S( n) t speedup( n) t 1 < n Tillgänglig parallellitet Lastbalansen vissa processorer gör mer än andra några arbetar medan andra är idle (sysslolös, arbetslös) kö (väntan) till extern resurs Extra arbete hantering av parallellitet kommunikation p The speed of a computer is limited by its serial part ts S( n) fts + (1 f ) ts / n 1 n fn / n + (1 f ) / n 1+ f ( n 1) Givet att f är den seriella delen av koden ft s är tiden att beräkna seriella delen av programmet (1-f) t s /n är tiden att beräkna parallella delen av progr. S(n) 20 16 12 8 4 0 Amdahl's Law - implikationer 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 n f 0 f 0,05 f 0,1 f 0,2 Gustavson-Barsis Law The parallel fraction of the problem is scalable - increases with problem size Obervation, Amdahls lag gör antagandet att (1- f) är oberoende av n, vilket det oftast inte är Ny Lag: s + np S s ( n) n + (1 n) s s + p Antag att Parallellism kan användas för att öka parallella delen av problemet Varje processor beräknar både seriell (s) och parallell (p) del 2
S(n) 20 16 12 8 4 0 Gustavson-Barsis Law - implikationer 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 n f 0 f 0,2 Parallella programs karaktär Trivialt parallella program (embarrassingly parallel) speedup(p) p matrisaddition, kompilera oberoende subrutiner Divide and Conquer speedup(p) ~ p/log 2 p Binärt träd: addera p tal, merge sort Kommunikationsbunden parallellism cost latency + n/bandwidth - overlap Kan gå saktare på fler processorer Matrisberäkning där hela strukturer måste kommuniceras, parallella program på LAN. Några prestandamått Antal flyttalsoperationer per sekund flop/s, Mflop/s, Gflop/s, Tflop/s Speedupkurvor: x-axel #processorer, y-axel speedup Speedup s t 1 /t(p). I teorin begränsad av antalet processorer. Scaled Speedup ökar problemstorleken linjärt med #processorer Andra mått Tiden, Problemstorlek, Processorutnyttjande Effektivitet Skalbarhet Flera användare på systemet Throughput, (Jobs/sec) Benchmark Performance För att mäta ett systems kapacitet i olika avseenden. Tex flyttalshastghet, I/O-hastighet, speedup för vissa kärnrutiner,... Benchmark suite: En samling av specialkaraktärbenchmarks Syntetic benchmark: Enkel litet benchmark som imiterar en verklig applikation map datastruktur och antal satser. 3
Klassiska Benchmarks Whetstone (syntetiskt, numeriskt) Dhrystone (syntetiskt, testa ADA) Linpack (Löser ett 100x100 system, Mflop/s) Gemm-based Livermore Loops (ett antal loopar) Perfect Club www.netlib.org och www.netlib.org/benchmark/linpackjava Parallella Benchmarks Linpack (LU), Prestandasiffror genom lösande av linjära ekvationssystem NAS Kernels (7 FORTRAN rutiner, fluid dynamics) Livermore Loops (FORTRAN kod) SLALOM (sci. comp., hur mycket kan beräknas på en minut) Benchmark som använder linjära ekvationssystem Resultatet avspeglar Prestanda genom att lösa täta ekvationssystem Aritmetik i full precision Fyra olika värden Linpack benchmark för matriser av storlek 100 TPP: Löser system av ordning 1000 (inga restriktioner på metod eller implementation) Theoretical peak performance HPC: Highly parallel computing LINPACK 100 Matriser av storlek 100 Inga ändringar av FORTRAN-koden tillåten Hög andel flyttalsoperationer rutiner: (SD)GEFA & (SD)GESL LU med partiell pivotering och bakåtsubstitution Kolumnorienterade algoritmer 4
LINPACK 1000 (TovardsPeakPerformace) Matriser av storlek 1000 Tillåtet att ändra och byta ut algoritm och mjukvara Måste använda samma drivprogram och ha samma resultat och noggrannhet 2n 3 /3 + O(2n 2 ) operationer Ger en övre gräns på prestandan tillverkaren garanterar att program inte kommer att överskrida denna hastighet Theoretical peak performance Antal flops som kan beräknas under en tidsperiod Baserat på maskinens cykeltid Example: Cray Y-MP/8, cycle time 6ns m (2 operations/1 cycle) * (1 cycle/6ns) 333 Mflop/s Example: POWER3-200, cycle time 5ns m (2x2 operationer/1 cycle) * (1 cycle/5ns) 800 Mflop/s Highly Parallel Computing Resultatet avspeglar problemstorleken Regler Lös system av linjära ekvationer Tillåt problemstorleken att variera Använd 2n 3 /3 + O(2n 2 ) operationer (oberoende av metod) Resultat R max : maximal uppmätt prestanda i Gflops N max : storleken för detta problem N 1/2 : storleken där halva R max uppnås R peak : theoretical peak performance www.netlib.org/benchmark/hpl/ Top 500 Supercomputer sites En lista med de 500 kraftfullaste datorsystemen Datorerna rankas efter deras LINPACK benchmark prestanda Listan visar R max, N max, N 1/2, R peak, # processorer m Top 500 Supercomputer sites 5
NAS parallel benchmark Efterliknar beräkningar och dataförflyttningar i Computational fluid dynamics (CFD) Fem parallella kärnor & tre simulerade applikationsbenchmark Problemen är algoritmiskt specificerade Tre klasser av problem (största skillnaden är problemstorlek) Sample code, Class A och Class B (i ökande storlek) Resultat Tid i sekunder Jämfört med Cray Y-MP/1 NAS, The kernel benchmarks Embarrassingly parallel Prestanda utan kommunikation Multigrid Strukturerande lång-distans-kommunikation Konjugerad gradient Icke strukturerad lång-distans-kommunikation, ostrukturerade matris-vektor-operationer 3d fft lång-distans-kommunikation integer sort Heltalsberäkningar och kommunikation NAS, Simulated kernals Pseudo-applicationer utan de svårigheter som finns i riktig CFD LU lösare Pentadiagonal lösare Block-triangulär lösare Twelve Ways to Fool the Masses Quote 32-bit performance results and compare it with others 64-bit results Present inner kernel performance figures as the performance of entire application Quietly employ assembly code and compare your results with others C or Fortran implementations Scale up the problem size with the number of processors but fail to disclose this fact Quote performance results linearly projected to a full system Compare with an old code on an obsolete system Compare your results against scalar, un-optimized code on Cray 6
Twelve Ways to Fool the Masses (2) Base Mflop operation counts on the parallel implementation, not on the best sequential algorithm Quote performance in terms of processor utilization, parallel speedup or Mflops/dollar (Peak not sustained) Measure parallel run time on a dedicated system but measure conventional run times in a busy environment If all these fails, show pretty pictures and animated videos, and don t talk about performance D. H. Bailey, "Twelve Ways to Fool the Masses When Giving Performance Results on Parallel Computers," in Proceedings of Supercomputing '91, Nov. 1991, pp. 4-7. (finns bl a på www.pdc.kth.se/training/twelve-ways.html) Mflops/s 700 600 500 400 300 200 100 Exempel på prestandagraf Factorization on IBM POWER3 BC, without data transformation BC, including time for data transformation LAPACK DPOTRF LAPACK DPPTRF 0 0 100 200 300 400 500 600 700 800 900 1000 N Mflops/s 450 400 350 300 250 200 150 100 50 Exempel på prestandagraf Factorization on IBM POWER2 BPC, without data transformation BPC, including time for data transformation LAPACK DPOTRF LAPACK DPPTRF 0 0 100 200 300 400 500 600 700 800 900 1000 N Räkneuppgifter Hur mycket speedup kan man få enligt Amdahl s lag när n->stort? Applicera slutsatsen på ett program med 5% seriell del! Vid en testkörning på en CPU tog ett program 30 sek för storlek n. För fyra CPU tog det 20 sek. Hur lång tid kräver samma program på 10 CPU enl. Amdahl s lag? Vad blir speedup? Hur lång tid enl. Gustafson- Barsis lag för 10 n och 10 CPU? Vad blir speedup? En parallelldator består av 16 CPU med vardera 800 MIPS topprestanda. Vad blir prestandan (i MIPS) om de instruktioner som skall utföras är 10% seriell kod, 20% parallell för 2 CPU och 70% fullt parallelliserbar? 7
Tentamen 040116, uppgift 1. Vad är parallella beräkningar? Vid design av parallella program är följande begrepp viktiga: datapartitionering, kornighet och lastbalans. Förklara dessa begrepp! Beskriv Flynn s klassindelning. Ge exempel på maskiner som hör till varje klass! 8