Wyklad 11 Języki programowania równoległego

Wielkość: px
Rozpocząć pokaz od strony:

Download "Wyklad 11 Języki programowania równoległego"

Transkrypt

1 Wyklad 11 Języki programowania równoległego Części wykładu: 1. Środowisko programu równoległego - procesy i wątki 2. Podstawowe problemy języków programowania równoległego 3. Języki programowania w środowisku z rozproszoną pamięcią - model OCCAM 4. Języki programowania w środowisku ze wspólną pamięcią - model OpenMP

2 Środowisko programu równoległego - procesy i wątki Proces - zapis lub wykonanie szeregowe ciągu instrukcji. Procesami w systemie komputerowym zarządza zwykle system operacyjny komputera. Z punktu widzenia systemu operacyjnego, proces jest to obiekt tworzony w celu wykonania programu lub jego części. Stworzenie procesu odbywa się przez wykonanie przez system operacyjny następujących czterech czynności: utworzenie deskryptora procesu przydział przestrzeni adresowej w pamięci operacyjnej załadowanie programu do przydzielonej przestrzeni adresowej przekazanie deskryptora procesu programowi szeregowania.

3 Program szeregowania, który działa na kolejkach deskryptorów procesów przydziela procesom czas procesora. Operacje wejścia/wyjścia zwykle powodują zawieszenie procesu i przekazanie czasu procesora innemu procesowi gotowemu do wykonania. Procesy wykonują się z podziałem czasu procesora (ang. time sharing). Polega to na przydzielaniu procesom aktywnym kwantów czasu procesora. Zmiana procesu w procesorze powoduje wymianę tzw. kontekstu procesu (ang. process context) w procesorze, zawierającego podstawowe zmienne stanu, rejestry procesora, wskaźniki na zasoby. Kontekst usuwanego procesu zapisany jest w deskryptorze procesu (ang. process descriptor).

4 Aby zwiększyć zrównoleglenie obliczeń wewnątrz procesu wprowadzono nowy typ elementu programowego tzw. wątek (ang. thread). Wątek jest to osobno zadeklarowany przez odpowiednie instrukcje ciąg instrukcji wewnątrz procesu, wykorzystujący zasoby procesu. Podobnie jak procesy wątki dzielą czas procesora. Wątkami zarządza również program szeregowania wątków (ang. thread scheduler) należący do systemu operacyjnego komputera, ale zmiana wątku w procesorze zajmuje dużo mniej czasu, gdyż wymaga zmiany licznika rozkazów i rejestru stanu procesora. Stąd wątki nazywane są również lekkimi procesami (ang. lightweight process). Procesy i wątki mogą być w jednym z trzech stanów: wykonywany, gotowy do wykonania (oczekujący w kolejce na czas procesora), zawieszony w oczekiwaniu na zajście określonego zdarzenia w systemie, np. zakończenie operacji we/wy.

5 Program nazywamy współbieżnym (ang. concurrent), jeśli zamieszczono w nim specyfikację równoległego wykonywania procesów. Procesy składowe programu współbieżnego nazywamy procesami współbieżnymi (ang. concurrent processes). Program nazywamy równoległym jeśli jego procesy składowe zostały odwzorowane do wykonania na równolegle działających procesorach. Procesy programu równoległego nazywamy procesami równoległymi.

6 Sposoby wykonania programów współbieżnych: wieloprogramowość (ang. multiprogramming) - wykonywanie programów (procesów) współbieżnych przez podział czasu jednego procesora - wykonanie pozornie w sposób równoległy, wieloprzetwarzanie (ang. multiprocessing) - wykonywanie programów (procesów) na oddzielnych procesorach mających dostęp do wspólnej pamięci tzw. multiprocesorach - wykonanie rzeczywiście równoległe, przetwarzanie rozproszone (ang. distributed processing) - wykonywanie programów (procesów) na oddzielnych procesorach mających lokalne pamięci bez dostępu do wspólnej pamięci - wykonanie rzeczywiście równoległe

7 Sposoby uzyskiwania równoległości wykonania programów: wykorzystanie języków programowania równoległego (ang. parallel programming languages), w których równoległość wykonywania elementów programu (procesów, wątków) jest określona przez programistę bezpośrednio w programie. wykorzystanie tzw. kompilatorów zrównoleglających (ang. parallelizing compilers), które automatycznie przetwarzają programy w języku programowania sekwencyjnego na programy równoległe.

8 Podstawowe problemy języków programowania równoległego, których rozwiązanie musi zapewnić zapewnione w języku: deklaracje procesów i ich elementów składowych, określenie porządku aktywacji procesów w programie mechanizmy wzajemnej synchronizacji procesów w trakcje wykonywania programu, środki dla wyrażenia komunikacji danych czyli wymiany danych między procesami składowymi.

9 Deklaracja lub identyfikacja procesów w programie: Procesy strukturalne Ich składnia i semantyka są zbliżone do procedury(funkcji), wywoływane przez nazwę z podaniem parametrów aktualnych wywołania Przykłady: process z języka Concurrent Pascal, Concurrent C; procedure z języka C, Modula, OCCAM; task z języka Ada. Procesy niestrukturalne Są to ciągi sekwencyjnych instrukcji, których początki są wyznaczane przez operatory (instrukcje) zrównoleglające drogi sterowania, Przykłady: cobegin, coend z języka Algol 68, CSP; begin, end z języka OCCAM.

10 Porządek aktywacji procesów współbieżnych i ich zakończenia Wyróżniamy następujące metody aktywacji procesów współbieżnych: Porządek aktywacji określony bezpośrednio przez specjalne operatory działające na procesach strukturalnych lub niestrukturalnych Przykłady: cobegin, coend w Algol 68, CSP; FORK, JOIN w Unix, PL1; parbegin, parend w CCS, PAR w OCCAM. Porządek aktywacji określony pośrednio przez deklarację zbioru procesów współbieżnych lub inicjalizację równoległą wcieleń zadeklarowanych procesów, Przykłady w językach Concurrent Pascal, Modula.

11 Mechanizmy synchronizacji procesów równoległych Synchronizacja (ang. synchronization) w programie równoległym nazywamy oddziaływanie stanu określonych składowych procesów równoległych programu na stan (wykonywanie się) innych procesów. Podstawowe mechanizmy synchronizacji Mechanizmy dla wykluczania wzajemnego (ang. mutual exclusion) wykonywania fragmentów (sekcji) krytycznych (ang. critical section) programów równoległych. Operacje na zmiennych wspólnych dla wielu procesów równoległych Przykład: semafory z operacjami p, v Obiekty strukturalne w programie, grupujące procesy, których wykonanie odbywa się z wykluczaniem wzajemnym Przykład: monitory

12 Mechanizmy dla zatrzymywania i wznawiania biegu procesów równoległych Operacje bezpośredniego sterowania biegiem procesów równoległych Przykłady: wait(s), send(s) w języku Modula, systemie Unix; corroutines z operacjami call, resume, return w językach SIMULA, Modula 2. Synchroniczne przesyłanie komunikatów, wyrównujące bieg procesów równoległych na operacjach komunikacji Przykład: operacje wyślij (!), odbierz (?) w języku OCCAM. Synchroniczne zdalne wywoływanie procedur, wyrównujące bieg procesów na deklaracjach i wywołaniach procedur w procesach równoległych Przykłady: operatory ACCEPT i wywołania zadań w języku Ada.

13 Mechanizmy komunikacji między procesami równoległymi Komunikacja przez wspólne zmienne w buforze, do którego mają dostęp sekcje krytyczne umieszczone w procesach równoległych, Przykłady: semafory Komunikacja przez dostęp do procedur działających na wspólnych danych, pod osłoną mechanizmów wykluczania wzajemnego wywołań procedur, Przykład: monitory w języku Ada Komunikacja w realizacji zdalnie wywoływanych procedur przez przekazywanie parametrów i odbieranie wyników Przykład: zdalne wywoływanie procedur Komunikacja przez asynchroniczne przesyłanie komunikatów przy pomocy operacji dotyczących wydzielonych zmiennych Przykład: protokoły komunikacyjne sieci Ethernet, Myrinet, Cambridge Ring. Komunikacja przez synchroniczne przesyłanie komunikatów przy pomocy operacji dotyczących wydzielonych kanałów, Przykłady: operacje wyślij (!), odbierz (?) w języku OCCAM.

14 3. Języki programowania w środowisku z rozproszoną pamięcią - model OCCAM OCCAM jest modelowym językiem programowania równoległego dla systemów równoległych z rozproszoną pamięcią, w którym komunikację poprzez przesyłanie komunikatów umieszczono na poziomie programu aplikacyjnego. Język OCCAM jest językiem, który był wspomagany sprzętowo w latach 1980 i 90-ych przez architekturę transputerów a później przez emulację programową transputerów pod Windows NT. Innym podstawowym modelem programowania równoległego z przesyłaniem komunikatów jest model MPI (omówiony w Wykładzie 4), w którym komunikacje umieszczono na poziomie biblioteki komunikacyjnej, wywoływanej z programów w językach C, C++, Java. Język OCCAM został zaproponowany w Anglii w 1983 roku na Uniwersytecie w Oxfordzie. Nazwa pochodzi od filozofa szkockiego Wiliama Occama (XIII / XIV wiek), który głosił, że należy używać możliwie najmniejszej liczby pojęć dla opisywania wszelkich zagadnień. Takie założenie było motywem przewodnim przy definiowaniu języka OCCAM.

15 Ogólne cechy języka OCCAM: dwa rodzaje procesów: strukturalne - deklarowane i wywoływane przez nazwę oraz niestrukturalne, wynikające z przepływu sterowania w programie, porządek aktywacji procesów określony jest bezpośrednio przez operatory strukturalizacji sterowania (konstruktory) komunikacja między procesami współbieżnymi umieszczona na poziomie programu aplikacyjnego tj. bez pośrednictwa systemu operacyjnego. komunikacja poprzez synchroniczne przesyłanie komunikatów (niebuforowane) w kanałach (ang. channel), synchronizacja między procesami współbieżnymi zapewniona przez synchroniczne transmisje komunikatów w kanałach, brak wzajemnego dostępu do struktur danych należących do procesów współbieżnych - pamięci rozproszone procesów, język silnie formatowany - zakres działania operatora języka określony jest układem zapisu programu - przez linie wcięte o dwie spacje.

16 Podstawowe procesy języka OCCAM: v := e podstawienie wyniku obliczenia wyrażenia e pod zmienną v, c! e wysłanie komunikatu z wynikiem wyrażenia e do kanału c, c? v odebranie komunikatu z kanału c i podstawienie pod zmienną v. Konstruktory Podstawowe procesy są poddawane działaniu konstruktorów: SEQ - wyrażający sekwencyjne wykonanie procesów w kolejnych liniach, PAR - wyrażający współbieżność procesów w kolejnych liniach, ALT - wyrażający wykonanie jednego z procesów uzależnionych tzw. dozorami. Dozory w ALT są funkcją iloczynu zdaniowego (oznaczanego przez &) warunku logicznego (np. a=5) i odbioru komunikatu w kanale (np. c? v).

17 Podstawowe wyrażenia sterujące: IF, WHILE, CASE Replikatory stanowią zapisy, które generują kopie procesu ze względu na określoną zmienną, przebiegającą kolejne wartości. NP. KONSTRUKTOR i = 1 FOR 10 process [i] powoduje wygenerowanie w programie 10 kopii procesu {i} dla kolejnych wartości i od 1 do 10, umieszczonych po operatorem KONSTRUKTOR. Kanały są to deklarowane obiekty służące do komunikacji. Kanał ma nazwę oraz protokół, który określa typ zmiennej lub zmiennych przesyłanej (-ych) w kanale.

18 Przykłady prostych programów w języku OCCAM: Przykład 1. Mamy program równoległy po lewej oraz schemat blokowy tego programu ( z pominięciem deklaracji zmiennych i kanałów) Konstruktor SEQ wyznacza sekwencję fragmentów programu. Konstruktor PAR tworzy równoległe fragmenty programu poprzez rozgałęzienie ścieżki sterującej na dwie ścieżki równoległe zawierające dwie sekwencje instrukcji. Zawarte są tam dwie komunikacje, w kanałach chan3 i chan4, między procesami współbieżnymi określonymi przez PAR.

19 INT d: SEQ d:= 3 d:= d + 1 CHAN OF INT chan3, chan4: PAR INT a, b: SEQ a := d + 2 chan3! a chan4? b INT a: SEQ chan3? a a := d + a chan4! a d := d + 2

20 Przykład 2 Ten przykład zawiera konstruktor ALT, który zawiera dozorowane procesy. CHAN OF INT alfa, beta, delta: INT x, y: SEQ alfa? x ALT x = 1 & beta? y y := y + 1 x = 2 & delta? y y := y + 2 alfa! y Konstruktor ALT obejmuje dwa procesy: y := y + 1 oraz y := y + 2, dozorowane przez dwa dozory: x = 1 & beta? y oraz x = 2 & delta? y, zawierające sprawdzenie warunków logicznych ( x=1 oraz x=2) i odbiory komunikatów w kanałach beta i delta.

21 Dozory, dla których warunki logiczne są spełnione, zawieszają się w oczekiwaniu na komunikacje. Nadejście komunikatu w kanałach powoduje spełnienie całego dozoru, dla którego spełniony był warunek logiczny. Wtedy wykonuje się proces dozorowany przez ten warunek. Wysłanie komunikatów do dozorów następuje przez jakieś procesy równoległe do dozorowanych - nie pokazane w przykładzie. Gdy spełnionych jest więcej niż jeden dozór wybór procesu do wykonania jest określony porządkiem ich zapisu w programie. Zmienne, pod które podstawiane są wartości otrzymane w komunikacie mogą być użyte do wykonania procesu. W ten sposób dozory nie tylko kontrolują wykonanie procesów ale też mogą dostarczać im danych odebranych w kanałach.

22 Przykład 3 Przykład zawiera mechanizm replikatorów procesów równoległych i kanałów. [10] CHAN OF INT alfa: PAR i=0 FOR 9 WHILE TRUE INT x: SEQ alfa [i]? x alfa [i+1]! x W tym przykładzie występuje replikator, który tworzy 9 procesów współbieżnych umieszczonych pod konstruktorem PAR. Każdy proces to pętla nieskończona (z powodu warunku TRUE) zawierająca sekwencję odbioru w kanale i nadanie tej samej wiadomości do innego kanału. Kanały o nazwie alfa są tutaj indeksowane zmienną i od 0 do 9.

23 Do kanału alfa [0] w pierwszej pętli musi nadać komunikat jakiś proces nie pokazany w programie. Potem ten komunikat "wędruje" poprzez wszystkie pętle aż do nadania w kanale alfa [9]. To nadanie może się wykonać jeśli wykona się odbiór w tym kanale w nie pokazanym tutaj procesie równoległym do pętli programu.

24 W języku OCCAM istnieją instrukcje PLACE (umieść), które służą do umieszczania na konkretnych procesorach procesów strukturalnych ujętych w procedury. Przypisania procesów programu do procesorów systemu umieszczane są w tzw. programie konfigurującym dołączanym do zwykłego tekstu programu obliczeniowego. W programie konfigurującym na wstępie deklaruje się liczbę procesorów w systemie komputerowym oraz istniejące połączenia między procesorami. Łączom między procesorami odpowiadają kanały zewnętrzne, na które można odwzorować kanały logiczne występujące w programie. Instrukcje PLACE służą też do odwzorowania kanałów na łącza zewnętrzne procesora oraz dodatkowo do umieszczania zmiennych w konkretnych komórkach pamięci operacyjnej. Kanały nie odwzorowane na łącza zewnętrzne są traktowane jako tzw. kanały wewnętrzne, które realizują transmisje w obrębie pamięci operacyjnej, przydzielonej komunikującym się procesom.

25 4. Języki programowania w środowisku ze wspólną pamięcią - model OpenMP OpenMP (skrót od ang. Open Multi Processing) stanowi podstawowe środowisko programowe do tworzenia programów dla systemów równoległych ze wspólną pamięcią. OpenMP został opracowany pod koniec lat 1990-ych przez konsorcjum producentów systemów równoległych (IBM, SGI, Sun, HP, Compaq). OpenMP umożliwia pisanie programów równoległych przy wykorzystaniu standardowych języków sekwencyjnych C, C++ oraz Fortran 90 dla systemów operacyjnych Unix, Linux, Windows. Open MP zapewnia wprowadzenie do programu sekwencyjnego specyfikacji : równoległego wykonywania obliczeń na poziomie wątków; komunikacji pomiędzy poszczególnymi wątkami; synchronizacji wykonywania wątków. Odbywa się to poprzez wstawianie do programów, specyficznych dyrektyw, zmiennych środowiskowych oraz procedur bibliotecznych OpenMP.

26 Podstawowy model zrównoleglenia obliczeń w OpenMP. Program rozpoczyna się realizacją ciągu instrukcji pojedynczego wątku głównego (ang. main thread), wykonującego się w sposób sekwencyjny. Dyrektywa specyfikująca region równoległy tworzy grupę równolegle wykonujących się wątków, z których jednym jest wątek główny. Gdy przed wymienioną dyrektywą wyspecyfikowano zagnieżdżanie wątków, wątki składowe mogą być dalej zrównoleglane przez dyrektywy regionów równoległych. Na końcu każdego regionu równoległego występuje synchronizacja wątków tego regionu za pomocą wbudowanej bariery. Bariera wyrównuje bieg wszystkich wątków regionu, wstrzymując ich dalsze wykonywanie do wykonania (osiągnięcia) tej bariery przez wszystkie wątki składowe regionu. Po osiągnięciu synchronizacji wszystkich wątków wątek główny kontynuuje pracę sekwencyjną.

27 Zmienne środowiskowe Zmienne środowiskowe służą do globalnego ustalania parametrów dla potrzeb tworzonego równoległego fragmentu programu. OMP NUM THREADS określa liczbę wątków w równoległej grupie, OMP NESTED pozwala lub zabrania na zagnieżdżanie regionów równoległych (TRUE, FALSE), OMP DYNAMIC pozwala lub zabrania na dynamiczne dopasowywanie liczby wątków (TRUE, FALSE), OMP SCHEDULE definiuje sposób zrównoleglenia pętli (przydział iteracji do równoległych wątków) (static, dynamic, guided, runtime). OMP SCHEDULE static rozdziela iteracje na kolejne wątki przed rozpoczęciem wykonywania zgodnie z podaną liczbą iteracji na wątek, OMP SCHEDULE dynamic rozdziela iteracje na wolne wątki dynamicznie podczas wykonywania, OMP SCHEDULE guided rozdziela statycznie iteracje, tak że ich liczba na wątek maleje wykładniczo, OMP SCHEDULE runtime odkłada podział iteracji do wykonania programu. Zmienne środowiskowe ustawia się przez polecenia powłoki. Przykład Dla powłok sh oraz bash export OMP_NUM_THREADS= 8 Dla powłok csh oraz tcsh setenv OMP_NUM_THREADS 8

28 Specyfikacja równoległości obliczeń Dyrektywa parallel Dyrektywa parallel tworzy tzw. region równoległy czyli równoległą grupę wątków. #pragma omp parallel klauzule { // blok strukturalny... } W dyrektywie parallel mogą wystąpić następujące tzw. klauzule, czyli deklaracje uzupełniające podstawową dyrektywę: if(wyrażenie skalarne) num threads(wyrażenie skalarne) private(lista zmiennych) firstprivate(lista zmiennych) shared(lista zmiennych) default(shared albo none) copyin(lista zmiennych) reduction(operator : lista zmiennych)

29 Grupa wątków jest tworzona gdy nie występuje klauzula if albo wyrażenie w klauzuli if ma wartość różną od zera. Klauzula num_threads służy do zadeklarowania liczby wątków w tworzonej grupie równoległych wątków. Jeśli nie ma klauzuli num_threads to liczba wątków w grupie zależy od zmiennej środowiskowej OMP NUM THREADS - master staje się wątkiem 0 a numeracja nie zmienia się w trakcie wykonania. Każdy wątek wykonuje instrukcję zadaną blokiem strukturalnym. Po synchronizacji zakończenia wykonywania regionu dalsze instrukcje po ograniczniku } wykonuje sekwencyjnie watek główny.

30 Deklaracje zmiennych i ich zasięgu Z wyjątkiem klauzul if oraz num_threads, pozostałe klauzule dyrektywy parallel służą do zdefiniowania typu współdzielenia i zasięgu zmiennych używanych w bloku strukturalnym tej dyrektywy. Znaczenie tych klauzul jest następujące: private(lista): zmienne na liście są prywatnymi zmiennymi każdego wątku, (obiekty są automatycznie alokowane dla każdego wątku), firstprivate(lista): jak wyżej, ale w każdym wątku zmienne są inicjowane wartościami z wątku głównego, shared(lista): zmienne z listy są wspólne dla wszystkich wątków w grupie, default(shared): wszystkie zmienne domyślnie są wspólne (o ile nie znajdują się na żadnej liście typu private ), default: dla wszystkich zmiennych trzeba określić, czy są wspólne czy prywatne, reduction(operator : lista): dla zmiennych z listy jest wykonywana operacja redukcyjna określona przez operator. Zmienna nie wymieniona w żadnej z klauzul typu private, jest wspólna. Zmienne deklarowane w bloku są automatycznie prywatne.

31 Dyrektywa zrównoleglenia pętli for Dyrektywa for umożliwia rozdzielenie wykonania iteracji pętli między równoległe wątki w grupie. Dyrektywę for pisze się dopiero po dyrektywie parallel. #pragma omp parallel klauzule {... #pragma omp for klauzule for (... ;... ;... ) {... }... } Wymaga się, aby pętla for była w postaci kanonicznej, czyli przed jej wykonaniem musi być znana liczba iteracji.

32 Klauzule dyrektywy for : schedule(rodzaj, rozmiar) private(lista zmiennych) firstprivate(lista zmiennych) reduction(operator : lista zmiennych) lastprivate(lista zmiennych) nowait ordered Klauzula schedule specyfikuje sposób podziału wykonań iteracji pętli między wątki, gdzie rodzaj może przyjmować wartości static, dynamic, guided, runtime. Wartość parametru static rozdziela iteracje na wątki przed rozpoczęciem wykonywania zgodnie z podaną liczbą iteracji na wątek, dynamic rozdziela iteracje na wolne wątki dynamicznie podczas wykonywania, guided rozdziela iteracje, tak że ich liczba na wątek maleje wykładniczo, runtime odkłada podział iteracji do wykonania programu. Znaczenie klauzul private, firstprivate, reduction jest podobne jak dla dyrektywy parallel.

33 Klauzula lastprivate działa jak private, ale po zakończeniu wykonywania pętli, zmienne mają taką wartość, jak przy sekwencyjnym wykonaniu pętli. Klauzula nowait usuwa wykonanie synchronizacji na barierze po wykonaniu wszystkich wątków po pętli. Klauzula ordered umożliwia wykonanie wybranej części treści iteracji pętli for sekwencyjnie.

34 Dyrektywa zrównoleglenia kodu nieiteracyjnego sections Dyrektywa sections służy do zrównoleglenia wykonania nieiteracyjnego kodu sekwencyjnego przez wątki grupy zorganizowanej za pomocą dyrektywy parallel. Dyrektywa sections występuje w kodzie po dyrektywie parallel. #pragma omp parallel klauzule {... #pragma omp sections klauzule { #pragma omp section { // blok strukturalny 1... }... #pragma omp section { // blok strukturalny n... } } }

35 Dyrektywa sections przydziela blokom strukturalnym po dyrektywach section kolejne wątki w grupie utworzonej przez dyrektywę parallel. Przydział wątków blokom poprzedzającym dyrektywę sections odbywa się zawsze dynamicznie. Klauzule dyrektywy sections private(lista zmiennych) firstprivate(lista zmiennych) reduction(operator : lista zmiennych) lastprivate(lista zmiennych) nowait Znaczenie tych klauzul jest podobne jak dla dyrektywy for.

36 Skrócone formy dyrektyw zrównoleglania kodu w OpenMP Dyrektywa parallel for #pragma omp parallel for klauzule.. for (... ;... ;... ) {... } Możliwe do zastosowania klauzule są podobne jak dla dyrektyw parallel oraz for, z wyjątkiem nowait.

37 Dyrektywa parallel sections #pragma omp parallel sections klauzule.... { #pragma omp section { // blok strukturalny 1... }... #pragma omp section { // blok strukturalny n... } } Możliwe do zastosowania klauzule są podobne jak dla dyrektyw parallel oraz sections, z wyjątkiem nowait.

38 Dyrektywy synchronizacji grup wątków Dyrektywa barrier Dyrektywa barrier definiuje barierę dla wątków regionu równoległego w którym się znajduje. #pragma omp parallel klauzule {... #pragma omp barrier... } Dyrektywa barrier powoduje wstrzymanie wykonania wątków, które dotrą do bariery do czasu, gdy wszystkie wątki w regionie osiągną to miejsce w ich kodzie.

39 Dyrektywa master Dyrektywa master desygnuje zawierający ją wątek do wykonania na tylko przez wątek główny. Przy wykonaniu brak jest synchronizacji na wejściu i wyjściu. #pragma omp parallel klauzule {... #pragma omp master {... }... }

40 Dyrektywa sekcji krytycznej critical Dyrektywa critical deklaruje, że blok strukturalny następujący po niej ma być wykonywany w trybie wzajemnego wykluczania przez wszystkie wątki regionu, w którym się znajduje. Dyrektywa sekcji krytycznej występuje po dyrektywie parallel. #pragma omp parallel klauzule {... #pragma omp critical {... }... } Istnieje odmiana tej dyrektywy z nazwą sekcji krytycznej, w której nazwa sekcji krytycznej występuje po słowie critical w nawiasach okrągłych.

Przetwarzanie Równoległe i Rozproszone

Przetwarzanie Równoległe i Rozproszone POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI I TECHNOLOGII INFORMACYJNYCH Przetwarzanie Równoległe i Rozproszone www.pk.edu.pl/~zk/prir_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl

Bardziej szczegółowo

OpenMP. Programowanie aplikacji równoległych i rozproszonych. Wykład 2. Model programowania. Standard OpenMP. Dr inż. Tomasz Olas

OpenMP. Programowanie aplikacji równoległych i rozproszonych. Wykład 2. Model programowania. Standard OpenMP. Dr inż. Tomasz Olas OpenMP Programowanie aplikacji równoległych i rozproszonych Wykład 2 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska OpenMP (Open Multi-Processing)

Bardziej szczegółowo

Wprowadzenie do zrównoleglania aplikacji z wykorzystaniem standardu OpenMP

Wprowadzenie do zrównoleglania aplikacji z wykorzystaniem standardu OpenMP OpenMP p. 1/4 Wprowadzenie do zrównoleglania aplikacji z wykorzystaniem standardu OpenMP Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska OpenMP OpenMP

Bardziej szczegółowo

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

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz Programowanie równoległe i rozproszone Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz 23 października 2009 Spis treści Przedmowa...................................................

Bardziej szczegółowo

Open MP wer Rafał Walkowiak Instytut Informatyki Politechniki Poznańskiej Wiosna

Open MP wer Rafał Walkowiak Instytut Informatyki Politechniki Poznańskiej Wiosna Open MP wer. 2.5 Rafał Walkowiak Instytut Informatyki Politechniki Poznańskiej Wiosna 2019.0 OpenMP standard specyfikacji przetwarzania współbieżnego uniwersalny i przenośny model równoległości (typu rozgałęzienie

Bardziej szczegółowo

Wprowadzenie do OpenMP

Wprowadzenie do OpenMP Wprowadzenie do OpenMP OZUKO Kamil Dworak OZUKO Wprowadzenie do OpenMP Kamil Dworak 1 / 25 OpenMP (ang. Open Multi-Processing) opracowany w 1997 przez radę Architecture Review Board, obliczenia rówoległe

Bardziej szczegółowo

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

Programowanie systemów z pamięcią wspólną specyfikacja OpenMP. Krzysztof Banaś Obliczenia równoległe 1 Programowanie systemów z pamięcią wspólną specyfikacja OpenMP Krzysztof Banaś Obliczenia równoległe 1 OpenMP Przenośność oprogramowania Model SPMD Szczegółowe wersje (bindings) dla różnych języków programowania

Bardziej szczegółowo

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe 4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa

Bardziej szczegółowo

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 Tworzenie programów równoległych W procesie tworzenia programów równoległych istnieją dwa kroki o zasadniczym znaczeniu: wykrycie

Bardziej szczegółowo

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

Programowanie współbieżne Wykład 2. Iwona Kochańska Programowanie współbieżne Wykład 2 Iwona Kochańska Miary skalowalności algorytmu równoległego Przyspieszenie Stały rozmiar danych N T(1) - czas obliczeń dla najlepszego algorytmu sekwencyjnego T(p) - czas

Bardziej szczegółowo

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

Równoległość i współbieżność Równoległość i współbieżność Wykonanie sekwencyjne. Poszczególne akcje procesu są wykonywane jedna po drugiej. Dokładniej: kolejna akcja rozpoczyna się po całkowitym zakończeniu poprzedniej. Praca współbieżna

Bardziej szczegółowo

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

Równoległość i współbieżność Równoległość i współbieżność Wykonanie sekwencyjne. Poszczególne akcje procesu są wykonywane jedna po drugiej. Dokładniej: kolejna akcja rozpoczyna się po całkowitym zakończeniu poprzedniej. Praca współbieżna

Bardziej szczegółowo

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe 4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa

Bardziej szczegółowo

Komputerowe Obliczenia Równoległe: Wstęp do OpenMP i MPI

Komputerowe Obliczenia Równoległe: Wstęp do OpenMP i MPI Komputerowe Obliczenia Równoległe: Wstęp do OpenMP i MPI Patryk Mach Uniwersytet Jagielloński, Instytut Fizyki im. Mariana Smoluchowskiego OpenMP (Open Multi Processing) zbiór dyrektyw kompilatora, funkcji

Bardziej szczegółowo

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

Bardziej szczegółowo

Programowanie współbieżne i rozproszone

Programowanie współbieżne i rozproszone Programowanie współbieżne i rozproszone WYKŁAD 1 dr inż. Literatura ogólna Ben-Ari, M.: Podstawy programowania współbieżnego i rozproszonego. Wydawnictwa Naukowo-Techniczne, Warszawa, 2009. Czech, Z.J:

Bardziej szczegółowo

Wstęp do programowania 2

Wstęp do programowania 2 Wstęp do programowania 2 wykład 10 Zadania Agata Półrola Wydział Matematyki UŁ 2005/2006 http://www.math.uni.lodz.pl/~polrola Współbieżność dotychczasowe programy wykonywały akcje sekwencyjnie Ada umożliwia

Bardziej szczegółowo

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe 4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa

Bardziej szczegółowo

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

Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz Obliczenia równoległe i rozproszone Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz 15 czerwca 2001 Spis treści Przedmowa............................................

Bardziej szczegółowo

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

Działanie systemu operacyjnego

Działanie systemu operacyjnego Budowa systemu komputerowego Działanie systemu operacyjnego Jednostka centralna dysku Szyna systemowa (magistrala danych) drukarki pamięci operacyjnej I NIC sieci Pamięć operacyjna Przerwania Przerwania

Bardziej szczegółowo

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

Elementy składowe: Przenośność oprogramowania Model SPMD Szczegółowe wersje (bindings) dla różnych języków programowania OpenMP Elementy składowe: o o o dyrektywy dla kompilatorów funkcje biblioteczne zmienne środowiskowe Przenośność oprogramowania Model SPMD Szczegółowe wersje (bindings) dla różnych języków programowania

Bardziej szczegółowo

Mechanizmy pracy równoległej. Jarosław Kuchta

Mechanizmy pracy równoległej. Jarosław Kuchta Mechanizmy pracy równoległej Jarosław Kuchta Zagadnienia Algorytmy wzajemnego wykluczania algorytm Dekkera Mechanizmy niskopoziomowe przerwania mechanizmy ochrony pamięci instrukcje specjalne Mechanizmy

Bardziej szczegółowo

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 Tworzenie programów równoległych W procesie tworzenia programów równoległych istnieją dwa kroki o zasadniczym znaczeniu: wykrycie

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Działanie systemu operacyjnego

Działanie systemu operacyjnego Działanie systemu operacyjnego Budowa systemu komputerowego Jednostka centralna Sterownik dysku Sterownik drukarki Sterownik sieci Szyna systemowa (magistrala danych) Sterownik pamięci operacyjnej Pamięć

Bardziej szczegółowo

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Abstrakcja programowania współbieżnego Instrukcje atomowe i ich przeplot Istota synchronizacji Kryteria poprawności programów współbieżnych

Bardziej szczegółowo

Mechanizmy komunikacji. spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix)

Mechanizmy komunikacji. spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix) Mechanizmy komunikacji spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix) Język CSP Hoare (1978r.) Communicating Sequential Processes

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

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

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1 Programowanie równoległe i rozproszone Monitory i zmienne warunku Krzysztof Banaś Programowanie równoległe i rozproszone 1 Problemy współbieżności Problem producentów i konsumentów: jedna grupa procesów

Bardziej szczegółowo

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

Wsparcie dla OpenMP w kompilatorze GNU GCC Krzysztof Lamorski Katedra Informatyki, PWSZ Chełm Wsparcie dla OpenMP w kompilatorze GNU GCC Krzysztof Lamorski Katedra Informatyki, PWSZ Chełm Streszczenie Tematem pracy jest standard OpenMP pozwalający na programowanie współbieŝne w systemach komputerowych

Bardziej szczegółowo

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 Tworzenie programów równoległych W procesie tworzenia programów równoległych istnieją dwa kroki o zasadniczym znaczeniu: wykrycie

Bardziej szczegółowo

Działanie systemu operacyjnego

Działanie systemu operacyjnego Budowa systemu komputerowego Działanie systemu operacyjnego Jednostka centralna dysku Szyna systemowa (magistrala danych) drukarki pamięci operacyjnej sieci Pamięć operacyjna Przerwania Przerwania Przerwanie

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

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

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

PRZETWARZANIE RÓWNOLEGŁE I ROZPROSZONE. Mnożenie macierzy kwadratowych metodą klasyczną oraz blokową z wykorzystaniem OpenMP.

PRZETWARZANIE RÓWNOLEGŁE I ROZPROSZONE. Mnożenie macierzy kwadratowych metodą klasyczną oraz blokową z wykorzystaniem OpenMP. P O L I T E C H N I K A S Z C Z E C I Ń S K A Wydział Informatyki PRZETWARZANIE RÓWNOLEGŁE I ROZPROSZONE. Mnożenie macierzy kwadratowych metodą klasyczną oraz blokową z wykorzystaniem OpenMP. Autor: Wojciech

Bardziej szczegółowo

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

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1 Współbieżność i równoległość w środowiskach obiektowych Krzysztof Banaś Obliczenia równoległe 1 Java Model współbieżności Javy opiera się na realizacji szeregu omawianych dotychczas elementów: zarządzanie

Bardziej szczegółowo

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1 Wątki 1. Wątki - wprowadzenie Wątkiem nazywamy sekwencyjny przepływ sterowania w procesie, który wykonuje dany program np. odczytywanie i zapisywanie plików Program Javy jest wykonywany w obrębie jednego

Bardziej szczegółowo

Podstawy programowania komputerów

Podstawy programowania komputerów Podstawy programowania komputerów Wykład 14: Programowanie współbieżne w C Definicja programowania współbieżnego Programowanie współbieżne jest tworzeniem programów, których wykonanie powoduje uruchomienie

Bardziej szczegółowo

Podstawy programowania w języku C

Podstawy programowania w języku C Podstawy programowania w języku C WYKŁAD 1 Proces tworzenia i uruchamiania programów Algorytm, program Algorytm przepis postępowania prowadzący do rozwiązania określonego zadania. Program zapis algorytmu

Bardziej szczegółowo

Open MP wer Rafał Walkowiak Instytut Informatyki Politechniki Poznańskiej Jesień 2014

Open MP wer Rafał Walkowiak Instytut Informatyki Politechniki Poznańskiej Jesień 2014 Open MP wer. 2.5 Wykład PR część 3 Rafał Walkowiak Instytut Informatyki Politechniki Poznańskiej Jesień 2014 OpenMP standard specyfikacji przetwarzania współbieżnego uniwersalny (przenośny) model równoległości

Bardziej szczegółowo

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,

Bardziej szczegółowo

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

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

5. Model komunikujących się procesów, komunikaty Jędrzej Ułasiewicz str. 1 5. Model komunikujących się procesów, komunikaty Obecnie stosuje się następujące modele przetwarzania: Model procesów i komunikatów Model procesów komunikujących się poprzez pamięć

Bardziej szczegółowo

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

Procesy i wątki. Krzysztof Banaś Obliczenia równoległe 1 Procesy i wątki Krzysztof Banaś Obliczenia równoległe 1 Procesy i wątki Proces: ciąg rozkazów (wątek główny) i ewentualnie inne wątki stos (wątku głównego) przestrzeń adresowa dodatkowe elementy tworzące

Bardziej szczegółowo

Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wykład 3 Procesy i wątki Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Pojęcie procesu Program = plik wykonywalny na dysku Proces = uruchomiony i wykonywany program w pamięci

Bardziej szczegółowo

Programowanie Rozproszone i Równoległe

Programowanie Rozproszone i Równoległe Programowanie Rozproszone i Równoległe OpenMP (www.openmp.org) API do pisania wielowątkowych aplikacji Zestaw dyrektyw kompilatora oraz procedur bibliotecznych dla programistów Ułatwia pisanie programów

Bardziej szczegółowo

Działanie systemu operacyjnego

Działanie systemu operacyjnego Działanie systemu operacyjnego Budowa systemu komputerowego I NIC Jednostka centralna Sterownik dysku Sterownik drukarki Sterownik sieci Szyna systemowa (magistrala danych) Sterownik pamięci operacyjnej

Bardziej szczegółowo

Mikroprocesor Operacje wejścia / wyjścia

Mikroprocesor Operacje wejścia / wyjścia Definicja Mikroprocesor Operacje wejścia / wyjścia Opracował: Andrzej Nowak Bibliografia: Urządzenia techniki komputerowej, K. Wojtuszkiewicz Operacjami wejścia/wyjścia nazywamy całokształt działań potrzebnych

Bardziej szczegółowo

Wprowadzenie do programowania współbieżnego

Wprowadzenie do programowania współbieżnego Wprowadzenie do programowania współbieżnego Marcin Engel Instytut Informatyki Uniwersytet Warszawski Zamiast wstępu... Zamiast wstępu... Możliwość wykonywania wielu akcji jednocześnie może ułatwić tworzenie

Bardziej szczegółowo

Wykład 3 Składnia języka C# (cz. 2)

Wykład 3 Składnia języka C# (cz. 2) Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest

Bardziej szczegółowo

1.1 Definicja procesu

1.1 Definicja procesu 1 Procesy pojęcia podstawowe 1 1.1 Definicja procesu Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Algorytmy i Struktury Danych www.pk.edu.pl/~zk/aisd_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład 12: Wstęp

Bardziej szczegółowo

Architektura komputerów. Układy wejścia-wyjścia komputera

Architektura komputerów. Układy wejścia-wyjścia komputera Architektura komputerów Układy wejścia-wyjścia komputera Wspópraca komputera z urządzeniami zewnętrznymi Integracja urządzeń w systemach: sprzętowa - interfejs programowa - protokół sterujący Interfejs

Bardziej szczegółowo

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Bardziej szczegółowo

Programowanie maszyn z pamięcią wspólną w standardzie OpenMP.

Programowanie maszyn z pamięcią wspólną w standardzie OpenMP. Programowanie maszyn z pamięcią wspólną w standardzie OpenMP. 1 OpenMP Standard rozwinięty i zdefiniowany w latach 90 przez grupę specjalistów z przemysłu. Strona www: www.openmp.org Składa się ze zbioru

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Programowanie współbieżne Wstęp do OpenMP. Rafał Skinderowicz

Programowanie współbieżne Wstęp do OpenMP. Rafał Skinderowicz Programowanie współbieżne Wstęp do OpenMP Rafał Skinderowicz Czym jest OpenMP? OpenMP = Open Multi-Processing interfejs programowania aplikacji (API) dla pisania aplikacji równoległych na komputery wieloprocesorowe

Bardziej szczegółowo

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

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 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 Wydział Matematyki i Informatyki Instytut Informatyki i

Bardziej szczegółowo

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

Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012 Projektowanie algorytmów równoległych Zbigniew Koza Wrocław 2012 Spis reści Zadniowo-kanałowy (task-channel) model algorytmów równoległych Projektowanie algorytmów równoległych metodą PACM Task-channel

Bardziej szczegółowo

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Instytut Mechaniki i Inżynierii Obliczeniowej  Wydział Mechaniczny Technologiczny Politechnika Śląska Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny Technologiczny Politechnika Śląska Języki programowania z programowaniem obiektowym Laboratorium

Bardziej szczegółowo

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

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX) (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX) W informatyce występują ściśle obok siebie dwa pojęcia: sprzęt (ang. hardware) i oprogramowanie

Bardziej szczegółowo

Ada95 przetwarzanie rozproszone

Ada95 przetwarzanie rozproszone Ada95 przetwarzanie rozproszone 1. Model systemu rozproszonego 2. Partycje i jednostki kompilacji 3. Glade narzędzie gnatdist język opisu konfiguracji 4. Przykład programu rozproszonego Model systemu rozproszonego

Bardziej szczegółowo

Ada95 przetwarzanie rozproszone

Ada95 przetwarzanie rozproszone 1 Ada95 przetwarzanie rozproszone 1. Model systemu rozproszonego 2. Partycje i jednostki kompilacji 3. Glade narzędzie gnatdist język opisu konfiguracji 4. Przykład programu rozproszonego 2 węzeł Model

Bardziej szczegółowo

Wywoływanie procedur zdalnych

Wywoływanie procedur zdalnych Mechanizm wywołania Wywoływanie procedur zdalnych main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) int zabij_proces (int pid){ int stat; stat = kill(pid,

Bardziej szczegółowo

Wykład 5: Klasy cz. 3

Wykład 5: Klasy cz. 3 Programowanie obiektowe Wykład 5: cz. 3 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD - podstawy Konstruktor i destruktor (część I) 2 Konstruktor i destruktor KONSTRUKTOR Dla przykładu

Bardziej szczegółowo

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w obrębie skryptu. Wyrażenia include() i require() są niemal

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6 JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona

Bardziej szczegółowo

Java EE produkcja oprogramowania

Java EE produkcja oprogramowania Java EE produkcja oprogramowania PPJ PODSTAWY PROGRAMOWANIA W JAVIE PODSTAWY JĘZYKA JAVA 1 Warszawa, 2016Z 2 Ogólna charakterystyka języka Java 3 Java 1/2 Język programowania Java został opracowany przez

Bardziej szczegółowo

16. Taksonomia Flynn'a.

16. Taksonomia Flynn'a. 16. Taksonomia Flynn'a. Taksonomia systemów komputerowych według Flynna jest klasyfikacją architektur komputerowych, zaproponowaną w latach sześćdziesiątych XX wieku przez Michaela Flynna, opierająca się

Bardziej szczegółowo

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

Bardziej szczegółowo

Język C++ zajęcia nr 2

Język C++ zajęcia nr 2 Język C++ zajęcia nr 2 Inicjalizacja Definiowanie obiektu może być połączone z nadaniem mu wartości początkowej za pomocą inicjalizatora, który umieszczany jest po deklaratorze obiektu. W języku C++ inicjalizator

Bardziej szczegółowo

Programowanie obiektowe - 1.

Programowanie obiektowe - 1. Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

Procesy, wątki i zasoby

Procesy, wątki i zasoby Procesy, wątki i zasoby Koncepcja procesu i zasobu, Obsługa procesów i zasobów, Cykl zmian stanów procesu i kolejkowanie, Klasyfikacja zasobów, Wątki, Procesy i wątki we współczesnych systemach operacyjnych.

Bardziej szczegółowo

Definicje. Algorytm to:

Definicje. Algorytm to: Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi

Bardziej szczegółowo

Wprowadzenie do systemów operacyjnych

Wprowadzenie do systemów operacyjnych SOE - Systemy Operacyjne Wykład 1 Wprowadzenie do systemów operacyjnych dr inż. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW System komputerowy Podstawowe pojęcia System operacyjny

Bardziej szczegółowo

Systemy operacyjne. Zajęcia 11. Monitory

Systemy operacyjne. Zajęcia 11. Monitory Systemy operacyjne. Zajęcia 11. Monitory 1. Monitor to mechanizm zamykający całą pamięć wspólną i synchronizację w pojedynczym module. 2. Monitor posiada całą pamięć wspólną jako część 'prywatną': dostępu

Bardziej szczegółowo

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu. Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody

Bardziej szczegółowo

Logiczny model komputera i działanie procesora. Część 1.

Logiczny model komputera i działanie procesora. Część 1. Logiczny model komputera i działanie procesora. Część 1. Klasyczny komputer o architekturze podanej przez von Neumana składa się z trzech podstawowych bloków: procesora pamięci operacyjnej urządzeń wejścia/wyjścia.

Bardziej szczegółowo

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację. J. Ułasiewicz Programowanie aplikacji współbieżnych 1 11 Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Bardziej szczegółowo

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53: Instrukcje sterujące wer. 11 z drobnymi modyfikacjami! Wojciech Myszka 2017-07-05 10:53:09 +0200 Ala ma kota Część I Prosty przykład Problem 1. Zadanie polega na tym, żeby opracować algorytm który dla

Bardziej szczegółowo

ArtPlayer oprogramowanie do odtwarzania plików video sterowane Artnet/DMX V1.0.1

ArtPlayer oprogramowanie do odtwarzania plików video sterowane Artnet/DMX V1.0.1 Instrukcja obsługi ArtPlayer oprogramowanie do odtwarzania plików video sterowane Artnet/DMX V1.0.1 1 ArtPlayer to proste oprogramowanie umożliwiające odtwarzanie plików video i ich wybór poprzez protokół

Bardziej szczegółowo

Wywoływanie procedur zdalnych

Wywoływanie procedur zdalnych Wywoływanie procedur zdalnych Mechanizm wywołania main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) }... int zabij_proces (int pid){ int stat; stat

Bardziej szczegółowo

Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003

Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003 Obliczenia równoległe i rozproszone w JAVIE Michał Kozłowski 30 listopada 2003 Wątki w JAVIE Reprezentacja wątków jako obiektów Uruchamianie i zatrzymywanie wątków Realizacja wątków Ograniczenia Mechanizmy

Bardziej szczegółowo

3URJUDPRZDQLHZVSyáELH*QHZVWS

3URJUDPRZDQLHZVSyáELH*QHZVWS 3URJUDPRZDQLHZVSyáELH*QHZVWS Problem sortowania N liczb Algorytm sekwencyjny sortuj(1, N); NRV]WVRUWRZDQLDSU]H]SURVW]DPLDQN 2 SRUyZQD $OJRU\WPUyZQROHJá\ cobegin {wykonaj równolegle} VRUWXMSyáB1 VRUWXMSyáB11

Bardziej szczegółowo

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki Informatyka I Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Operacje relacji (porównania) A

Bardziej szczegółowo

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

Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1 Przetwarzanie wielowątkowe przetwarzanie współbieżne Krzysztof Banaś Obliczenia równoległe 1 Problemy współbieżności wyścig (race condition) synchronizacja realizowana sprzętowo (np. komputery macierzowe)

Bardziej szczegółowo

Programowanie maszyn z pamięcią wspólną w standardzie OpenMP.

Programowanie maszyn z pamięcią wspólną w standardzie OpenMP. Programowanie maszyn z pamięcią wspólną w standardzie OpenMP. 1 OpenMP Standard rozwinięty i zdefiniowany w latach 90 przez grupę specjalistów z przemysłu. Strona www: www.openmp.org Składa się ze zbioru

Bardziej szczegółowo

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj

Bardziej szczegółowo

LEKCJA TEMAT: Zasada działania komputera.

LEKCJA TEMAT: Zasada działania komputera. LEKCJA TEMAT: Zasada działania komputera. 1. Ogólna budowa komputera Rys. Ogólna budowa komputera. 2. Komputer składa się z czterech głównych składników: procesor (jednostka centralna, CPU) steruje działaniem

Bardziej szczegółowo

Język UML w modelowaniu systemów informatycznych

Język UML w modelowaniu systemów informatycznych Język UML w modelowaniu systemów informatycznych dr hab. Bożena Woźna-Szcześniak Akademia im. Jan Długosza bwozna@gmail.com Wykład 4 Diagramy aktywności I Diagram aktywności (czynności) (ang. activity

Bardziej szczegółowo

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania, Przetwarzanie równoległe PROJEKT OMP i CUDA Temat projektu dotyczy analizy efektywności przetwarzania równoległego realizowanego przy użyciu komputera równoległego z procesorem wielordzeniowym z pamięcią

Bardziej szczegółowo

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;

Bardziej szczegółowo

Pętle. Dodał Administrator niedziela, 14 marzec :27

Pętle. Dodał Administrator niedziela, 14 marzec :27 Pętlami nazywamy konstrukcje języka, które pozwalają na wielokrotne wykonywanie powtarzających się instrukcji. Przykładowo, jeśli trzeba 10 razy wyświetlić na ekranie pewien napis, to można wykorzystać

Bardziej szczegółowo

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24 Wymagania proceduralnych języków wysokiego poziomu ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH modele programowe procesorów ASK MP.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad.

Bardziej szczegółowo

Zmienne, stałe i operatory

Zmienne, stałe i operatory Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe

Bardziej szczegółowo

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

Programowanie współbieżne Wykład 7. Iwona Kochaoska Programowanie współbieżne Wykład 7 Iwona Kochaoska Poprawnośd programów współbieżnych Właściwości związane z poprawnością programu współbieżnego: Właściwośd żywotności - program współbieżny jest żywotny,

Bardziej szczegółowo