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

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

Alternatywne modele programowania równoległego

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

Programowanie procesorów graficznych GPGPU

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

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

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

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

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

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

Przetwarzanie Równoległe i Rozproszone

Numeryczna algebra liniowa

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

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

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

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

i3: internet - infrastruktury - innowacje

Algorytmy i Struktury Danych

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

Nowoczesne technologie przetwarzania informacji

Moc płynąca z kart graficznych

CUDA część 1. platforma GPGPU w obliczeniach naukowych. Maciej Matyka

Obliczenia Wysokiej Wydajności

Programowanie kart graficznych

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

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

Przetwarzanie Równoległe i Rozproszone

Obliczenia Wysokiej Wydajności

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

16. Taksonomia Flynn'a.

Programowanie procesorów graficznych GPGPU

Programowanie systemów z pamięcią wspólną specyfikacja OpenMP. Krzysztof Banaś Obliczenia równoległe 1

Numeryczna algebra liniowa. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

EFEKTYWNOŚĆ MNOŻENIA MACIERZY W SYSTEMACH Z PAMIĘCIĄ WSPÓŁDZIELONĄ

ANALIZA EFEKTYWNOŚCI MNOŻENIA MACIERZY W SYSTEMACH Z PAMIĘCIĄ WSPÓŁDZIELONĄ

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Programowanie kart graficznych

Tesla. Architektura Fermi

Programowanie Współbieżne

Jak ujarzmić hydrę czyli programowanie równoległe w Javie. dr hab. Piotr Bała, prof. UW ICM Uniwersytet Warszawski

61 Topologie wirtualne

Operacje grupowego przesyłania komunikatów. Krzysztof Banaś Obliczenia równoległe 1

Programowanie aplikacji równoległych i rozproszonych

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

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

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

Algorytmy dla maszyny PRAM

CUDA. cudniejsze przyk ady

Wykorzystanie architektury Intel MIC w obliczeniach typu stencil

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

HPC na biurku. Wojciech De bski

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

Programowanie w modelu przesyłania komunikatów specyfikacja MPI, cd. Krzysztof Banaś Obliczenia równoległe 1

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

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

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system.

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

Algorytmy numeryczne 1

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Podstawy Informatyki Systemy sterowane przepływem argumentów

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

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

Programowanie współbieżne i rozproszone

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII

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

Skalowalność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012

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

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza i obróbka obrazu

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Wstęp. Przetwarzanie równoległe. Krzysztof Banaś Obliczenia równoległe 1

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

Optymalizacja skalarna. Piotr Bała. Wykład wygłoszony w ICM w czercu 2000

MATERIAŁY POMOCNICZE DO LABORATORIUM Z PRZETWARZANIA RÓWNOLEGŁEGO KWIECIEŃ 2018

CUDA jako platforma GPGPU w obliczeniach naukowych

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

Programowanie Rozproszone i Równoległe

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

Równoległość i współbieżność

Równoległość i współbieżność

Programowanie procesorów graficznych do obliczeń ogólnego przeznaczenia GPGPU

Budowa i użytkowanie klastrów w opaciu o układy Cell BE oraz GPU

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Komputerowe Obliczenia Równoległe: Wstęp do OpenMP i MPI

dr inż. Jarosław Forenc

Klasyfikacja systemów komputerowych. Architektura von Neumanna Architektura harwardzka Zmodyfikowana architektura harwardzka. dr inż.

Wskaźniki w C. Anna Gogolińska

O superkomputerach. Marek Grabowski

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

System operacyjny MACH

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

Operacje grupowego przesyłania komunikatów

Wprowadzenie do programowania w środowisku CUDA. Środowisko CUDA

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

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Programowanie współbieżne i rozproszone

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

Podstawy programowania w języku C

Raport Hurtownie Danych

Karty graficzne możemy podzielić na:

Transkrypt:

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

Model równoległości danych Model SPMD (pierwotnie dla maszyn SIMD) Zrównoleglenie poprzez przypisanie danych poszczególnym procesorom Wymiana informacji pomiędzy procesorami bez jawnego sterowania przez programistę Implementacja powinna umożliwiać efektywną realizację programów, tak dla systemów z pamięcią wspólną, jak i dla środowisk przesyłania komunikatów bez pamięci wspólnej Realizacja powyższych ambitnych celów jest na tyle trudna, że model nie doczekał się jeszcze rozpowszechnionych implementacji ogólnego przeznaczenia Krzysztof Banaś Obliczenia równoległe 2

High Performance Fortran Specyfikacja nieformalny standard Rozszerzenie Fortranu 95 Realizacja modelu programowania z równoległością danych, głównie dla operacji wektorowych i macierzowych Rozszerzenia w postaci dyrektyw kompilatora uzupełniających standardowe instrukcje Fortranu Z założenia ma udostępniać model programowania prostszy niż przesyłanie komunikatów i równie efektywny Krzysztof Banaś Obliczenia równoległe 3

Fortran 95 Specyfika Fortranu 95 wiąże się z rozbudowanymi operacjami na wektorach i macierzach (tablicach wielowymiarowych): deklaracje dopuszczają macierze wielowymiarowe: REAL, DIMENSION(3,4):: A, B, C zakres poszczególnych indeksów określa kształt macierzy istnieją zdefiniowane operacje dotyczące wektorów i macierzy (iloczyn, suma, itp) oraz pętle operujące na wszystkich lub wybranych elementach wektorów lub macierzy Krzysztof Banaś Obliczenia równoległe 4

Fortran 95 cd. operacje na wektorach i macierzach: dopuszczalne jest odnoszenie się do wybranych fragmentów wektorów i macierzy (każdy fragment ma swój kształt i może być użyty w odpowiednich operacjach), np.: AJ(1:3, 1:3) = OUGH(4, 3:5, 4:8:2) w pętlach wektorowych można stosować maskowanie za pomocą operacji logicznych lub wektorów o wartościach logicznych: WHERE( AJ.NE.0 ) A(1:3) = 1/A(1:3) istnieje wiele wektorowych procedur bibliotecznych, np. SUM, PRODUCT, MINVAL, MAXVAL, itp. Krzysztof Banaś Obliczenia równoległe 5

High Performance Fortran Dyrektywy określające ułożenie procesorów:!hpf$!hpf$!hpf$ PROCESSORS, DIMENSION(3,4):: P1 PROCESSORS, DIMENSION(2,6):: P2 PROCESSORS, DIMENSION(12):: P3!HPF$ PROCESSORS, DIMENSION(2,2,3):: P4 W jednym programie może istnieć wiele zdefiniowanych układów procesorów, wykorzystywanych w różnych miejscach do realizacji różnych operacji Krzysztof Banaś Obliczenia równoległe 6

High Performance Fortran Przypisanie (dystrybucja) danych odbywa się za pomocą dyrektywy DISTRIBUTE, np.:!hpf$ PROCESSORS, DIMENSION(4):: P REAL, DIMENSION(17):: T1, T2!HPF$ DISTRIBUTE T1(BLOCK) ONTO P!HPF$ DISTRIBUTE T1(CYCLIC) ONTO P!HPF$ DISTRIBUTE T1( CYCLIC(3) ) ONTO P określenie BLOCK (lub BLOCK(n) ) oznacza podział tablicy na bloki przypisywane kolejnym procesorom (n nie może być za małe) określenie CYCLIC (lub CYCLIC(n) ) oznacza przypisywanie kolejnych wyrazów tablicy (kolejnych n-tek wyrazów tablicy) kolejnym procesorom z okresowym zawijaniem Krzysztof Banaś Obliczenia równoległe 7

Krzysztof Banaś Obliczenia równoległe 8

High Performance Fortran Dystrybucja tablic wielowymiarowych odbywa się odrębnie dla każdego wymiaru Liczba wymiarów podlegających dystrybucji musi być równa liczbie wymiarów układu procesorów!hpf$ PROCESSORS, DIMENSION(2,2):: P1!HPF$ PROCESSORS, DIMENSION(4):: P2 REAL, DIMENSION(8,8):: T1!HPF$ DISTRIBUTE T1(BLOCK,BLOCK) ONTO P1!HPF$ DISTRIBUTE T1(CYCLIC,CYCLIC) ONTO P1!HPF$ DISTRIBUTE T1(BLOCK,CYCLIC) ONTO P1!HPF$ DISTRIBUTE T1(*,CYCLIC) ONTO P2 Krzysztof Banaś Obliczenia równoległe 9

High Performance Fortran Dla uzyskania wysokiej wydajności obliczeń (minimalizacji komunikacji międzyprocesorowej) dystrybucja niektórych tablic jest przeprowadzana zgodnie z dystrybucją innych przez wykorzystanie dyrektywy ALIGN:!HPF$ ALIGN A(:) WITH B(:)!HPF$ ALIGN C(i,j) WITH D(j,i)!HPF$ ALIGN C(*,j) WITH A(j) // zwijanie wymiaru!hpf$ ALIGN B(j) WITH D(j,*) // powielanie wyrazów Wyrównanie może być zdefiniowane dla pustego wzorca (template) zadeklarowanego tak jak rzeczywiste tablice!hpf$ TEMPLATE T(4,5) Krzysztof Banaś Obliczenia równoległe 10

High Performance Fortran Wykonanie równoległe odbywa się poprzez realizację: standardowych operacji wektorowych Fortranu 95 A+B, A*B, A-(B*C) operacje dozwolone dla macierzy zgodnych (conformable) pętli operujących na wszystkich elementach macierzy: FORALL ( i=1..n, j=1..m, A[i,j].NE.0 ) A(i,j) = 1/A(i,j) Równoległość jest uzyskiwana niejawnie programista nie określa, które operacje są wykonywane na konkretnym procesorze Krzysztof Banaś Obliczenia równoległe 11

High Performance Fortran Przykład: dekompozycja LU macierzy A Krzysztof Banaś Obliczenia równoległe 12

Model DSM/PGAS Model programowania z rozproszoną pamięcią wspólną (DSM distributed shared memory) (inna nazwa PGAS, partitioned global adress space, dzielona globalna przestrzeń adresowa) Krzysztof Banaś Obliczenia równoległe 13

Model DSM/PGAS Idee rozwijane od wielu lat w językach takich jak CoArray Fortran Unified Parallel C inne Przystosowane do maszyn NUMA jawna kontrola nad przyporządkowaniem danych do wątków (pojęcie afiniczności) możliwość optymalizacji trudność synchronizacji i utrzymania zgodności przy dostępach do pamięci wspólnej Wzrost zainteresowania w momencie popularyzacji systemów wieloprocesorowych i, w dalszej perspektywie, procesorów wielordzeniowych o architekturze NUMA Krzysztof Banaś Obliczenia równoległe 14

Unified Parallel C UPC (Unified Parallel C) rozszerzenie języka C nowe słowa kluczowe zestaw standardowych procedur bibliotecznych m.in. operacje komunikacji grupowej model programowania DSM/PGAS (distributed shared memory, partitioned global adress space) model programowania SPMD specyfikacja jest modyfikowana (1.0 2001, 1.1 2003, 1.2 2005) szereg implementacji (Cray, HP, UCB, GWU, MTU i inne) środowiska tworzenia kodu debuggery, analizatory, itp. Krzysztof Banaś Obliczenia równoległe 15

Unified Parallel C Sterowanie wykonaniem: THREADS liczba wątków MYTHREAD identyfikator (ranga) wątku klasyczny model (podobnie jak w MPI) polecenie upc_forall (podobnie jak pętla równoległa w OpenMP) określenie liczby wątków w trakcie kompilacji (nowość!) lub w momencie uruchamiania programu bariery (w postaci procedur blokujących i nieblokujących) zamki (podobnie jak mutex y) synchronizacja związana z dostępem do zmiennych wspólnych (konieczność utrzymania zgodności) Krzysztof Banaś Obliczenia równoległe 16

Unified Parallel C Zarządzanie pamięcią (dostęp do zmiennych): zmienne lokalne dostępne wątkowi właścicielowi zmienne globalne dostępne wszystkim, afiniczność Krzysztof Banaś Obliczenia równoległe 17

UPC Słowo kluczowe shared deklaracja umieszczenia zmiennej lub tablicy w pamięci wspólnej afiniczność każdego elementu do pojedynczego wątku Krzysztof Banaś Obliczenia równoległe 18

UPC Rozkład tablic wielowymiarowych oparty jest na standardowym dla C rozłożeniu elementów (wierszami) Krzysztof Banaś Obliczenia równoległe 19

UPC Poza domyślnym rozkładem tablic (po jednym elemencie) można wprowadzić rozkład blokami Krzysztof Banaś Obliczenia równoległe 20

UPC Standardowe procedury języka umożliwiają kopiowanie danych z obszaru wspólnego do obszarów prywatnych wątków Istnieją procedury umożliwiające dynamiczna alokację tablic w obszarze pamięci wspólnej Wskaźniki do zmiennych mogą być: prywatne pokazują na elementy prywatne lub elementy z obszaru wspólnego o powinowactwie z wątkiem posiadającym wskaźnik typu pointer to shared wskazują na elementy w pamięci wspólnej Krzysztof Banaś Obliczenia równoległe 21

UPC Krzysztof Banaś Obliczenia równoległe 22

UPC Równoległa pętla for affinity oznacza powinowactwo dla każdej z iteracji: jeśli jest liczbą związaną z indeksem pętli, iteracja jest przydzielana wątkowi: affinity@threads jeśli odnosi się do egzemplarza danych (ewentualnie także zależnego od indeksu pętli), iteracja jest przydzielana wątkowi posiadającemu powinowactwo do tego egzemplarza Krzysztof Banaś Obliczenia równoległe 23

UPC Dwa przykłady skutkujące tym samym podziałem iteracji pomiędzy wątki: Krzysztof Banaś Obliczenia równoległe 24

UPC Dwa przykłady skutkujące tym samym podziałem iteracji pomiędzy wątki: shared [100/THREADS] int a[100], b[100], c[100]; int i; upc_forall(i=0; i<100; i++; (i*threads)/100 ){ a[i] = b[i] + c[i]; } shared [100/THREADS] int a[100], b[100], c[100]; int i; upc_forall(i=0; i<100; i++; &a[i] ){ a[i] = b[i] + c[i]; } Krzysztof Banaś Obliczenia równoległe 25

UPC Przykład mnożenie macierz wektor w UPC: Krzysztof Banaś Obliczenia równoległe 26

GPGPU Historia: lata 80 te popularyzacja systemów i programów z graficznym interfejsem specjalistyczne układy do przetwarzania grafiki 2D lata 90 te standaryzacja potoku przetwarzania grafiki 3D (OpenGL, DirectX) vertex shaders pixel shaders procesory graficzne 3D XXI wiek programowalne układy graficzne (programmable shaders) język Cg początek GPGPU Krzysztof Banaś Obliczenia równoległe 27

GPGPU Listopad 2006: architektura Tesla ujednolicona architektura, zamiast pixel shaders i vertex shaders standardowe skalarne procesory (nazywane obecnie rdzeniami CUDA CUDA cores ) procesor G80 karta graficzna NVIDIA GeForce 8800 model programowania CUDA (Compute Unified Device Architecture) środowisko programowania C for CUDA Krzysztof Banaś Obliczenia równoległe 28

GPGPU Krzysztof Banaś Obliczenia równoległe 29

Architektura procesora G80 Krzysztof Banaś Obliczenia równoległe 30

Dalszy rozwój Platformy GPGPU innych producentów AMD (ATI Radeon) CtM, Stream, Brook IBM (PowerXCell) Cell SDK Rozwój architektur NVIDIA Fermi, Kepler Środowiska programowania OpenCL OpenACC, C++AMP, Renderscript Wzrost wydajności Krzysztof Banaś Obliczenia równoległe 31

GPGPU Krzysztof Banaś Obliczenia równoległe 32

Model programowania (OpenCL) Pojęcia: kernel program realizowany przez urządzenie OpenCL wątek (work item) rdzeń (processing element): zazwyczaj jeden wątek wykonywany przez jeden rdzeń (choć może być wykonywany przez kilka rdzeni) grupa wątków (work group) jednostka obliczeniowa (compute unit): grupa wątków wykonuje obliczenia na jednej jednostce obliczeniowej [grupa wątków może (a często nawet powinna) mieć więcej wątków niż rdzeni w jednostce obliczeniowej, wtedy grupa dzielona jest na podgrupy, wavefronts, wątków wykonywanych jednocześnie w modelu SIMD] przestrzeń wątków urządzenie: wszystkie watki z przestrzeni realizują zlecony kernel na urządzeniu Krzysztof Banaś Obliczenia równoległe 33

Model pamięci OpenCl Krzysztof Banaś Obliczenia równoległe 34

Przebieg obliczeń Alokacja i inicjowanie pamięci na urządzeniu Przesłanie kernela do urządzenia w OpenCL można dokonywać w locie kompilacji kodu z dostarczanych źródeł Zlecenie wykonania obliczeń Kopiowanie danych z pamięci urządzenia Dodatkowo OpenCL umożliwia realizacje fazy wstępnej, w której pobiera sie dane o środowisku wykonania i dostosowuje wykonywany program do konkretnego środowiska (urządzenia) Krzysztof Banaś Obliczenia równoległe 35

Przebieg obliczeń Model wykonania: synchroniczny data parallel SPMD (wykorzystanie identyfikatora wątku do podziału zadań) asynchroniczny task parallel Komunikacja: poprzez argumenty procedur poprzez pamięć wspólną Synchronizacja bariery Krzysztof Banaś Obliczenia równoległe 36

Przykład kod CPU iloczyn macierz wektor kod GPU (CUDA) iloczyn macierz wektor Krzysztof Banaś Obliczenia równoległe 37

Problemy GPGPU GPU wymagają specyficznych algorytmów masowa wielowątkowość zgodny dostęp do obszarów pamięci wspólnej mało komunikacji, synchronizacji Aplikacje dostosowane do GPU zyskują wiele Jest wiele aplikacji, które zyskują mało lub nic Krzysztof Banaś Obliczenia równoległe 38