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

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

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

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

Numeryczna algebra liniowa

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

Problemy współbieżności

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

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

Programowanie procesorów graficznych GPGPU

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

Wstęp. Przetwarzanie współbieżne, równoległe i rozproszone

Nowoczesne technologie przetwarzania informacji

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

Algorytmy dla maszyny PRAM

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1

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.

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

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

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

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

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

Algorytmy i Struktury Danych

Programowanie współbieżne i rozproszone

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

Przetwarzanie Równoległe i Rozproszone

Klasyfikacje systemów komputerowych, modele złożoności algorytmów obliczeniowych

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

16. Taksonomia Flynn'a.

4. Procesy pojęcia podstawowe

Temat zajęć: Tworzenie i obsługa wątków.

Obliczenia Wysokiej Wydajności

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe

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

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

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

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

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

Przetwarzanie Równoległe i Rozproszone

Programowanie równoległe i rozproszone. W1. Wielowątkowość. Krzysztof Banaś Programowanie równoległe i rozproszone 1

i3: internet - infrastruktury - innowacje

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

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

Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1

w odróżnieniu od procesów współdzielą przestrzeń adresową mogą komunikować się za pomocą zmiennych globalnych

Programowanie kart graficznych. Sprzęt i obliczenia

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Zał nr 4 do ZW. Dla grupy kursów zaznaczyć kurs końcowy. Liczba punktów ECTS charakterze praktycznym (P)

Wielowątkowy serwer TCP

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1

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

Operacje grupowego przesyłania komunikatów

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC

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

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

Architektura komputerów

Metody optymalizacji soft-procesorów NIOS

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

Modelowanie i Programowanie Obiektowe

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

Podstawy programowania. Wprowadzenie

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

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

Ćwiczenie nr: 9 Obliczenia rozproszone MPI

Podstawy Informatyki Systemy sterowane przepływem argumentów

Równoległe algorytmy sortowania. Krzysztof Banaś Obliczenia równoległe 1

Wskaźniki w C. Anna Gogolińska

Wykorzystanie architektury Intel MIC w obliczeniach typu stencil

Zdalne wywoływanie procedur RPC 27. października Dariusz Wawrzyniak (IIPP) 1

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Języki i paradygmaty programowania 1 studia stacjonarne 2018/19. Lab 9. Tablice liczbowe cd,. Operacje na tablicach o dwóch indeksach.

Algorytmy numeryczne 1

Historia modeli programowania

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Wskaźniki. Informatyka

Wstęp do programowania

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

Algorytmy równoległe: prezentacja i ocena efektywności prostych algorytmów dla systemów równoległych

Wprowadzenie do szablonów szablony funkcji

5. Model komunikujących się procesów, komunikaty

Elementy składowe: Przenośność oprogramowania Model SPMD Szczegółowe wersje (bindings) dla różnych języków programowania

PARADYGMATY PROGRAMOWANIA Wykład 4

Szablony funkcji i szablony klas

Wprowadzenie do szablonów szablony funkcji

Wstęp. Historia i przykłady przetwarzania współbieżnego, równoległego i rozproszonego. Przetwarzanie współbieżne, równoległe i rozproszone

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

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy

C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Obliczenia Wysokiej Wydajności

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

Alternatywne modele programowania równoległego

Architektura mikroprocesorów TEO 2009/2010

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Wykład Ćwiczenia Laboratorium Projekt Seminarium

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

Transkrypt:

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

Metodologia programowania równoległego Przykłady podziałów zadania na podzadania: Podział ze względu na funkcje (functional decomposition): standardowe złożone aplikacje (np. z obsługą plików, korektą poprawności w trakcie pracy itp.) złożony problem optymalizacji Podział struktury danych (data decomposition) sortowanie tablic rozwiązywanie układów równań liniowych Podział w dziedzinie problemu (domain decomposition) symulacje zjawisk fizycznych w przestrzeni (wykorzystanie podziału geometrycznego geometric decomposition) rozwiązywanie układów równań liniowych Podział złożony, mający cechy i podziału funkcjonalnego i danych: przetwarzanie potokowe (np. sekwencji obrazów) Krzysztof Banaś Obliczenia równoległe 2

Metodologia programowania równoległego Klasyfikacja ze względu na mechanizmy programowe: MPMD (Multiple Program Multiple Data) każdy proces realizuje różny kod, związany z różnymi plikami binarnymi architekturą sprzętu jest zawsze MIMD odpowiada dekompozycji funkcjonalnej, ewentualnie dekompozycji złożonej koniecznym elementem jest komunikacja, dzięki której różne procesy uzyskują rozwiązanie pojedynczego zadania obliczeniowego implementacja jest dokonywana najczęściej w modelu z pamięcią rozproszoną za pomocą przesyłania komunikatów programowanie równoległe zbliża się w tym przypadku do programowania rozproszonego Krzysztof Banaś Obliczenia równoległe 3

Metodologia programowania równoległego Klasyfikacja ze względu na mechanizmy programowe: SPMD (Single Program Multiple Data) każdy proces (wątek) realizuje ten sam program (związany z tym samym plikiem binarnym) model bardzo uniwersalny, częściej wykorzystywany niż MPMD dla architektur SIMD oznacza wykonywanie tego samego kodu z synchronizacja sprzętową (w wariancie SIMT (karty graficzne) możliwe jest zróżnicowanie wykonywanego kodu realizowane poprzez serializację) dla architektur MIMD:» wątki mogą realizować ten sam kod, każdy wątek otrzymuje przydzieloną porcję danych na których operuje» wątki mogą realizować różne funkcje tego samego kodu lub różne ścieżki przechodzenia przez ten sam kod Krzysztof Banaś Obliczenia równoległe 4

Programowanie wielowątkowe W celu realizacji modelu SPMD można do wielu wątków wykonujących ten sam kod przesłać różne dane jako argumenty pierwotnie wywoływanej procedury częstym przypadkiem jest przesłanie identyfikatora wątku każdy wątek posiada indywidualny identyfikator i na jego podstawie może: zlokalizować dane, na których dokonuje przetwarzania dane[ f(my_id) ] wybrać ścieżkę wykonania programu if(my_id ==...){...} określić iteracje pętli, które ma wykonać for( i=f1(my_id); i< f2(my_id); i += f3(my_id) ){... } Komunikacja między wątkami odbywa się głównie za pomocą pamięci wspólnej Krzysztof Banaś Obliczenia równoległe 5

Metodologia programowania równoległego Kolejny możliwy podział związany z konkretnymi mechanizmami programowymi: równoległość zadań, task parallelism każdy wątek/proces otrzymuje do wykonania pewne zadanie, najczęściej funkcję w programie wątki mogą realizować tę samą funkcję, ale na innych danych lub różne funkcje przydział zadań może być statyczny lub dynamiczny, wykonanie jest najczęściej asynchroniczne równoległość wykonania pętli, loop parallelism każdy wątek/proces otrzymuje pewną liczbę iteracji pętli do wykonania każdy proces/wątek posiada własny indeks iteracji, który przyjmuje wartości z określonego podzbioru pełnego zbioru wartości indeksów dla pętli wykonanie jest najczęściej synchroniczne Krzysztof Banaś Obliczenia równoległe 6

Metodologia programowania równoległego Ważnym w dziedzinie przetwarzania równoległego jest pojęcie równoległości danych (data parallelism) w sensie węższym oznacza model programowania, w którym programista określa jawnie przydział danych procesom/wątkom oraz operację do wykonania na całości danych, natomiast konkretna realizacja obliczeń przez procesy/wątki, w tym konieczna synchronizacja i komunikacja, jest przeprowadzana przez środowisko wykonania, bez jawnego udziału programisty realizacją tego modelu są języki równoległości danych takie jak np. High Performance Fortran (HPF) w sensie szerszym oznacza model w którym podstawą zrównoleglenia jest podział (dekompozycja) danych, odpowiedni przydział danych wątkom/procesom oraz wykonanie zgodnie z zasadą właściciel przeprowadza obliczenia (owner computes) Krzysztof Banaś Obliczenia równoległe 7

Przykłady Algorytm mnożenia macierz wektor alternatywy dekompozycji danych implikacje w stosunku do algorytmu powiązanie dekompozycji i algorytmu ze sposobem przechowywania macierzy Modelowanie środowiska naturalnego Krzysztof Banaś Obliczenia równoległe 8

Metodologia programowania równoległego W przypadku modelu wykonania równoległego (w ramach konkretnych środowisk programowania równoległego) można rozważać model oparty na dekompozycji danych (data decomposition), jako alternatywę dla modelu opartego na równoległości sterowania (control decomposition) w modelu dekompozycji danych często wątek/procesor na podstawie swojego indeksu ustala dane, na których operuje, przy czym wszystkie wątki realizują ten sam kod w modelu dekompozycji sterowania często wątek na podstawie swojego indeksu ustala, którą ścieżkę w programie lub którą iterację w pętli powinien realizować poza czystymi algorytmami dekompozycji danych i sterowania, występuje wiele przypadków pośrednich (różne dane i częściowo różne ścieżki wykonania dla różnych wątków) Krzysztof Banaś Obliczenia równoległe 9

Podsumowanie Praktyczne alternatywy modelu programowania: programowanie sekwencyjne ze zrównolegleniem niejawnym: poprzez układ procesora superskalarnego poprzez automatyczny kompilator zrównoleglający programowanie w językach równoległości danych programowanie w modelu z pamięcią wspólną programowanie w modelu z przesyłaniem komunikatów programowanie w modelu przerzucenia (offload) części obliczeń na układ wspomagający (koprocesor, akcelerator) programowanie w rozmaitych modelach hybrydowych (łączących cechy modeli powyższych) Krzysztof Banaś Obliczenia równoległe 10

Prosty przykład #include<pthread.h> #define LICZBA 100 #define LICZBA_W 4 pthread_mutex_t muteks; int suma=0; pthread_t watki[liczba_w]; int main( int argc, char *argv[] ){ int i; indeksy[liczba_w]; for(i=0;i<liczba_w;i++) indeksy[i]=i; pthread_mutex_init( &muteks, NULL); for(i=0; i<liczba_w; i++ ) pthread_create( &watki[i], NULL, suma_w, (void *) &indeksy[i] ); for(i=0; i<liczba_w; i++ ) pthread_join( watki[i], NULL ); printf( suma = %d\n,suma); } Krzysztof Banaś Obliczenia równoległe 11

Prosty przykład void *suma_w( void *arg_wsk){ int i, moj_id, moja_suma=0; moj_id = *( (int *) arg_wsk ); j=liczba/liczba_w; for( i=j*moj_id+1; i<=j*(moj_id+1); i++){ moja_suma += i; } pthread_mutex_lock( &muteks ); suma += moja_suma; pthread_mutex_unlock( &muteks ); pthread_exit( (void *)0); } Krzysztof Banaś Obliczenia równoległe 12

Prosty przykład Prosty przykład z poprzednich slajdów łączy w sobie kilka wzorców, modeli, sposobów programowania: można go utworzyć na podstawie podziału w dziedzinie problemu lub podziału danych realizuje statyczną równoległość zadań realizuje wzorzec zarządca wykonawcy wykonanie odbywa się w modelu SPMD jest w rzeczywistości sposobem na zrównoleglenie pętli w środowiskach wielowątkowych Krzysztof Banaś Obliczenia równoległe 13