Obliczenia wysokiej wydajności 1
Wydajność obliczeń Wydajność jest (obok poprawności, niezawodności, bezpieczeństwa, ergonomiczności oraz ł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) HPC jest często synonimem nazwy Supercomputing, ale w niniejszych wykładach Supercomputing pojawia się tylko sporadycznie wyniki osiągnięte w ramach HPC mają swoje zastosowanie we wszystkich dziedzinach informatyki 2
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. 3
Wykład OWW Wykład koncentruje się na zagadnieniu osiągania wysokiej wydajności dla dowolnej platformy, na której przeprowadza się obliczenia Kluczowe jest ustalenie: maksymalnej teoretycznej wydajności dla danej aplikacji na konkretnym sprzęcie wydajności osiąganej w praktyce dzięki dokonywaniu odpowiednich pomiarów sposobów optymalizacji zwiększania wydajności i skracania czasu obliczeń Wykład koncentruje się na zagadnieniach czysto obliczeniowych (głównie numeryczna algebra liniowa), ale zaprezentowane techniki analizy i optymalizacji mogą znaleźć zastosowanie w dowolnej dziedzinie informatyki 4
Znaczenie algebry liniowej Przetwarzanie współbieżne, równoległe i rozproszone 5
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, skrypty 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 6
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: sprzętowa organizacja pamięci i jej funkcjonowanie funkcjonowanie hierarchii pamięci w CPU i GPU (pamięć podręczna, ewentualne inne formy pamięci lokalnej, pamięć globalna) dostęp do pamięci wspólnej w systemach wieloprocesorowych i wielordzeniowych komunikacja w systemach z pamięcią rozproszoną 7
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 8
Współczesne systemy komputerowe Kluczem do uzyskania wysokiej wydajności obliczeń jest znajomość architektury sprzętu Procesory wielordzeniowe klasyczne kilku-rdzeniowe (multi-core) ogólnego przeznaczenia masowo wielordzeniowe (many-core) procesory graficzne procesory Xeon Phi (zastosowanie w HPC) Systemy równoległe z procesorów ogólnego przeznaczenia SMP DSM MPP klastry systemy hybrydowe 9
Procesory wielordzeniowe Pierwszym procesorem wielordzeniowym ogólnego przeznaczenia był procesor Power4 firmy IBM Obecnie dominują procesory kilkurdzeniowe (multi core) Trwają badania nad procesorami masowo wielordzeniowymi (many core) (koprocesor Intel Xeon PHI ok. 60 rdzeni z jednostkami wektorowymi, karty graficzne setki rdzeni skalarnych) O wydajności układu wielordzeniowego w dużej mierze decyduje sposób rozwiązania problemu dostępu rdzeni do pamięci podręcznej i pamięci głównej 10
Power 4 11
12
Intel Knights Landing 13
Architektura procesora G80 14
NVIDIA Fermi 15
ATI FireStream 16
Akceleratory 48 rdzeniowy procesor ogólnego przeznaczenia firmy Intel Single chip Cloud Computer SCC procesor hybrydowy IBM PowerXCell 17
Xeon PHI 18
Tendencje Mało dużych rdzeni rozbudowane potoki wykonanie poza kolejnością wyrafinowane przewidywanie rozgałęzień wiele jednostek funkcjonalnych Dużo małych rdzeni prostsza budowa, krótsze potoki wykonanie w kolejności proste przewidywanie rozgałęzień mniej jednostek funkcjonalnych 19
Architektura rdzeni CPU versus GPU 20
SMP, UMA, NUMA, etc. UMA SMP NUMA DSM ccnuma Przetwarzanie współbieżne, równoległe i rozproszone 21
Sieci połączeń w systemach równoległych Rodzaje sieci połączeń: podział ze względu na łączone elementy: połączenia procesory pamięć (moduły pamięci) połączenia międzyprocesorowe (międzywęzłowe) podział ze względu na charakterystyki łączenia: sieci statyczne zbiór połączeń dwupunktowych sieci dynamiczne przełączniki o wielu dostępach 22
Sieci połączeniowe 23
24
25
Lista Top 500 26
Lista Top 500 27
Lista Top 500 28
Top 500 udział państw (2008) 29
Top 500 szybkość rugowania z listy 30
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 kilkadziesiąt PFLOPS łącznej mocy obliczeniowej 31
Systemy równoległe wysokiej wydajności 32
Gdzie potrzebne są wysokie moce obliczeniowe? Internet & Ecommerce Aerodynamika Nauki biologiczne CAD/CAM Wojskowość Medycyna 33
Gdzie potrzebne są wysokie moce obliczeniowe? 34
Znaczenie OWW (HPC) 35
Zyski z HPC 36