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



Podobne dokumenty
Tworzenie programów równoległych cd. 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

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

Numeryczna algebra liniowa

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

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

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

Programowanie procesorów graficznych GPGPU

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

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

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.

Nowoczesne technologie przetwarzania informacji

Problemy współbieżności

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

Przetwarzanie wielowątkowe przetwarzanie współbieżne. 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

Algorytmy i Struktury Danych

16. Taksonomia Flynn'a.

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

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

Przetwarzanie Równoległe i Rozproszone

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

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

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

4. Procesy pojęcia podstawowe

i3: internet - infrastruktury - innowacje

Zasady projektowania algorytmów równoległych

Programowanie współbieżne i rozproszone

Obliczenia Wysokiej Wydajności

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe

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

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

Historia modeli programowania

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

WPŁYW PROGRAMOWANIA RÓWNOLEGŁEGO NA WYDAJNOŚĆ PROGRAMU JAVY

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

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

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

Metody optymalizacji soft-procesorów NIOS

Programowanie systemów z pamięcią wspólną specyfikacja OpenMP. 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 równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

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

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

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

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

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

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

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

Przetwarzanie Równoległe i Rozproszone

Podstawy programowania. Wykład 1 Wstęp. Krzysztof Banaś Podstawy programowania 1

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

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

Wielowątkowy serwer TCP

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

Zasady projektowania algorytmów równoległych

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

Obliczenia Wysokiej Wydajności

Operacje grupowego przesyłania komunikatów

Wykorzystanie architektury Intel MIC w obliczeniach typu stencil

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

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

PRZEWODNIK PO PRZEDMIOCIE

Poziom kwalifikacji: I stopnia. Liczba godzin/tydzień: 2W E, 2L PRZEWODNIK PO PRZEDMIOCIE

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

Modelowanie i Programowanie Obiektowe

Programowanie kart graficznych. Sprzęt i obliczenia

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

Ćwiczenie nr: 9 Obliczenia rozproszone MPI

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

Algorytmy numeryczne 1

Architektura mikroprocesorów TEO 2009/2010

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

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

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

Wykład Ćwiczenia Laboratorium Projekt Seminarium

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

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

Podstawy programowania. Wprowadzenie

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

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

6. Algorytmy ochrony przed zagłodzeniem dla systemów Linux i Windows NT.

Sortowanie przez scalanie

Szablony funkcji i szablony klas

Podstawy Informatyki Systemy sterowane przepływem argumentów

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

SYSTEMY OPERACYJNE PROCESORÓW SYGNAŁOWYCH

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

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

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

OBC01/TOPMOB Projektowanie w języku Objective-C

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

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

Zagadnienia egzaminacyjne INFORMATYKA. Stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

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

Transkrypt:

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

Tworzenie programów równoległych W procesie tworzenia programów równoległych istnieją dwa kroki o zasadniczym znaczeniu: wykrycie dostępnej współbieżności w trakcie realizacji programu określenie koniecznej synchronizacji lub wymiany komunikatów pomiędzy procesami lub wątkami realizującymi program Pierwszy z tych kroków często ma charakter bardziej twórczy, drugi bardziej techniczny (zakłada znajomość modelu programowania) Jednym z najważniejszych wymagań stawianych programom równoległym jest przenośność możliwość uruchomienia na maszynie o dowolnej liczbie procesorów/rdzeni Krzysztof Banaś Obliczenia równoległe 2

Przydatnym sposobem ujęcia metodologii programowania równoległego jest wyróżnienie pięciu podstawowych zadań, które muszą zostać zrealizowane przy tworzeniu programu równoległego: podział (dekompozycja) zadania obliczeniowego na podzadania odwzorowanie zadań na procesy i wątki oraz dalej na elementy przetwarzania: węzły, multi procesory, procesory (rdzenie) podział (dystrybucja) danych pomiędzy elementy pamięci związane z elementami przetwarzania (uwzględniając hierarchię pamięci) określenie koniecznej wymiany danych między procesami (wątkami) oraz odwzorowanie jej na sieć połączeń między procesorami (rdzeniami) określenie koniecznej synchronizacji między zadaniami (=wątkami (procesami) ) Krzysztof Banaś Obliczenia równoległe 3

Wygodnym sposobem uporządkowania procesu tworzenia programów równoległych jest ujęcie go w ramy specyficznej metodologii Jedną z takich metodologii jest PCAM (Foster 1985) Kolejne litery oznaczają kroki przy tworzeniu programu: P partition, podział zadania na podzadania C communicate, określenie niezbędnej komunikacji, podział danych na wspólne i prywatne, określenie sposobu korzystania z danych, synchronizacja operacji na danych A agglomerate, analiza wariantów podziału M map, uwzględnienie ostatecznej implementacji, odwzorowania na architekturę sprzętu Pierwsze dwa kroki zmierzają do stworzenia poprawnego programu równoległego, kolejne dwa do jego optymalizacji Krzysztof Banaś Obliczenia równoległe 4

Wzorce programowania równoległego Zarządca wykonawcy (manager worker, master slave) Dziel i rządź (divide and conquer) i inne wersje dynamicznego, rekursywnego zarządzania obliczeniami (recursive splitting np. fork join) Zrównoleglenie pętli (loop parallelism) Przetwarzanie potokowe (pipelining) Agenci (software agents), aktorzy (actors), przetwarzanie sterowane zdarzeniami (discrete event) Map Reduce i wiele innych Wzorce są ogólnymi wskazówkami rozwiązania problemu dekompozycji zadania na równoległe pod zadania, konkretne programy mogą realizować wiele, często odpowiednio zmodyfikowanych, wzorców Krzysztof Banaś Obliczenia równoległe 5

Krzysztof Banaś Obliczenia równoległe 6

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 7

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 8

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, znacznie 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 9

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 10

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 11

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 12

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 13

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 cechu modeli powyższych) Krzysztof Banaś Obliczenia równoległe 14

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 15

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 16

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 17