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

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

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

Transkrypt

1 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 Zatorski Szczecin, 2006

2 Naszym zadaniem było wykonanie kilkunastu testów mnożenia macierzy metodą blokową oraz klasyczna z wykorzystaniem środowiska OpenMP i na podstawie tych testów wyciągnięcie wniosków. OpenMP to jednolite środowisko dyrektyw zrównoleglających dla maszyn z pamięcią wspólną. OpenMP rozszerza sekwencyjny model programowania o Single-Program Multiple Data (SPMD), pracę dzieloną i synchronizację, oraz wspomaga operowanie na wspólnych i prywatnych danych. Równoległość programu musimy wskazać jawnie i do nas należy przewidywanie wszelkich zależności, konfliktów i uwarunkowań. Zostały wykonane testy dla macierzy kwadratowych o wymiarach :10x10, 20x20, 30x30, 90x90, 100x100, 150x150, 200x200, 250x250, 300x300, 500x500, 1000x1000, a także 600x600, 800x800, 1000x1000, 1200x1200, 1400x1400. Każda macierz zawiera wartości dwucyfrowe wygenerowane losowo rozdzielone spacją oraz każdy wiersz macierzy rozdzielony pojedynczym enterem. Przykładowy wygenerowany plik dla macierzy A i B o rozmiarze 10x10 wygląda:

3 a dla macierzy A i B zmiennoprzecinkowej o rozmiarze 10x10 wygląda: Czas mnożenia macierzy jest obliczany za pomocą prostej procedury zwracającej aktualny czas w sekundach i milisekundach. Procedura jest wywoływana przed każdym mnożeniem macierzy oraz po mnożeniu, a następnie obliczana jest różnica, która jest podawana w niniejszym sprawozdaniu. Procedura podająca aktualny czas przedstawia się następująco: double second() { struct timeval tm; double t; gettimeofday(&tm,null); t = (double) (tm.tv_sec) + ((double) (tm.tv_usec))/1.0e6; return t; } Zostały napisane dwa odrębne programy, jeden dla metody klasycznej, drugi dla metody blokowej wczytujące z pliku macierze, a następnie wykonujące operacje mnożenia. W wyniku (na ekran) zwracany jest czas obliczeń np. 100x100 = Wykonano również modyfikacje na kopiach w/w programów umożliwiające wczytywanie i mnożenie liczb zmiennoprzecinkowych. 3

4 Fragment kodu odpowiedzialny za mnożenie macierzy metodą klasyczną (program A): #pragma omp parallel { #pragma omp for private(j,k) for (i=0; i<ry; i++) for (j=0; j<rx; j++) { for (k=0; k<ry; k++) { tab3[i][j]=tab3[i][j]+(tab1[i][k]*tab2[k][j]); } } } Zmodyfikowane mnożenie macierzy metodą klasyczną (program B): #pragma omp parallel { #pragma omp for private(j,k,suma) for (i=0; i<ry; i++) for (j=0; j<rx; j++) { suma=0; for (k=0; k<ry; k++) { suma+=tab1[i][k]*tab2[k][j]; } tab3[i][j]=suma; } } Fragment kodu odpowiedzialny za mnożenie macierzy metodą blokową: #pragma omp parallel { #pragma omp for private(i,j,k,x,y,z) schedule(runtime) for (x=0; x<n_prime; x++) for (y=0; y<n_prime; y++) for (z=0; z<n_prime; z++) for (i=x*sub_n; i<(x+1)*sub_n; i++) for (j=y*sub_n; j<(y+1)*sub_n; j++) for (k=z*sub_n; k<(z+1)*sub_n; k++) tab3[i][j] += tab1[i][k] * tab2[k][j]; } 4

5 Zostały wykonane testy dla 1,2,3,4 oraz 8 wątków (ustalanych statycznie za pomocą zmiennej OMP_NUM_THREADS) na podanych wcześniej macierzach z wykorzystaniem prostego skryptu zawierającego: export OMP_NUM_THREADS=1./mac_klas 10x10.mac./mac_klas 20x20.mac./mac_klas 30x30.mac./mac_klas 90x90.mac./mac_klas 100x100.mac./mac_klas 150x150.mac./mac_klas 200x200.mac./mac_klas 250x250.mac./mac_klas 300x300.mac./mac_klas 500x500.mac./mac_klas 1000x1000.mac (...) export OMP_NUM_THREADS=1./mac_block 10x10.mac./mac_block 20x20.mac./mac_block 30x30.mac./mac_block 90x90.mac./mac_block 100x100.mac./mac_block 150x150.mac./mac_block 200x200.mac./mac_block 250x250.mac./mac_block 300x300.mac./mac_block 500x500.mac./mac_block 1000x1000.mac (...) 5

6 JOTA 1 Obliczenia wykonane na JOTA 1 przedstawiają się następująco: Metoda blokowa threads x10 0, , , , , x20 0, , , , , x30 0, , , , , x90 0, , , , , x100 0, , , , , x150 0, , , , , x200 0, , , , , x250 0, , , , , x300 0, , , , , x500 1, , , , , x , , , , , Metoda klasyczna threads x10 0, , , , , x20 0, , , , , x30 0, , , , , x90 0, , , , , x100 0, , , , , x150 0, , , , , x200 0, , , , , x250 0, , , , , x300 0, , , , , x500 3, , , , , x , , , , , Najlepiej różnice w działaniu algorytmu widać na największej mnożonej macierzy 1000x1000, gdzie różnice są dosyć sporawe (w sekundach), metoda klasyczna jest prawie dwukrotnie wolniejsza na jednym wątku w porównaniu z metodą blokową. Natomiast w przypadku dwóch wątków działanie metody blokowej dłużej niż klasycznej jest niewytłumaczalne (testy przeprowadzone zostały dwukrotnie), widocznie w tym momencie większy dostęp do procesorów miały inne procesy lub urządzenia (I/O).

7 JOTA 4 Obliczenia dla porównania wykonano również na JOTA 4 i wyglądają następująco: Metoda blokowa threads x10 0, , , , , x20 0, , , , , x30 0, , , , , x90 0, , , , , x100 0, , , , , x150 0, , , , , x200 0, , , , , x250 0, , , , , x300 0, , , , , x500 1, , , , , x , , , , , Metoda klasyczna threads x10 0, , , , , x20 0, , , , , x30 0, , , , , x90 0, , , , , x100 0, , , , , x150 0, , , , , x200 0, , , , , x250 0, , , , , x300 0, , , , , x500 3, , , , , x , , , , , I tutaj również widać najlepiej na największej macierzy, że metoda blokowa jest znacznie wydajniejsza niezależnie od ilości wątków. W tym wypadku również na 2 wątkach metoda blokowa była wydajniejsza. Ogólnie czasy są porównywalne z tymi otrzymanymi z JOTA 1. Obie metody zadziałały najwydajniej na trzech wątkach, natomiast najgorzej metoda blokowa na 8, a klasyczna na 1 wątku. 7

8 Oprócz tego dodatkowo przeprowadzono testy dla macierzy 600x600, 800x800, 1000x1000, 1200x1200, 1400x1400 dla programu równoległego (1,2,3,4,8 wątków) oraz programu sekwencyjnego na tych samych danych metodą klasyczną oraz blokową. threads seq 600x600 3, , , , , , x800 9, , , , , , x , , , , , , x , , , , , , x , , , , , , x600 2, , , , , , x800 6, , , , , , x , , , , , , x , , , , , , x , , , , , , Procentowe różnice w porównaniu do programu sekwencyjnego wyglądają następująco: threads seq 600x x x x x x x x x x Jak widać na zamieszczonych tablicach nie opłaca się przeprowadzać zrównoleglenia dla jednego wątku, gdyż procedury tworzące wątek zmniejszają wydajność metody. Największą procentową wydajność uzyskano w porównaniu do metody sekwencyjnej na 4 wątkach zmodyfikowaną metodą klasyczną (program B). Metoda blokowa na 4 wątkach była w tej sytuacji mniej wydajna. Ogólny wniosek jaki wypływa z przeprowadzonego testu to, że zmodyfikowana metoda klasyczna jest wydajniejsza w porównaniu z metodą blokową dla wyżej przeprowadzonych testów. 8

9 Wszystkie testy zostały wykonane na maszynach dwuprocesorowych z procesorami Pentium 4 Xeon (2.8GHz) oraz pamięcią 2GB, graficznie rezultaty dla poszczególnych metod wyglądają następująco: JOTA 1 - metoda blokowa 60 time (seconds) thread 2 threads 3 threads 4 threads 8 threads 1000x x x x x x x100 90x90 30x30 20x20 10x10 JOTA 4 - metoda blokowa time (seconds) thread 2 threads 3 threads 4 threads 8 threads 1000x x x x x x x100 90x90 30x30 20x20 10x10 W przypadku małych macierzy rezultaty czasowe są poniżej 2 sekund, co skutkuje tym, że są na wyżej pokazanych wykresach ich wartości nierozpoznawalne. Skok czasu obliczeń następuje już od macierzy 300x300, gdzie prawie wykładniczo rośnie do góry. Im więcej wątków nie oznacza od razu lepszej wydajności, różne maszyny i różny rozkład prędkości działania wątków dla JOTA 1 to 2,4,8,1,3, a dla JOTA 4 8,1,2,4,3. 9

10 Dla metody klasycznej rozkład wątków jest identyczny co w metodzie blokowej, tutaj również widoczny skok długości obliczeń następuje od macierzy 300x300: JOTA 4 - metoda klasyczna time (seconds) thread 2 threads 3 threads 4 threads 8 threads JOTA 1 - metoda klasyczna 30 time (seconds) thread 2 threads 3 threads 4 threads 8 threads

11 Porównaniu obu metod pod względem wydajności czasowej wygląda następująco: JOTA 1 threads x10 16% 7% 7% 22% 2% 20x20 3% -6% -19% 13% -19% 30x30 0% 19% 13% 51% -18% 90x90 3% -11% -109% 25% 5% 100x100 1% 0% 52% -35% 30% 150x150 20% 18% 30% 2% 13% 200x200 30% 57% 19% 13% 3% 250x250 31% 30% 47% -9% 5% 300x300 37% 40% 17% 22% 6% 500x500 46% -1% 40% 21% 66% 1000x % -140% 51% -106% 28% JOTA 4 threads x10-79% 2% 24% 15% 29% 20x20 3% 12% -15% 39% -51% 30x30-91% -27% 1% -14% 1% 90x90-56% -9% -141% 13% 29% 100x100-34% -83% -14% 5% 43% 150x150-49% 53% -78% -69% 4% 200x200 20% 33% 19% 24% -4% 250x250 31% 33% 27% 21% 19% 300x300 35% -21% 20% -29% 18% 500x500 45% -2% -171% 36% 16% 1000x % 39% 28% 45% 23% Największy wzrost wydajności uzyskujemy na 1 wątku w metodzie blokowej. Gdy zwiększa się ilość wątków tym mniejszy zysk w porównaniu z 1 wątkiem i niestety niekiedy ten zysk zamienia się w stratę (jeśli chodzi o JOTA 1). Najlepszy czas uzyskano dla 3 wątków ale wzrost wydajności pomiędzy metodami jest jednym z najmniejszych dla JOTA 4 (choć dalej jest przewaga), natomiast dla JOTA 1 wyszedł największy (choć nie jest wiadome skąd taki rezultat). W niektórych obliczeniach wydajniejsza była metoda klasyczna co widać szczególnie na JOTA 1 (w przypadku największej macierzy). Ze względu na działanie innych aplikacji i osób na serwerach trudno jest dojść do jednoznacznych wniosków. 11

12 Jednymi z ostatnich wykonanych testów był pomiar wydajności czasowej dla klauzuli schedule z parametrami static oraz dynamic oraz kwantem 5%,10%,20% (jednego rozmiaru macierzy) JOTA 3 OMP_SCHEDULE="static[5%,10%,20%]" threads classic bloc 100x100 0, , , , , , , , x200 0, , , , , , , , x300 0, , , , , , , , x500 3, , , , , , , , x100 0, , , , , , , , x200 0, , , , , , , , x300 0, , , , , , , , x500 2, , , , , , , , x100 0, , , , , , , , x200 0, , , , , , , , x300 0, , , , , ,4457 0, , x500 2, , , , , , , , OMP_SCHEDULE="dynamic[5%,10%,20%]" threads classic bloc 100x100 0, , , , , , , , x200 0, , , , , , , , x300 0, , , , , , , , x500 2, , , , , , , , x100 0, , , , , , , , x200 0, , , , , , , , x300 0, , , , , , , , x500 2, , , , , , , , x100 0, , , , , , , , x200 0, , , , , , , , x300 0, , , , , , , , x500 2, , , , , , , , W rezultacie można stwierdzić, że ogólnie parametr dynamic powodował nieznaczne zmniejszenie czasu obliczeń w porównaniu do parametru static. Natomiast kwant miał wpływ na metodę blokową powodując znaczący wzrost czasu obliczeń dla 4 i 8 wątków w przypadku zwiększania kwanta niezależnie od parametru static/dynamic. Ze względu na małą czytelność uzyskanych wyników przeprowadzono testy również dla większych macierzy. 12

13 JOTA 1 OMP_SCHEDULE="static[5%,10%,15%]" threads classic bloc 600x600 4,07 2,14 2,19 2,45 3,05 2,58 3,05 5,80 800x800 9,87 7,26 5,34 5,86 7,13 6,50 11,35 14, x ,45 14,08 10,68 13,06 14,32 8,25 14,52 27, x ,90 23,38 20,87 26,43 24,73 14,34 24,95 46, x ,33 41,23 48,08 55,05 38,68 22,97 125,50 75,15 600x600 5,35 3,37 2,51 2,46 2,94 4,02 5,71 11,26 800x800 14,41 6,86 5,89 5,83 6,90 10,49 13,12 26, x ,08 13,45 12,23 12,74 13,86 26,38 25,05 50, x ,06 25,31 25,24 40,19 24,11 31,78 44,71 90, x ,06 53,48 52,01 52,17 38,31 52,76 73,72 139,60 600x600 4,28 3,10 2,27 2,49 2,98 4,00 5,87 10,49 800x800 10,10 6,87 5,80 6,01 7,11 9,35 13,54 25, x ,07 22,79 12,77 12,89 13,91 20,67 26,55 52, x ,14 25,20 25,40 25,64 24,80 37,94 46,38 87, x ,38 52,01 48,14 50,25 39,08 52,51 73,84 139,15 OMP_SCHEDULE="dynamic[5%,10%,15%]" threads classic bloc 600x600 3,97 2,10 2,14 2,19 2,91 1,53 3,86 5,15 800x800 9,61 7,06 5,19 5,34 7,09 6,42 7,35 12, x ,94 15,66 10,39 11,19 13,84 7,08 14,52 24, x ,82 24,66 20,25 23,39 23,98 12,07 24,97 41, x ,52 30,33 52,25 46,53 37,66 25,07 39,80 68,03 600x600 3,96 2,11 2,19 2,83 2,97 3,37 5,54 11,37 800x800 9,42 7,12 5,06 5,40 7,02 7,80 13,48 27, x ,58 14,14 10,40 11,21 13,74 15,80 29,20 52, x ,28 17,38 22,13 22,74 24,06 27,26 43,78 78, x ,88 28,96 60,18 49,95 38,30 42,69 70,10 125,93 600x600 3,98 3,04 2,26 2,26 2,92 3,32 5,38 9,99 800x800 9,65 7,19 5,02 5,36 7,07 7,94 12,90 26, x ,74 10,13 10,30 11,53 13,92 15,64 25,40 52, x ,39 17,64 20,76 23,72 24,88 28,18 43,79 78, x ,23 29,79 38,99 48,26 37,59 55,51 69,39 143,27 Wcześniejsze wnioski potwierdzają się na w/w większych wielkościach macierzy, gdzie dokładnie widać jaki wpływ na metodę blokową miało zwiększanie kwanta, czasy rosną 13

14 prawie dwukrotnie. W przypadku metody klasycznej trudno jest wnioskować jednoznacznie (nawet już na tak dużych macierzach) jaki wpływ ma zmiana wielkości kwanta oraz schedule. Zmiany wielkości czasowych można powiedzieć są losowe, nie widać tutaj żadnej zależności. Graficzne przedstawienie niektórych uzyskanych rezultatów: METODA KLASYCZNA static 5%,10%,15% 120,0 100,0 80,0 60,0 40, ,0 0,0 5% 5% 5% 10% 10% 15% 15% 15% Rysunek 1 Na powyższym wykresie widać, że zwiększanie kwantu powoduje skok czasu obliczeń, choć niektóre w wyniki przy 15% wartości kwanta są lepsze, niż przy 10%. Im większe macierze tym bardziej wyrównane wyniki czasowe, jedynie w przypadku operacji na 1 wątku czas wybija się ponad przeciętność. 14

15 dynamic 5%,10%,15% 70,0 60,0 50,0 40,0 30, ,0 10,0 0,0 5% 5% 5% 10% 10% 15% 15% 15% Rysunek 2 METODA BLOKOWA static 5%,10%,15% 140,0 120,0 100,0 80,0 60, ,0 20,0 0,0 5% 5% 5% 10% 10% 15% 15% 15% Rysunek 3 15

16 dynamic 5%,10%,15% 160,0 140,0 120,0 100,0 80,0 60, ,0 20,0 0,0 5% 5% 5% 10% 10% 15% 15% 15% Rysunek 4 Podsumowując 4 ostatnie wykresy można powiedzieć, że w metodzie blokowej przy static i dynamic dla 8 wątków najgorzej wypadają obliczenia, zajmują nieporównywalnie więcej czasu niż przy mniejszej ilości wątków, co różni się znacząco od metody klasycznej, gdzie wyniki czasowe były porównywalne nawet i dla 8 wątków.w blokowej static najlepsze rezultaty osiągnięto dla najmniejszej procentowej wartości (czyli dla 5%), natomiast blokowej dynamic rezultaty rozkładają się nieznacznie rosnąco z zyskiem również dla 5%, Najwydajniejsza czasowo okazała się metoda klasyczna przy zastosowanych rozmiarach kwantów. Ostatnimi testami jakie przeprowadzono było wykonanie testów na liczbach zmiennoprzecinkowych, jaki mają wpływ na szybkość obliczeń. 16

17 JOTA 3 Metoda klasyczna (zmiennoprzecinkowe) threads seq 600x600 6, , , , , , x800 15, , , , , , x , , , , , , x , , , , , , x , , , , , ,87497 Metoda blokowa (zmiennoprzecinkowe) threads seq 600x600 3, , , , , , x800 7, , , , , , x , , , , , , x , , , , , , x , , , , , ,59089 Jak widać na przedstawionych tabelach, użycie liczb zmiennoprzecinkowych diametralnie zwiększa czas obliczeń w porównaniu z liczbami całkowitymi w przypadku metody klasycznej, przy największych macierzach różnice sięgają nawet dwukrotnemu spadkowi wydajności. Natomiast metoda blokowa nie wykazuje większych różnic czasowych pomiędzy różnymi typami liczb. Procentowe różnice w porównaniu do programu sekwencyjnego wyglądają następująco: - dla metody klasycznej threads x ,40 55,30 54,24 55,66 56, x800 98,35 60,31 56,78 54,65 57, x ,55 58,00 62,81 58,51 63, x ,37 102,24 66,04 61,15 74, x ,22 75,56 71,67 79,16 86, Najlepsze czasy uzyskano dla 3 i 4 wątków, tak więc nie widać różnicy pomiędzy typami zmiennych, a najgorsze dla 1 wątku równoległego co również zgadza się z poprzednimi obliczeniami. 17

18 - dla metody blokowej threads x ,31 102,19 64,06 95,61 180, x ,54 82,34 63,58 98,19 136, x ,06 56,07 60,01 102,67 128, x ,42 55,20 66,33 99,57 125, x ,99 66,23 60,46 95,37 122, Najgorzej wypadły testy dla 8 wątków, tak samo jak dla poprzednich testów, a najlepiej dla 3 wątków. 18

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

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

CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu

CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu inż. Daniel Solarz Wydział Fizyki i Informatyki Stosowanej AGH 1. Cel projektu. Celem projektu było napisanie wtyczki

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

Przykładem jest komputer z procesorem 4 rdzeniowym dostępny w laboratorium W skład projektu wchodzi:

Przykładem jest komputer z procesorem 4 rdzeniowym dostępny w laboratorium W skład projektu wchodzi: Przetwarzanie równoległe PROJEKT OMP Temat projektu dotyczy analizy efektywności przetwarzania równoległego realizowanego w komputerze równoległym z procesorem wielordzeniowym z pamięcią współdzieloną.

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

Przykładowe sprawozdanie. Jan Pustelnik

Przykładowe sprawozdanie. Jan Pustelnik Przykładowe sprawozdanie Jan Pustelnik 30 marca 2007 Rozdział 1 Sformułowanie problemu Tematem pracy jest porównanie wydajności trzech tradycyjnych metod sortowania: InsertionSort, SelectionSort i BubbleSort.

Bardziej szczegółowo

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

Literatura. 11/16/2016 Przetwarzanie równoległe - wstęp 1 Literatura 1. Wprowadzenie do obliczeń równoległych, Zbigniew Czech, Wydawnictwo Naukowe PWN, 2010, 2013 2. Introduction to Parallel Computing; Grama, Gupta, Karypis, Kumar; Addison Wesley 2003 3. Designing

Bardziej szczegółowo

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI Wprowadzenie do środowiska Matlab 1. Podstawowe informacje Przedstawione poniżej informacje maja wprowadzić i zapoznać ze środowiskiem

Bardziej szczegółowo

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

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1 Wydajność systemów a organizacja pamięci Krzysztof Banaś, Obliczenia wysokiej wydajności. 1 Motywacja - memory wall Krzysztof Banaś, Obliczenia wysokiej wydajności. 2 Organizacja pamięci Organizacja pamięci:

Bardziej szczegółowo

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

10/14/2013 Przetwarzanie równoległe - wstęp 1. Zakres przedmiotu Literatura 1. Introduction to Parallel Computing; Grama, Gupta, Karypis, Kumar; Addison Wesley 2003 2. Wprowadzenie do obliczeń równoległych, Zbigniew Czech, Wydawnictwo Naukowe PWN, 2010. 3. Designing

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

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami dr inż. Mariusz Uchroński Wrocławskie Centrum Sieciowo-Superkomputerowe Agenda Cykliczny problem przepływowy

Bardziej szczegółowo

Wyklad 11 Języki programowania równoległego

Wyklad 11 Języki programowania równoległego 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

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Wykład 7 Jan Kazimirski 1 Pamięć podręczna 2 Pamięć komputera - charakterystyka Położenie Procesor rejestry, pamięć podręczna Pamięć wewnętrzna pamięć podręczna, główna Pamięć zewnętrzna

Bardziej szczegółowo

Numeryczna algebra liniowa

Numeryczna algebra liniowa Numeryczna algebra liniowa Numeryczna algebra liniowa obejmuje szereg algorytmów dotyczących wektorów i macierzy, takich jak podstawowe operacje na wektorach i macierzach, a także rozwiązywanie układów

Bardziej szczegółowo

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

Literatura. 3/26/2018 Przetwarzanie równoległe - wstęp 1 Literatura 1. Wprowadzenie do obliczeń równoległych, Zbigniew Czech, Wydawnictwo Naukowe PWN, 2010, 2013 2. Introduction to Parallel Computing; Grama, Gupta, Karypis, Kumar; Addison Wesley 2003 3. Designing

Bardziej szczegółowo

Macierze RAID MARCEL GAŃCZARCZYK 2TI 1

Macierze RAID MARCEL GAŃCZARCZYK 2TI 1 Macierze RAID MARCEL GAŃCZARCZYK 2TI 1 Macierze RAID (Redundant Array of Independent Disks - nadmiarowa macierz niezależnych dysków Redundant Array of Inexpensive Disks - nadmiarowa macierz niedrogich

Bardziej szczegółowo

Lab 9 Podstawy Programowania

Lab 9 Podstawy Programowania Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany

Bardziej szczegółowo

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa). Algorytmy definicja, cechy, złożoność. Algorytmy napotykamy wszędzie, gdziekolwiek się zwrócimy. Rządzą one wieloma codziennymi czynnościami, jak np. wymiana przedziurawionej dętki, montowanie szafy z

Bardziej szczegółowo

PROBLEMATYKA OBLICZEŃ MASOWYCH W NAUKACH O ZIEMI. Satelitarny monitoring środowiska

PROBLEMATYKA OBLICZEŃ MASOWYCH W NAUKACH O ZIEMI. Satelitarny monitoring środowiska Satelitarny monitoring środowiska Dane satelitarne to obecnie bardzo ważne źródło informacji o powierzchni Ziemi i procesach na niej zachodzących. Obliczono, że na początku roku 2014 na orbitach okołoziemskich

Bardziej szczegółowo

Kryptografia na procesorach wielordzeniowych

Kryptografia na procesorach wielordzeniowych Kryptografia na procesorach wielordzeniowych Andrzej Chmielowiec andrzej.chmielowiec@cmmsigma.eu Centrum Modelowania Matematycznego Sigma Kryptografia na procesorach wielordzeniowych p. 1 Plan prezentacji

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

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

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

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

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1 Wydajność systemów a organizacja pamięci Krzysztof Banaś, Obliczenia wysokiej wydajności. 1 Wydajność obliczeń Dla wielu programów wydajność obliczeń można traktować jako wydajność pobierania z pamięci

Bardziej szczegółowo

Wykorzystanie architektury Intel MIC w obliczeniach typu stencil

Wykorzystanie architektury Intel MIC w obliczeniach typu stencil Wykorzystanie architektury Intel MIC w obliczeniach typu stencil Kamil Halbiniak Wydział Inżynierii Mechanicznej i Informatyki Kierunek informatyka, Rok IV Instytut Informatyki Teoretycznej i Stosowanej

Bardziej szczegółowo

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Załóżmy, że uprawiamy jogging i chcemy monitorować swoje postępy. W tym celu napiszemy program, który zlicza, ile czasu

Bardziej szczegółowo

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

Skalowalność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1 Skalowalność obliczeń równoległych Krzysztof Banaś Obliczenia Wysokiej Wydajności 1 Skalowalność Przy rozważaniu wydajności przetwarzania (obliczeń, komunikacji itp.) często pojawia się pojęcie skalowalności

Bardziej szczegółowo

Programowanie dynamiczne

Programowanie dynamiczne Programowanie dynamiczne Ciąg Fibonacciego fib(0)=1 fib(1)=1 fib(n)=fib(n-1)+fib(n-2), gdzie n 2 Elementy tego ciągu stanowią liczby naturalne tworzące ciąg o takiej własności, że kolejny wyraz (z wyjątkiem

Bardziej szczegółowo

Cele RAID. RAID z ang. Redundant Array of Independent Disks, Nadmiarowa macierz niezależnych dysków.

Cele RAID. RAID z ang. Redundant Array of Independent Disks, Nadmiarowa macierz niezależnych dysków. Macierze RAID Cele RAID RAID z ang. Redundant Array of Independent Disks, Nadmiarowa macierz niezależnych dysków. - zwiększenie niezawodności (odporność na awarie), - zwiększenie wydajności transmisji

Bardziej szczegółowo

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK 1 PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK POLITECHNIKA CZĘSTOCHOWSKA 2 Trendy rozwoju współczesnych procesorów Budowa procesora CPU na przykładzie Intel Kaby Lake

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

Algorytm i złożoność obliczeniowa algorytmu

Algorytm i złożoność obliczeniowa algorytmu Algorytm i złożoność obliczeniowa algorytmu Algorytm - przepis postępowania, którego wykonanie prowadzi do rozwiązania określonego problemu określa czynności, jakie należy wykonać wyszczególnia wszystkie

Bardziej szczegółowo

ALGORYTMY I STRUKTURY DANYCH

ALGORYTMY I STRUKTURY DANYCH KATEDRASYSTEMÓWOBLICZENIOWYCH ALGORYTMY I STRUKTURY DANYCH 1.Rekurencja Rekurencja inaczej rekursja (ang. recursion) to wywołanie z poziomu metody jej samej. Programowanie z wykorzytaniem rekurencji pozwala

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Klasa zbiór pól i metod Obiekt

Bardziej szczegółowo

Task Parallel Library

Task Parallel Library Task Parallel Library Daan Leijen, Wolfram Schulte, and Sebastian Burckhardt prezentacja Michał Albrycht Agenda O potrzebie zrównoleglania Przykłady użycia TPL Tasks and Replicable Tasks Rozdzielanie zadań

Bardziej szczegółowo

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia Podstawy informatyki Elektrotechnika I rok Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia Katedra Energoelektroniki i Automatyki Systemów Przetwarzania Energii AGH Kraków 2017 Tematyka

Bardziej szczegółowo

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst. Schematy blokowe I Jeżeli po schematach blokowych będzie używany język C, to należy używać operatorów: '&&', ' ', '!=', '%' natomiast jeśli Ruby to 'and', 'or', '%', '!='. 1. Dostępne bloki: a) początek:

Bardziej szczegółowo

Sprawozdanie do 5. Projektu z Algorytmów i struktur danych 1

Sprawozdanie do 5. Projektu z Algorytmów i struktur danych 1 Sprawozdanie do 5. Projektu z Algorytmów i struktur danych 1 1. Złożoność obliczeniowa operacji wstawiania i usuwania elementów kolejki dla sterty dwu i trójkierunkowej Powyższy problem badano porównując

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

EFEKTYWNOŚĆ MNOŻENIA MACIERZY W SYSTEMACH Z PAMIĘCIĄ WSPÓŁDZIELONĄ

EFEKTYWNOŚĆ MNOŻENIA MACIERZY W SYSTEMACH Z PAMIĘCIĄ WSPÓŁDZIELONĄ EFEKTYWNOŚĆ MNOŻENIA MACIERZY W SYSTEMACH Z PAMIĘCIĄ WSPÓŁDZIELONĄ 1 Mnożenie macierzy dostęp do pamięci podręcznej [język C, kolejność - j,i,k][1] A[i][*] lokalność przestrzenna danych rózne A,B,C są

Bardziej szczegółowo

Pamięci masowe. ATA (Advanced Technology Attachments)

Pamięci masowe. ATA (Advanced Technology Attachments) Pamięci masowe ATA (Advanced Technology Attachments) interfejs systemowy w komputerach klasy PC i Amiga przeznaczony do komunikacji z dyskami twardymi zaproponowany w 1983 przez firmę Compaq. Używa się

Bardziej szczegółowo

Algorytmy dla maszyny PRAM

Algorytmy dla maszyny PRAM Instytut Informatyki 21 listopada 2015 PRAM Podstawowym modelem służącym do badań algorytmów równoległych jest maszyna typu PRAM. Jej głównymi składnikami są globalna pamięć oraz zbiór procesorów. Do rozważań

Bardziej szczegółowo

ANALIZA EFEKTYWNOŚCI MNOŻENIA MACIERZY W SYSTEMACH Z PAMIĘCIĄ WSPÓŁDZIELONĄ

ANALIZA EFEKTYWNOŚCI MNOŻENIA MACIERZY W SYSTEMACH Z PAMIĘCIĄ WSPÓŁDZIELONĄ ANALIZA EFEKTYWNOŚCI MNOŻENIA MACIERZY W SYSTEMACH Z PAMIĘCIĄ WSPÓŁDZIELONĄ 1 Mnożenie macierzy dostęp do pamięci podręcznej [język C, kolejność - j,i,k][1] A,B,C są tablicami nxn for (int j = 0 ; j

Bardziej szczegółowo

Macierzowe algorytmy równoległe

Macierzowe algorytmy równoległe Macierzowe algorytmy równoległe Zanim przedstawimy te algorytmy zapoznajmy się z metodami dekompozycji macierzy, możemy wyróżnić dwa sposoby dekompozycji macierzy: Dekompozycja paskowa - kolumnowa, wierszowa

Bardziej szczegółowo

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.

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 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. Przedstawienie architektur sprzętu wykorzystywanych do

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

AiSD zadanie trzecie

AiSD zadanie trzecie AiSD zadanie trzecie Gliwiński Jarosław Marek Kruczyński Konrad Marek Grupa dziekańska I5 5 czerwca 2008 1 Wstęp Celem postawionym przez zadanie trzecie było tzw. sortowanie topologiczne. Jest to typ sortowania

Bardziej szczegółowo

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

Wydajność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1 Wydajność obliczeń równoległych Krzysztof Banaś Obliczenia Wysokiej Wydajności 1 Wydajność obliczeń równoległych Podobnie jak w obliczeniach sekwencyjnych, gdzie celem optymalizacji wydajności było maksymalne

Bardziej szczegółowo

Zadania na zaliczenie przedmiotu Przetwarzanie równoległe Zebrał dla roku.ak. 2015/2016 Rafał Walkowiak,

Zadania na zaliczenie przedmiotu Przetwarzanie równoległe Zebrał dla roku.ak. 2015/2016 Rafał Walkowiak, Zadania na zaliczenie przedmiotu Przetwarzanie równoległe Zebrał dla roku.ak. 2015/2016 Rafał Walkowiak, 30.01.2016 Zagadnienia sprzętowe w przetwarzaniu równoległym 1.1 Procesory systemu równoległego

Bardziej szczegółowo

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

Jak ujarzmić hydrę czyli programowanie równoległe w Javie. dr hab. Piotr Bała, prof. UW ICM Uniwersytet Warszawski Jak ujarzmić hydrę czyli programowanie równoległe w Javie dr hab. Piotr Bała, prof. UW ICM Uniwersytet Warszawski Prawo Moore a Ekonomicznie optymalna liczba tranzystorów w układzie scalonym zwiększa się

Bardziej szczegółowo

Język C, tablice i funkcje (laboratorium)

Język C, tablice i funkcje (laboratorium) Język C, tablice i funkcje (laboratorium) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci.

Bardziej szczegółowo

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Tablice wielowymiarowe C umożliwia definiowanie tablic wielowymiarowych najczęściej stosowane

Bardziej szczegółowo

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

Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1 Programowanie procesorów graficznych GPGPU Krzysztof Banaś Obliczenia równoległe 1 OpenCL projektowanie kerneli Przypomnienie: kernel program realizowany przez urządzenie OpenCL wątek (work item) rdzeń

Bardziej szczegółowo

Podstawy Informatyki Systemy sterowane przepływem argumentów

Podstawy Informatyki Systemy sterowane przepływem argumentów Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Komputer i jego architektura Taksonomia Flynna 2 Komputer i jego architektura Taksonomia Flynna Komputer Komputer

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

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1 Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1 Organizacja przedmiotu Dr inż. Robert Banasiak Dr inż. Paweł Kapusta 1 2 Nasze kompetencje R n D Tomografia 3D To nie tylko statyczny obraz!

Bardziej szczegółowo

Metody optymalizacji soft-procesorów NIOS

Metody optymalizacji soft-procesorów NIOS POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych Instytut Telekomunikacji Zakład Podstaw Telekomunikacji Kamil Krawczyk Metody optymalizacji soft-procesorów NIOS Warszawa, 27.01.2011

Bardziej szczegółowo

Język C, tablice i funkcje (laboratorium, EE1-DI)

Język C, tablice i funkcje (laboratorium, EE1-DI) Język C, tablice i funkcje (laboratorium, EE1-DI) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci.

Bardziej szczegółowo

Przetwarzanie równoległe

Przetwarzanie równoległe Przetwarzanie równoległe Kostka równoległe przesyłanie i przetwarzanie Rafał Malinowski, Marek Musielak 1. Cel projektu: Celem projektu było stworzenie i przetestowanie oprogramowania działającego na serwerze

Bardziej szczegółowo

5. Rozwiązywanie układów równań liniowych

5. Rozwiązywanie układów równań liniowych 5. Rozwiązywanie układów równań liniowych Wprowadzenie (5.1) Układ n równań z n niewiadomymi: a 11 +a 12 x 2 +...+a 1n x n =a 10, a 21 +a 22 x 2 +...+a 2n x n =a 20,..., a n1 +a n2 x 2 +...+a nn x n =a

Bardziej szczegółowo

Ćwiczenie 6. Transformacje skali szarości obrazów

Ćwiczenie 6. Transformacje skali szarości obrazów Politechnika Wrocławska Wydział Elektroniki Mikrosystemów i Fotoniki Przetwarzanie sygnałów laboratorium ETD5067L Ćwiczenie 6. Transformacje skali szarości obrazów 1. Obraz cyfrowy Obraz w postaci cyfrowej

Bardziej szczegółowo

- - Ocena wykonaniu zad3. Brak zad3

- - Ocena wykonaniu zad3. Brak zad3 Indeks Zad1 Zad2 Zad3 Zad4 Zad Ocena 20986 218129 ocena 4 Zadanie składa się z Cw3_2_a oraz Cw3_2_b Brak opcjonalnego wywołania operacji na tablicy. Brak pętli Ocena 2 Brak zad3 Ocena wykonaniu zad3 po

Bardziej szczegółowo

Analiza efektywności przetwarzania współbieżnego. Wykład: Przetwarzanie Równoległe Politechnika Poznańska Rafał Walkowiak Grudzień 2015

Analiza efektywności przetwarzania współbieżnego. Wykład: Przetwarzanie Równoległe Politechnika Poznańska Rafał Walkowiak Grudzień 2015 Analiza efektywności przetwarzania współbieżnego Wykład: Przetwarzanie Równoległe Politechnika Poznańska Rafał Walkowiak Grudzień 2015 Źródła kosztów przetwarzania współbieżnego interakcje między procesami

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

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

Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1 Programowanie procesorów graficznych GPGPU Krzysztof Banaś Obliczenia równoległe 1 Projektowanie kerneli Zasady optymalizacji: należy maksymalizować liczbę wątków (w rozsądnych granicach, granice zależą

Bardziej szczegółowo

Informatyka I Lab 06, r.a. 2011/2012 prow. Sławomir Czarnecki. Zadania na laboratorium nr. 6

Informatyka I Lab 06, r.a. 2011/2012 prow. Sławomir Czarnecki. Zadania na laboratorium nr. 6 Informatyka I Lab 6, r.a. / prow. Sławomir Czarnecki Zadania na laboratorium nr. 6 Po utworzeniu nowego projektu, dołącz bibliotekę bibs.h.. Największy wspólny dzielnik liczb naturalnych a, b oznaczamy

Bardziej szczegółowo

Wysokowydajna implementacja kodów nadmiarowych typu "erasure codes" z wykorzystaniem architektur wielordzeniowych

Wysokowydajna implementacja kodów nadmiarowych typu erasure codes z wykorzystaniem architektur wielordzeniowych Wysokowydajna implementacja kodów nadmiarowych typu "erasure codes" z wykorzystaniem architektur wielordzeniowych Ł. Kuczyński, M. Woźniak, R. Wyrzykowski Instytut Informatyki Teoretycznej i Stosowanej

Bardziej szczegółowo

Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe.

Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe. Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe. 1. Wektory i macierze: a. Przykład

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

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

Równoległe algorytmy sortowania. Krzysztof Banaś Obliczenia równoległe 1 Równoległe algorytmy sortowania Krzysztof Banaś Obliczenia równoległe 1 Algorytmy sortowania Algorytmy sortowania dzielą się na wewnętrzne (bez użycia pamięci dyskowej) zewnętrzne (dla danych nie mieszczących

Bardziej szczegółowo

Tablice jednowymiarowe

Tablice jednowymiarowe Tablice jednowymiarowe Gdy mamy do czynienia z zestawem zmiennych, to można z nich zrobić tablicę. Tablica jest ciągiem elementów tego samego typu, który zajmuje ciągły obszar pamięci. Korzyść z zastosowania

Bardziej szczegółowo

Warsztaty dla nauczycieli

Warsztaty dla nauczycieli WPROWADZENIE Wyprowadzanie danych: Wyprowadzanie na ekran komunikatów i wyników umożliwia instrukcja wyjścia funkcja print(). Argumentami funkcji (podanymi w nawiasach) mogą być teksty, wyrażenia arytmetyczne

Bardziej szczegółowo

WYMAGANIA Z MATEMATYKI NA POSZCZEGÓLNE OCENY KLASYFIKACYJNE DLA UCZNIÓW KLAS TRZECICH. Sposoby sprawdzania wiedzy i umiejętności uczniów

WYMAGANIA Z MATEMATYKI NA POSZCZEGÓLNE OCENY KLASYFIKACYJNE DLA UCZNIÓW KLAS TRZECICH. Sposoby sprawdzania wiedzy i umiejętności uczniów WYMAGANIA Z MATEMATYKI NA POSZCZEGÓLNE OCENY KLASYFIKACYJNE DLA UCZNIÓW KLAS TRZECICH Sposoby sprawdzania wiedzy i umiejętności uczniów 1. Odpowiedzi ustne. 2. Sprawdziany pisemne. 3. Kartkówki. 4. Testy.

Bardziej szczegółowo

RAID 1. str. 1. - w przypadku różnych szybkości cała macierz będzie pracowała z maksymalną prędkością najwolniejszego dysku

RAID 1. str. 1. - w przypadku różnych szybkości cała macierz będzie pracowała z maksymalną prędkością najwolniejszego dysku RAID 1 RAID (ang. Redundant Array of Independent Disks, Nadmiarowa macierz niezależnych dysków) - polega na współpracy dwóch lub więcej dysków twardych w taki sposób, aby zapewnić dodatkowe możliwości,

Bardziej szczegółowo

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych. Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych. Jeśli bit znaku przyjmie wartość 0 to liczba jest dodatnia lub posiada wartość 0. Jeśli bit

Bardziej szczegółowo

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

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1 Wydajność systemów a organizacja pamięci Krzysztof Banaś, Obliczenia wysokiej wydajności. 1 Wydajność obliczeń Dla wielu programów wydajność obliczeń można traktować jako wydajność pobierania z pamięci

Bardziej szczegółowo

Nowoczesne technologie przetwarzania informacji

Nowoczesne technologie przetwarzania informacji Projekt Nowe metody nauczania w matematyce Nr POKL.09.04.00-14-133/11 Nowoczesne technologie przetwarzania informacji Mgr Maciej Cytowski (ICM UW) Lekcja 2: Podstawowe mechanizmy programowania równoległego

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

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE Nazwa przedmiotu: PROGRAMOWANIE WSPÓŁBIEŻNE I ROZPROSZONE I KARTA PRZEDMIOTU CEL PRZEDMIOTU PRZEWODNIK PO PRZEDMIOCIE C1. Uzyskanie przez studentów wiedzy na temat architektur systemów równoległych i rozproszonych,

Bardziej szczegółowo

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Część XVIII C++ Funkcje Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Umiemy już podzielić nasz

Bardziej szczegółowo

Podstawy OpenCL część 2

Podstawy OpenCL część 2 Podstawy OpenCL część 2 1. Napisz program dokonujący mnożenia dwóch macierzy w wersji sekwencyjnej oraz OpenCL. Porównaj czasy działania obu wersji dla różnych wielkości macierzy, np. 16 16, 128 128, 1024

Bardziej szczegółowo

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Jak napisać program obliczający pola powierzchni różnych figur płaskich? Część IX C++ Jak napisać program obliczający pola powierzchni różnych figur płaskich? Na początku, przed stworzeniem właściwego kodu programu zaprojektujemy naszą aplikację i stworzymy schemat blokowy

Bardziej szczegółowo

CZEŚĆ PIERWSZA. Wymagania na poszczególne oceny,,matematyka wokół nas Klasa III I. POTĘGI

CZEŚĆ PIERWSZA. Wymagania na poszczególne oceny,,matematyka wokół nas Klasa III I. POTĘGI Wymagania na poszczególne oceny,,matematyka wokół nas Klasa III CZEŚĆ PIERWSZA I. POTĘGI Zamienia potęgi o wykładniku całkowitym ujemnym na odpowiednie potęgi o wykładniku naturalnym. Oblicza wartości

Bardziej szczegółowo

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 Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2013/14 Znajdowanie maksimum w zbiorze

Bardziej szczegółowo

Metody Metody, parametry, zwracanie wartości

Metody Metody, parametry, zwracanie wartości Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Metody Metody, parametry, zwracanie wartości Metody - co to jest i po co? Metoda to wydzielona część klasy, mająca

Bardziej szczegółowo

Instytut Politechniczny Państwowa Wyższa Szkoła Zawodowa. Diagnostyka i niezawodność robotów

Instytut Politechniczny Państwowa Wyższa Szkoła Zawodowa. Diagnostyka i niezawodność robotów Instytut Politechniczny Państwowa Wyższa Szkoła Zawodowa Diagnostyka i niezawodność robotów Laboratorium nr 3 Generacja realizacji zmiennych losowych Prowadzący: mgr inż. Marcel Luzar Cele ćwiczenia: Generowanie

Bardziej szczegółowo

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod

Bardziej szczegółowo

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 Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2014/15 Znajdowanie maksimum w zbiorze

Bardziej szczegółowo

Programowanie procesorów graficznych GPGPU

Programowanie procesorów graficznych GPGPU Programowanie procesorów graficznych GPGPU 1 GPGPU Historia: lata 80 te popularyzacja systemów i programów z graficznym interfejsem specjalistyczne układy do przetwarzania grafiki 2D lata 90 te standaryzacja

Bardziej szczegółowo

Analiza efektywności przetwarzania współbieżnego

Analiza efektywności przetwarzania współbieżnego Analiza efektywności przetwarzania współbieżnego Wykład: Przetwarzanie Równoległe Politechnika Poznańska Rafał Walkowiak 1/4/2013 Analiza efektywności 1 Źródła kosztów przetwarzania współbieżnego interakcje

Bardziej szczegółowo

Programowanie w języku C++ Agnieszka Nowak Brzezińska Laboratorium nr 2

Programowanie w języku C++ Agnieszka Nowak Brzezińska Laboratorium nr 2 Programowanie w języku C++ Agnieszka Nowak Brzezińska Laboratorium nr 2 1 program Kontynuujemy program który wczytuje dystans i ilości paliwa zużytego na trasie, ale z kontrolą danych. A więc jeśli coś

Bardziej szczegółowo

Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Olimpiada O Diamentowy Indeks AGH 2017/18. Informatyka Etap III

Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Olimpiada O Diamentowy Indeks AGH 2017/18. Informatyka Etap III Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Olimpiada O Diamentowy Indeks AGH 017/18 Informatyka Etap III Zadania po 17 punktów Zadanie 1 Dla pewnej N-cyfrowej liczby naturalnej obliczono

Bardziej szczegółowo

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for. Zadania do wykonania Rozwiązując poniższe zadania użyj pętlę for. 1. apisz program, który przesuwa w prawo o dwie pozycje zawartość tablicy 10-cio elementowej liczb całkowitych tzn. element t[i] dla i=2,..,9

Bardziej szczegółowo