Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

Podobne dokumenty
Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Obliczenia Wysokiej Wydajności

Programowanie procesorów graficznych GPGPU

Ograniczenia efektywności systemu pamięci

Programowanie Rozproszone i Równoległe

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK

Ograniczenia efektywności systemu pamięci

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Dr inż. hab. Siergiej Fialko, IF-PK,

i3: internet - infrastruktury - innowacje

Programowanie Współbieżne

Tesla. Architektura Fermi

Architektura komputerów

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Programowanie w modelu równoległości danych oraz dzielonej globalnej pamięci wspólnej. Krzysztof Banaś Obliczenia równoległe 1

Organizacja pamięci współczesnych systemów komputerowych : pojedynczy procesor wielopoziomowa pamięć podręczna pamięć wirtualna

Literatura. 11/16/2016 Przetwarzanie równoległe - wstęp 1

Programowanie w modelu równoległości danych oraz dzielonej globalnej pamięci wspólnej. Krzysztof Banaś Obliczenia równoległe 1

Wydajność programów sekwencyjnych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Literatura. 3/26/2018 Przetwarzanie równoległe - wstęp 1

System obliczeniowy laboratorium oraz. mnożenia macierzy

Architektura komputerów

METODY ELIMINACJI STUDENTÓW INFORMATYKI. Czyli co student INF-EKA powinien wiedzieć o MESI...

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Maciej Sypniewski. lato 2014, Politechnika Warszawska, Wydział Elektroniki i Technik Informacyjnych

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

10/14/2013 Przetwarzanie równoległe - wstęp 1. Zakres przedmiotu

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Procesy i wątki. Krzysztof Banaś Obliczenia równoległe 1

Nowoczesne technologie przetwarzania informacji

Przykłady praktycznych rozwiązań architektur systemów obliczeniowych AMD, Intel, NUMA, SMP

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Systemy wieloprocesorowe. Sprzęt i oprogramowanie wspomagające perspektywa - Windows i Linux Wykład Przetwarzanie równoległe Listopad 2010

Alternatywne modele programowania równoległego

Architektura komputerów

Wydajność obliczeń a architektura procesorów. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Wykład 8 Systemy komputerowe ze współdzieloną pamięcią operacyjną, struktury i cechy funkcjonalne.

Systemy wbudowane. Uproszczone metody kosyntezy. Wykład 11: Metody kosyntezy systemów wbudowanych

Architektura Systemów Komputerowych. Rozwój architektury komputerów klasy PC

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Architektury komputerów Architektury i wydajność. Tomasz Dziubich

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego

Obliczenia Wysokiej Wydajności

Wysokowydajna implementacja kodów nadmiarowych typu "erasure codes" z wykorzystaniem architektur wielordzeniowych

Programowanie współbieżne Wykład 1. Rafał Skinderowicz

Przetwarzanie Równoległe i Rozproszone

Moc płynąca z kart graficznych

Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

System pamięci. Pamięć wirtualna

Wykorzystanie architektury Intel MIC w obliczeniach typu stencil

Wykład 13. Systemy wieloprocesorowe. Wojciech Kwedlo Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Procesory. Schemat budowy procesora

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski

Programowanie współbieżne. Iwona Kochańska

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1

Programowanie współbieżne Wykład 7. Iwona Kochaoska

Budowa Mikrokomputera

Programowanie współbieżne Wykład 1. Rafał Skinderowicz

IMPLEMENTACJA I PORÓWNANIE WYDAJNOŚCI WYBRANYCH ALGORYTMÓW GRAFOWYCH W WARUNKACH OBLICZEŃ RÓWNOLEGŁYCH

Architektura Systemów Komputerowych

Przetwarzanie Równoległe i Rozproszone

JCuda Czy Java i CUDA mogą się polubić? Konrad Szałkowski

Zrównoleglenie i przetwarzanie potokowe

Przykładem jest komputer z procesorem 4 rdzeniowym dostępny w laboratorium W skład projektu wchodzi:

Architektura von Neumanna. Jak zbudowany jest współczesny komputer? Schemat architektury typowego PC-ta. Architektura PC wersja techniczna

Rys. 1. Podłączenie cache do procesora.

Programowanie aplikacji równoległych i rozproszonych

Sprzęt czyli architektury systemów równoległych

Kto mówi? Inżynier systemów wbudowanych Linux, ARMv7, ARMv8

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC,

Nazwa Wydziału Nazwa jednostki prowadzącej moduł Nazwa modułu kształcenia Kod modułu Język kształcenia Efekty kształcenia dla modułu kształcenia

1. Zasady projektowania aplikacji wielowątkowych. 2. Funkcje wspomagające równoległość przetwarzania. Wykład PR 2012

Podstawy Informatyki Systemy sterowane przepływem argumentów

REFERAT PRACY DYPLOMOWEJ

System pamięci. Pamięć wirtualna

Architektura komputerów egzamin końcowy

System pamięci. Pamięć wirtualna

INŻYNIERIA OPROGRAMOWANIA

Instruction Set Instruction Set Extensions Embedded Options Available. Recommended Customer Price TRAY: $999.00

Numeryczna algebra liniowa

Programowanie współbieżne OpenMP wybrane wydajność. Rafał Skinderowicz

Model pamięci. Rafał Skinderowicz

Podstawy architektury systemów z równoległością na poziomie wątków

MESco. Testy skalowalności obliczeń mechanicznych w oparciu o licencje HPC oraz kartę GPU nvidia Tesla c2075. Stanisław Wowra

Libra.cs.put.poznan.pl/mailman/listinfo/skisrkolo.

Wykład 13. Linux 2.0.x na maszynach SMP. Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB

OWS1 (systemy z pamięcią współdzieloną) Rafał Walkowiak Wersja: wiosna 2016

Transkrypt:

Procesory wielordzeniowe (multiprocessor on a chip) 1

Procesory wielordzeniowe 2

Procesory wielordzeniowe 3

Intel Nehalem 4

5

NVIDIA Tesla 6

ATI FireStream 7

NVIDIA Fermi 8

Sprzętowa wielowątkowość 9

Architektury hybrydowe 1

Zasoby węzła z pamiecią wspólną 11

Wydajność pamięci 1 2 3 4 5 6 7 8 STREAM (GB/s) 5.57 1.71 8.53 11.3 9.25 8.55 7.3 8.46 mat_vec (sek.).22.13.14.11.13.14.12.12 12

Przypisanie wątków, rdzeni i pamięci $likwid-topology CPU: Intel(R) Core(TM) i7-479 CPU @ 3.6GHz Intel Core Haswell processor ******************************************************************************** Hardware Thread Topology: Sockets: 1 Cores per socket: 4 Threads per core: 2 -------------------------------------------------------------------------------HWThread Thread Core Socket 1 1 2 2 3 3 4 1 5 1 1 6 1 2 7 1 3 Socket : (4152637) ******************************************************************************** Cache Topology: Level: 1 Size: 32 kb Cache groups: (4)(15)(26)(37) -------------------------------------------------------------------------------Level: 2 Size: 256 kb Cache groups: (4)(15)(26)(37) -------------------------------------------------------------------------------Level: 3 Size: 8 MB Cache groups: (4152637) ******************************************************************************** NUMA Topology: Domain: Processors: (4152637) 13

Test STREAM dla Intel Sandy Bridge Wpływ przypięcia (pinning) wątków do rdzeni 14

Roofline performance model Attainable GPLOPs/sec = Max ( Peak Memory BW Arithmetic Intensity, Peak FP Performance ) Przykłady obliczeń (BLAS 2, BLAS 3) 15

Roofline performance model 16

Systemy wieloprocesorowe Problem podstawowy: wielowątkowy dostęp do hierarchii pamięci (mikroprocesory wielordzeniowe) L1 prywatna dla procesora (rdzenia) L2 prywatna lub w pewien sposób współdzielona L3 wspólna dla mikroprocesora (jeśli jest) Problemy konkretne: spójność pamięci podręcznej wydajność dostępu minimalizacja liczby chybień false sharing i wspólna sterta dla wątków 17

Systemy wieloprocesorowe Problemy szeregowania zadań dla systemów wieloprocesorowych afiniczność i lokalność odniesień do pamięci sterowanie za pomocą np. numactl, sched_setaffinity, sched_getaffinity, zmiennych środowiskowych KMP_AFFINITY, GOMP_AFFINITY, opcji mpirun, mpiexec GOMP_AFFINITY=<proc_list>, np. [,1,2,3,4,...] KMP_AFFINITY="granularity=fine,proclist=[<proc_list>],explicit" podział zadań i iteracji pętli uwzględniający afiniczność Systemy NUMA zaleta: skalowalność przepustowości pamięci problemy: lokalne chybienia pamięci podręcznej odległe (zdalne, remote) chybienia pamięci podręcznej koszt false sharing 18

NUMA Architektura AMD Opteron 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 2

Programowanie procesorów wielordzeniowych Standardy programowania: wątki: systemowe, POSIX, w ramach języków programowania: Java, C++ dyrektywy programowania wielowątkowego: OpenMP, OpenACC specjalne środowiska: zarządzanie wątkami GPU realizującymi programy w specjalnych językach: CUDA, OpenCL specjalne języki programowania równoległego: Cilk, UPC, Ada, Erlang, C++AMP, Linda i wiele, wiele innych 21

Wydajność systemów z pamięcią wspólną Czas dostępu do danych prywatnych zależy od sprzętu Dostęp do danych wspólnych wymaga synchronizacji klasyczna synchronizacja zamki (muteksy), zmienne warunku operacje atomowe Operacje atomowe wspierane sprzętowo są najefektywniejszym sposobem synchronizacji implementacja zamków, zmiennych warunku korzysta z operacji atomowych operacje atomowe można bezpośrednio wykorzystywać w implementacji współbieżnych struktur danych Rozwijaną w ostatnich latach alternatywą jest korzystanie z pamięci transakcyjnej (na razie mało wydajne) 22

Wydajność systemów wielordzeniowych Narzut wykonania: procedury systemowe: tworzenie i zarządzanie wątkami synchronizacja współdzielenie zasobów procesora: pamięci podręczne (L2?, L3, TLB?) dostęp do pamięci głównej Wydajność wykonania równoległego może znacząco różnić się pomiędzy różnymi uruchomieniami tego samego kodu! 23

Modelowanie wydajności Określenie czasu wykonania T konkretnego programu, na konkretnym sprzęcie,dla konkretnego egzemplarza danych Czas wykonania można wyrazić wzorem: T = Tcomp + Tmem + Tnarzut Toverlap exec przybliżone oszacowania aproksymują pewne z powyższych wartości i pomijają pozostałe dwa typowe podejścia: T = Tcomp ; pozostałe pominięte (dla programów o exec wydajności ograniczanej przez procesor) Texec = Tmem ; pozostałe pominięte (dla programów o wydajności ograniczanej przez pamięć) 24

Modelowanie wydajności Jak uzyskać Tcomp i Tmem? wzór ogólny: T = 1 / wydajność wydajność może pochodzić z: analizy sprzętu (zazwyczaj zawyżona, pytanie o ile) (mikro)benchmarków muszą być reprezentatywne i dla sprzętu, i dla programu, i dla danych mnożenie macierz-macierz jest często wykorzystywanym benchmarkiem dla programów o wydajności ograniczanej przez procesor, a test STREAM dla programów o wydajności ograniczanej przez pamięć 25

Optymalizacja wydajności Wydajność w (mikro)benchmarkach zazwyczaj zakłada optymalną realizację operacji Jeśli czas wykonania znacząco odbiega od czasu przewidywanego przez model (wydajność znacząco odbiega od wydajności z testów) należy przeprowadzić optymalizację Optymalizacja polega na minimalizacji narzutu i maksymalizacji nakładania się poszczególnych operacji (operacje na liczbach całkowitych, zmiennoprzecinkowych, dostępy do pamięci) 26

Optymalizacja wydajności Optymalizacja poprzez usuwanie kolejnych przeszkód na drodze do wydajności wskazywanej przez testy i możliwości sprzętu nazywana jest optymalizacją wąskiego gardła (bottleneck optimization) sposób postępowania polega na wyodrębnieniu w kodzie fragmentów odpowiedzialnych za wydłużanie czasu wykonania (na podstawie profilu wykonania), a następnie na optymalizacji poprzez usuwanie narzutów i ewentualne zwiększanie współczynnika intensywności obliczeń (arithmetic intensity) 27

Pamięć w systemach wieloprocesorowych AK Działanie pamięci podręcznej: strategie utrzymywania zgodności pamięci podręcznej (cache coherence protocols) write through każdy zapis do pamięci podręcznej jest przenoszony do pamięci głównej copy back zapis do pamięci podręcznej jest przenoszony do pamięci głównej przy podmianie linii (linia musi wiedzieć czy była zmieniona) inne, bardziej złożone np. MESI 28

Protokoły zgodności pamięci podręcznej AK protokoły katalogowe (directory protocols) istnieje katalog z informacją o zawartości pamięci podręcznej i centralny sterownik katalogu pośredniczący w wymianie danych protokoły podglądania (snoopy protocols) procesory podglądają stan pamięci podręcznych i rozgłaszają zmiany zapis z aktualizacją (procesor dokonujący zmianę rozgłasza ją i wszystkie procesory aktualizują swoje pamięci podręczne) zapis z unieważnieniem (procesor dokonujący zmiany unieważnia zawartość pamięci podręcznych innych procesorów); przykład MESI 29

Protokół MESI AK Blok w pamięci podręcznej może być w jednym z czterech stanów: M (modified): zmodyfikowany w pamięci podręcznej, różny od odpowiedniego bloku w pamięci głównej E (exclusive): wyłącznie w jednej pamięci podręcznej, zawartość identyczna jak w pamięci głównej S (shared): w kilku pamięciach podręcznych, zawartość identyczna jak w pamięci głównej I (invalid): unieważniony przez zmiany dokonane w innej pamięci podręcznej 3