Obliczenia wysokiej wydajno - metal.agh.edu.plbanas/OWW/OWW_W01_Wstep.pdf · Rodzaje sieci...

36
Krzysztof Banaś Obliczenia Wysokiej Wydajności 1 Obliczenia wysokiej wydajności

Transcript of Obliczenia wysokiej wydajno - metal.agh.edu.plbanas/OWW/OWW_W01_Wstep.pdf · Rodzaje sieci...

Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Obliczenia wysokiej wydajności

Krzysztof Banaś Obliczenia Wysokiej Wydajności 2

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

Krzysztof Banaś Obliczenia Wysokiej Wydajności 3

➔ 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.

Obliczenia wysokiej wydajności

Krzysztof Banaś Obliczenia Wysokiej Wydajności 4

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

Krzysztof Banaś Przetwarzanie współbieżne, równoległe i rozproszone 5

Znaczenie algebry liniowej

Krzysztof Banaś Obliczenia Wysokiej Wydajności 6

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

Krzysztof Banaś Obliczenia Wysokiej Wydajności 7

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ą

Krzysztof Banaś Obliczenia Wysokiej Wydajności 8

➔     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

„Numbers everyone should know” Google forum

Krzysztof Banaś Obliczenia Wysokiej Wydajności 9

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

Krzysztof Banaś Obliczenia Wysokiej Wydajności 10

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 

Krzysztof Banaś Obliczenia Wysokiej Wydajności 11

Power 4

Krzysztof Banaś Obliczenia Wysokiej Wydajności 12

Krzysztof Banaś Obliczenia Wysokiej Wydajności 13

Intel Knights Landing

Krzysztof Banaś Obliczenia Wysokiej Wydajności 14

Architektura procesora G80

Krzysztof Banaś Obliczenia Wysokiej Wydajności 15

NVIDIA Fermi

Krzysztof Banaś Obliczenia Wysokiej Wydajności 16

ATI FireStream

Krzysztof Banaś Obliczenia Wysokiej Wydajności 17

Akceleratory

➔ 48­rdzeniowy procesor ogólnego przeznaczenia firmy Intel – Single­chip Cloud Computer – SCC  

➔ procesor hybrydowy IBM PowerXCell

Krzysztof Banaś Obliczenia Wysokiej Wydajności 18

Xeon PHI

Krzysztof Banaś Obliczenia Wysokiej Wydajności 19

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

Krzysztof Banaś Obliczenia Wysokiej Wydajności 20

Architektura rdzeni – CPU versus GPU

Krzysztof Banaś Przetwarzanie współbieżne, równoległe i rozproszone 21

SMP, UMA, NUMA, etc.

UMA – SMP

NUMA – DSM ccNUMA

Krzysztof Banaś Obliczenia Wysokiej Wydajności 22

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

Krzysztof Banaś Obliczenia Wysokiej Wydajności 23

Sieci połączeniowe

Krzysztof Banaś Obliczenia Wysokiej Wydajności 24

Krzysztof Banaś Obliczenia Wysokiej Wydajności 25

Krzysztof Banaś Obliczenia Wysokiej Wydajności 26

Lista Top 500

Krzysztof Banaś Obliczenia Wysokiej Wydajności 27

Lista Top 500

Krzysztof Banaś Obliczenia Wysokiej Wydajności 28

Lista Top 500

Krzysztof Banaś Obliczenia Wysokiej Wydajności 29

Top 500 – udział państw (2008)

Krzysztof Banaś Obliczenia Wysokiej Wydajności 30

Top 500 – szybkość rugowania z listy

Krzysztof Banaś Obliczenia Wysokiej Wydajności 31

➔ 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 

Czy to już wszystko?

Krzysztof Banaś Obliczenia Wysokiej Wydajności 32

Systemy równoległe wysokiej wydajności

Krzysztof Banaś Obliczenia Wysokiej Wydajności 33

Gdzie potrzebne są wysokie moce obliczeniowe?

Nauki biologiczne

CAD/CAM

Aerodynamika

MedycynaWojskowość

Internet & Ecommerce

Krzysztof Banaś Obliczenia Wysokiej Wydajności 34

Gdzie potrzebne są wysokie moce obliczeniowe?

Krzysztof Banaś Obliczenia Wysokiej Wydajności 35

Znaczenie OWW (HPC)

Krzysztof Banaś Obliczenia Wysokiej Wydajności 36

Zyski z HPC