Tworzenie programów równoległych. 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 cd. Krzysztof Banaś Obliczenia równoległe 1

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

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

Numeryczna algebra liniowa

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

Nowoczesne technologie przetwarzania informacji

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

Programowanie procesorów graficznych GPGPU

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

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.

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

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

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

16. Taksonomia Flynn'a.

Problemy współbieżności

Algorytmy i Struktury Danych

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

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

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

Historia modeli programowania

Algorytmy dla maszyny PRAM

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

Przetwarzanie Równoległe i Rozproszone

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

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

4. Procesy pojęcia podstawowe

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

4. Procesy pojęcia podstawowe

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

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

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

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

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

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

Programowanie współbieżne i rozproszone

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

i3: internet - infrastruktury - innowacje

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

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

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

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

Szablony funkcji i klas (templates)

Metody optymalizacji soft-procesorów NIOS

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

SYSTEMY OPERACYJNE WYKLAD 6 - wątki

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

PRZEWODNIK PO PRZEDMIOCIE

4. Procesy pojęcia podstawowe

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

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

Przetwarzanie Równoległe i Rozproszone

Wykład Ćwiczenia Laboratorium Projekt Seminarium

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

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

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

Podstawy programowania. Wprowadzenie

Operacje grupowego przesyłania komunikatów

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

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Zapisywanie algorytmów w języku programowania

Obliczenia Wysokiej Wydajności

Zasady projektowania algorytmów równoległych

Architektura mikroprocesorów TEO 2009/2010

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

Zadania badawcze prowadzone przez Zakład Technik Programowania:

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

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

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

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

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

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1

Wielowątkowy serwer TCP

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

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC

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

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

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

Programowanie kart graficznych. Sprzęt i obliczenia

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

Zaawansowane programowanie w C++ (PCP)

Grupy pytań na egzamin inżynierski na kierunku Informatyka

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu.

Modelowanie i Programowanie Obiektowe

Sortowanie przez scalanie

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

ξ II.UWr Wprowadzenie do STM

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

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

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

Zdalne wywoływanie procedur RPC 27. października 2010

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

Wyklad 11 Języki programowania równoległego

Wstęp do programowania

Wątki w Javie. Piotr Tokarski

Mikroprocesory rodziny INTEL 80x86

Podstawy Informatyki Systemy sterowane przepływem argumentów

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

Wzorce programowania równoległego Zarządca wykonawcy (manager worker, master slave), często realizowane za pomocą puli wątków (thread pool) Dziel i rządź (divide and conquer) i inne wersje dynamicznego, rekursywnego zarządzania obliczeniami (np. fork join) Zrównoleglenie pętli (loop parallelism) Przetwarzanie potokowe (pipelining) Agenci, aktorzy, przetwarzanie sterowane zdarzeniami 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 3

Krzysztof Banaś Obliczenia równoległe 4

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 5

Innym 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 6

Przykłady podziałów zadania na podzadania: Podział ze względu na funkcje, zadania (functional decomposition, task decomposition): modelowanie środowiska naturalnego 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 rozwiązywanie układów równań liniowych Krzysztof Banaś Obliczenia równoległe 7

Klasyfikacja ze względu na mechanizmy programowe: MPMD (Multiple Program Multiple Data) każdy proces (wątek) realizuje różny kod (najczęściej związany z różnymi plikami binarnymi) najlepiej odpowiada pojęciu równoległości zadań (task parallelism) koniecznym elementem jest komunikacja, dzięki której różne procesy (wątki) uzyskują rozwiązanie pojedynczego zadania obliczeniowego w przypadku implementacji z przesyłaniem komunikatów programowanie równoległe zbliża się do programowania rozproszonego SPMD (Single Program Multiple Data) każdy proces (wątek) realizuje ten sam program (związany z tym samym plikiem binarnym) Krzysztof Banaś Obliczenia równoległe 8

Model SPMD jest 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 z pamięcią wspólną każdy wątek może realizować różne ścieżki wykonania w kodzie dla architektur MIMD z pamięcią rozproszoną każdy proces wykonuje ten sam kod binarny mechanizmem wprowadzania zróżnicowania danych na których operuje wątek/proces w każdym z powyższych przypadków może być numerowanie procesów/wątków można korzystać także z innych mechanizmów, związanych z konkretnymi środowiskami programowania i wykonania Krzysztof Banaś Obliczenia równoległe 9

Z praktycznego punktu widzenia często rozróżnia się typy przetwarzania równoległego związane z konkretnymi mechanizmami programowymi równoległość zadań, task parallelism każdy wątek/proces otrzymuje do wykonania pewną funkcję przydział zadań może być statyczny lub dynamiczny, wykonanie może być synchroniczne lub asynchroniczne równoległość wykonania pętli, loop parallelism każdy wątek/proces otrzymuje pewną liczbę iteracji pętli do wykonania w modelu takim 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 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

Metodologia tworzenia programów równoległych może wynikać z: przyjętej docelowej architektury sprzętu na którym działać będzie oprogramowanie zakresu podejmowanych zadań: zrównoleglenie istniejącego kodu zrównoleglenie algorytmu opracowanie nowego, równoległego algorytmu i programu rozwiązującego pewne zadanie Krzysztof Banaś Obliczenia równoległe 12

Punkt wyjścia 1 algorytm (lub program) sekwencyjny jeżeli do dyspozycji mamy algorytm lub program sekwencyjny, a nie mamy możliwości lub chęci analizy samego algorytmu (lub ogólniej metody rozwiązywania postawionego problemu) i jednocześnie godzimy się na fakt nieprzenośności programu na platformy bez pamięci wspólnej korzystamy z równoległości na poziomie wątków: za pomocą odpowiednich narzędzi rozdzielamy sekwencje instrukcji (np. kolejne iteracje pętli lub szereg kolejnych wywołań procedur) pomiędzy wątki Krzysztof Banaś Obliczenia równoległe 13

Punkt wyjścia 2 problem do rozwiązania: dokonujemy analizy problemu starając się podzielić zadanie obliczeniowe na podzadania możliwe do wykonania równoległego: podział funkcji (functional decomposition) podział struktury danych (data decomposition) podział obszaru problemowego (domain decomposition) określamy konieczną wymianę informacji między podzadaniami w celu poprawnej i efektywnej realizacji obliczeń wyróżniamy dane współdzielone globalnie i między grupami podzadań prywatne dla podzadań Krzysztof Banaś Obliczenia równoległe 14

Punkt wyjścia 2 problem do rozwiązania(cd.): wybieramy model do programowania i wykonania programu: równoległości z pamięcią wspólną równoległości z przesyłaniem komunikatów hybrydowy dobieramy stosowne narzędzia, dopasowując je np. do platformy sprzętowej (środowiska programowania HPF, OpenMP, MPI, OpenCL, wielowątkowość wbudowana w języki programowania lub inne) implementując problem dokonujemy ostatecznego odwzorowania obliczeń na architekturę systemu komputerowego i optymalizacji pod względem wybranych kryteriów Krzysztof Banaś Obliczenia równoległe 15

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 hybrydowym Krzysztof Banaś Obliczenia równoległe 16

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 17

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 18

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 19