Obliczenia wysokiej wydajności 1
Wydajność obliczeń Wydajność jest (obok poprawności, niezawodności, bezpieczeństwa, ergonomiczności i łatwości stosowania i pielęgnacji) jedną z najważniejszych charakterystyk każdego oprogramowania Niniejsze wykłady przedstawiają sposoby analizy i osiągania wysokiej wydajności w programach Tradycyjnie zagadnieniom wysokiej wydajności najwięcej uwagi poświęca się w ramach specjalnej dziedziny informatyki: Obliczeń Wysokiej Wydajności (High Performance Computing) Wyniki osiągnięte w ramach HPC mają swoje zastosowanie we wszystkich dziedzinach informatyki 2
Wykład OWW Osiąganie wysokiej wydajności Wydajność aplikacji: Języki i środowiska wysokiego poziomu abstrakcji i złożoności: SQL i systemy baz danych OpenGL, DirectX i systemy graficzne HTML, PHP i aplikacje internetowe Java, C# i ich środowiska wykonania Języki relatywnie niskiego poziomu blisko sprzętu C Asemblery Ze względu na rozmaitość języków i środowisk wysokiego poziomu oraz asemblerów daleko wykraczającą poza ograniczenia czasowe jednego przedmiotu wykład koncentruje się na programowaniu w języku C 3
C (źródło www.tiobe.com) 4
Wykład OWW Osiąganie wysokiej wydajności programy w C Analiza wydajności dla architektur sprzętowych obejmujących procesory (CPU, GPU), układ pamięci, układ komunikacji międzyprocesorowej Optymalizacja wykonywania instrukcji: kod źródłowy kod assemblera wykonanie przez procesor Optymalizacja dostępu do pamięci: komunikacja w systemach z pamięcią rozproszoną dostęp do pamięci wspólnej w systemach wieloprocesorowych i wielordzeniowych funkcjonowanie hierarchii pamięci w CPU i GPU (pamięć podręczna, ewentualne inne formy pamięci lokalnej, pamięć globalna) sprzętowa organizacja pamięci i jej funkcjonowanie 5
Obliczenia wysokiej wydajności Obliczenia wysokiej wydajności to obliczenia, w których stara się uzyskać maksymalną szybkość przetwarzania Maksymalizacja szybkości przetwarzania ma doprowadzić do minimalizacji czasu rozwiązania danego problemu (time to solution) Zależnie od rodzaju wykonywanych obliczeń, stosuje się różne miary szybkości przetwarzania Najpopularniejszą miarą (zwłaszcza w dziedzinie obliczeń naukowo technicznych) jest liczba wykonywanych operacji zmiennoprzecinkowych na sekundę (FLOPS) Inne możliwe miary to np. liczba wykonywanych w sekundzie instrukcji, liczba przetwarzanych transakcji na sekundę, liczba wyświetlanych pikseli na sekundę itp. 6
Numbers everyone should know Google forum L1 cache reference 0.5 ns Branch mispredict 5 ns L2 cache reference 7 ns Mutex lock/unlock 100 ns Main memory reference 100 ns Compress 1K bytes with Zippy 10,000 ns Send 2K bytes over 1 Gbps network 20,000 ns Read 1 MB sequentially from memory 250,000 ns Round trip within same datacenter 500,000 ns Disk seek 10,000,000 ns Read 1 MB sequentially from network 10,000,000 ns Read 1 MB sequentially from disk 30,000,000 ns Send packet CA >Netherlands >CA 150,000,000 ns 7
Historia obliczeń wysokiej wydajności komputery macierzowe komputery wektorowe komputery masowo równoległe klastry 8
Komputery macierzowe (SIMD) Odrębny procesor przetwarzający rozkazy Macierz procesorów przetwarzających dane Illiac IV, 1966-76 ~100 MFLOPS, ~5 000 000 USD 9
Komputery macierzowe Dzisiejsze zastosowania: rozkazy SIMD w procesorach ogólnego przeznaczenia przetwarzanie sygnałów procesory graficzne, GPU superkomputery specjalnego przeznaczenia (np. apenext SPMD komputer do symulacji w dziedzinie LQCD, 4096 procesorów, 7 TFLOPS) 10
11
Komputery wektorowe Podstawowy element procesor wektorowy: rejestry wektorowe przetwarzanie potokowe operacji zmiennoprzecinkowych kilka potoków i jednostek funkcjonalnych Współczesne zastosowania: przetwarzanie superskalarne i potokowe w procesorach ogólnego przeznaczenia superkomputery Cray-1, 1975 ~100 MFLOPS, ~5 000 000 USD Cray 2, ~2 GFLOPS 12
Komputery wektorowe w procesorze jednostki skalarne i wektorowe (czasem adresowe) operacje wektorowe (w tym operacje redukcji) op V > V (np. a[i]:= b[i]) op V > S redukcja (np. r:=max(b[i])) V op V > V (np. a[i]:=b[i]+c[i]) V op S > V (np. a[i]:= s*b[i]) dostęp do pamięci: wielobankowość, przeplot, potoki rejestry wektorowe (długość 64 do 128) w tym maska potokowe jednostki funkcjonalne łączenie operacji w łańcuchy (chaining) (a[i] := b[i] + s*c[i] ) 13
14
Earth Simulator 5120 procesorów ~ 35 TFLOPS 15
Earth Simulator 16
Earth Simulator 17
Komputery masowo równoległe Komputery posiadające setki, tysiące i więcej procesorów (komputery wektorowe kilkadziesiąt) Komputery złożone z niezależnych procesorów, najczęściej wyposażonych w indywidualną pamięć CM-2, 1987 65 536 procesorów CM-5, 1991, 512 węzłów ~65.5 GFLOPS,~25 000 000 USD 18
IBM Blue Gene/L Architektura Blue Gene 65 536 węzłów obliczeniowych 280 TFLOPS 64 szafy 1.2 MW 2004 2006 19
20
Klastry Niezależne komputery połączone siecią Silna integracja poprzez specjalne oprogramowanie Do kilku tysięcy komputerów Relatywnie tanie (kilka tysięcy USD / komputer) 21
And the winner is... TOP500 najpopularniejsza klasyfikacja najpotężniejszych systemów komputerowych świata Dokonywana dwa razy w roku (w czerwcu i listopadzie) od 1993 Klasyfikacja oparta na szybkości rozwiązywania układu równań liniowych metodą Gaussa Tylko systemy ogólnego przeznaczenia 22
Lista Top500 23
Czy to już wszystko? Systemy umieszczone na liście TOP 500 nie są jedynymi potężnymi systemami obliczeniowymi świata Równie potężne bywają organizowane ad hoc zespoły rozproszonych po całym świecie i połączonych siecią różnorodnych komputerów Projekt SETI@home (obecnie jako BOINC, http://boinc.berkeley.edu/), projekt Folding@home (http://folding.stanford.edu/): kilkaset tysięcy komputerów na całym świecie kilka PFLOPS łącznej mocy obliczeniowej 24
Systemy równoległe wysokiej wydajności 25
Gdzie potrzebne są wysokie moce obliczeniowe? Internet & Ecommerce Aerodynamika Nauki biologiczne CAD/CAM Wojskowość Medycyna 26
Gdzie potrzebne są wysokie moce obliczeniowe? 27
Znaczenie algebry liniowej 28