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

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

Problemy współbieżności

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

Numeryczna algebra liniowa

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

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

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

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

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

Algorytmy i Struktury Danych

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

Wielowątkowy serwer TCP

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

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

Programowanie procesorów graficznych GPGPU

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

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

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

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

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

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

Dzisiejszy wykład. Klasa string. wersja prosta wersja ze zliczaniem odwołań. Wyjątki Specyfikator volatile Semafory

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.

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

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

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

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

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

INFORMATYKA POZIOM ROZSZERZONY

INFORMATYKA POZIOM ROZSZERZONY

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

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

Programowanie Równoległe Wykład 4. MPI - Message Passing Interface. Maciej Matyka Instytut Fizyki Teoretycznej

PRZEWODNIK PO PRZEDMIOCIE

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

Zadania badawcze prowadzone przez Zakład Technik Programowania:

Operacje grupowego przesyłania komunikatów

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

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

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

i3: internet - infrastruktury - innowacje

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

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

EGZAMIN MATURALNY 2011 INFORMATYKA

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

Przykładowe sprawozdanie. Jan Pustelnik

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

Nowoczesne technologie przetwarzania informacji

Zapisywanie algorytmów w języku programowania

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

Szablony funkcji i klas (templates)

Wsparcie dla OpenMP w kompilatorze GNU GCC Krzysztof Lamorski Katedra Informatyki, PWSZ Chełm

Podstawy Programowania Algorytmy i programowanie

4. Procesy pojęcia podstawowe

Współbieżność i równoległość w środowiskach obiektowych. 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

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Moc płynąca z kart graficznych

Podstawy programowania. Wprowadzenie

Efekty kształcenia dla kierunku studiów INFORMATYKA, Absolwent studiów I stopnia kierunku Informatyka WIEDZA

Aplikacje w Javie- wykład 11 Wątki-podstawy

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

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

Technika mikroprocesorowa. Systemy operacyjne czasu rzeczywistego

4. Procesy pojęcia podstawowe

Historia modeli programowania

Szablony funkcji i szablony klas

Podstawy programowania współbieżnego. 1. Wprowadzenie. 2. Podstawowe pojęcia

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

Plan wykładu. Obliczenia równoległe w zagadnieniach inżynierskich. Wykład 1 p. Wzajemne wykluczanie. Procesy współbieżne

Tablice, funkcje - wprowadzenie

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

1. Tworzenie nowego projektu.

Wskaźniki w C. Anna Gogolińska

Wykład 1 Wprowadzenie do algorytmów. Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami.

Architektury systemów równoległych

Tablice deklaracja, reprezentacja wewnętrzna

KIERUNKOWE EFEKTY KSZTAŁCENIA

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

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

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

Katedra Mikroelektroniki i Technik Informatycznych

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

Mariusz Rudnicki PROGRAMOWANIE WSPÓŁBIEŻNE I SYSTEMY CZASU RZECZYWISTEGO CZ.4

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

PROGRAMOWALNE STEROWNIKI LOGICZNE

Sortowanie przez scalanie

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

Wstęp do programowania

KIERUNKOWE EFEKTY KSZTAŁCENIA

Okręgowa Komisja Egzaminacyjna w Krakowie 1

Wprowadzenie do szablonów szablony funkcji

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

Field of study: Computational Engineering Study level: First-cycle studies Form and type of study: Full-time studies. Auditorium classes.

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) Sposób realizacji tych kroków może zależeć od organizacji procesu tworzenia programu równoległego Krzysztof Banaś Obliczenia równoległe 2

Metodologia programowania równoległego 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 podazadania C communicate, określenie niezbędnej komunikacji 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 3

Metodologia programowania równoległego Przykłady podziałów zadania na podzadania: Podział ze względu na funkcje ( funkcjonalny ): modelowanie środowiska naturalnego złożony problem optymalizacji Podział struktury danych sortowanie tablic rozwiązywanie układów równań liniowych Podział w dziedzinie problemu symulacje zjawisk fizycznych w przestrzeni rozwiązywanie układów równań liniowych Krzysztof Banaś Obliczenia równoległe 4

Metodologia programowania równoległego 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 5

Metodologia programowania równoległego 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 6

Metodologia programowania równoległego 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ń Krzysztof Banaś Obliczenia równoległe 7

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

Podsumowanie Praktyczne alternatywy modelu programowania: programowanie sekwencyjne ze zrównolegleniem niejawnym: poprzez układ procesora superskalarnego poprzez automatyczny kompilator zrównoleglający programowanie w modelu 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 9

Wykorzystanie muteksów #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 10

Wykorzystanie muteksów 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 11