• Nie Znaleziono Wyników

czyli programowanie równoległe przy użyciu interfejsu programowania aplikacji (API) Open Multi-Processing

N/A
N/A
Protected

Academic year: 2021

Share "czyli programowanie równoległe przy użyciu interfejsu programowania aplikacji (API) Open Multi-Processing"

Copied!
13
0
0

Pełen tekst

(1)

czyli programowanie równoległe

przy użyciu interfejsu programowania aplikacji (API) Open Multi-Processing

Bogumił Konopka W-11/I-21

12.04.2010

Seminarium Grupy Bioinformatyki i Biofizyki Nanoporów

Cz. II

(2)

O czym już było?

Co to jest wielowątkowość?

Jakie są rodzaje segmentów równoległych?

(3)

O czym już było?

Co to jest wielowątkowość?

Jakie są rodzaje segmentów równoległych?

Data Parallelism Functional Parallelism

(4)

O czym już było?

Jakie rodzaje (ale nie typy!) zmiennych są do dyspozycji

shared,private,firstprivate,lastshared

threadprivate, copyin, copyprivate

Jak planowany jest podział pracy w pętlach?

Static

Dynamic

Private

Auto

Runtime

(5)

Ćwiczenia

Bug1

dyrektywa “#pragma omp for” nie poprzedza bezpośrednio pętli w programie

Bug2

Nie zdefiniowano typu zmiennych

Total może być typu “shared” lub “private”

Przykłady: bug1.c, bug2.c

(6)

Segmenty równoległe - “section”

Sekcja:

oznacza fragmenty kodu, które mają być rozdzielone pomiędzy wątkami

w odróżnieniu od pętli nie mają kolejnych iteracji

Przykład omp_workshare2.c

(7)

Segmenty równoległe - “single”

Segment Single

Jest wykonywany tylko przez jeden wątek w grupie

Wykorzystywane np. Przy operacjach wejścia/

wyjścia

(8)

Synchronizacja pracy wątków

Problem:

x=x+1;

Wątek A pobiera

Wątek B pobiera

Wątek A inkrementuje

Wątek B inkrementuje

Wynik:

Jedna inkrementacja zamiast dwóch

(9)

Synchronizacja pracy wątków

Problem:

x=x+1;

Wątek A pobiera

Wątek B pobiera

Wątek A inkrementuje

Wątek B inkrementuje

Wynik:

Jedna inkrementacja zamiast dwóch

Przykład: bug2_fixed – shared(total)

(10)

Synchronizacja pracy wątków

#pragma omp master newline

#pragma omp critical [ name ] newline

#pragma omp barrier newline

#pragma omp taskwait newline

#pragma omp atomic newline

#pragma omp flush (list) newline

# pragma omp for ordered

(11)

Dyrektywa MASTER

Określa obszar realizowany tylko przez wątek główny

Pozostałe wątki pomijają tę część kodu

(12)

Dyrektywa CRITICAL

Określa region, który w danym momencie

może być realizowana tylko przez jeden wątek

Gdy wątek B dotrze do obszaru, CRITICAL w trakcie jego realizacji przez wątek A, następuje wstrzymanie wątku B.

Przykład omp_critical.c

(13)

Materiały

https://computing.llnl.gov/tutorials/openMP/

https://computing.llnl.gov/tutorials/openMP/exercise.html

Przyklady:

omp_bug1.c

omp_bug2.c

omp_workshare2.c

omp_critical.c – wlasn/brak na stronie

Cytaty

Powiązane dokumenty

Konflikt z królem, męczeństwo biskupa tak nieodwracalnie związało obie postacie ze sobą, że wątek świętego ujawnia się również w utworach poświęco­ nych

Wiążą się one najpierw z pytaniem o faktyczny cel reklamy: wydaje się, że w większym stopniu niż dobro odbiorcy (jego zdrowie, rozwój, wzrost odpowiedzialności za siebie)

Z definicji legalnej wynika, że mobbing to zachowania: 1) dotyczące pra­ cownika lub skierowane przeciwko pracownikowi, 2) polegające na uporczy­ wym i długotrwałym

wartości zmiennej globalnej (jednak w taki sposób, żeby nie zaburzać znacząco czasu wykonania – czyli jednokrotny wydruk po długiej pętli, pętla musi być na tyle długa,

Niniejszy rozdział przedstawia kilka podstawowych mechanizmów, za pomoc ˛ a których systemy ope- racyjne umo˙zliwiaj ˛ a tworzenie programów równoległych i rozproszonych.

● programowanie równoległe klastrów, czyli grupy niezależnych komputerów (węzłów) – w tym. przypadku można

Jako że termy dowodowe są zwartymi reprezentacjami dowodów, możemy łatwo przetłumaczyć wszystkie otrzymane już dowody na termy dowodowe.. Na dobrą sprawę wystarczy użyć

osoby relatora 1/3 - inne materiały dokumentacyjne