PROJEKT 3 PROGRAMOWANIE RÓWNOLEGŁE. K. Górzyński (89744), D. Kosiorowski (89762) Informatyka, grupa dziekańska I3

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

Download "PROJEKT 3 PROGRAMOWANIE RÓWNOLEGŁE. K. Górzyński (89744), D. Kosiorowski (89762) Informatyka, grupa dziekańska I3"

Transkrypt

1 PROJEKT 3 PROGRAMOWANIE RÓWNOLEGŁE K. Górzyński (89744), D. Kosiorowski (89762) Informatyka, grupa dziekańska I3 17 lutego 2011

2 Spis treści 1 Opis problemu 2 2 Implementacja problemu Kod współdzielony Opis kodu i podejście programowe Klasyczne mnożenie macierzy Mnożenie macierzy po transponowaniu Wpływ kolejności pętli w mnożeniu Analiza kodu Efektywność Intel Parallel Studio AMD CodeAnalyst Badanie Koszt współdzielenia i unieważniania danych Niezamierzone współdzielenie Przyspieszenie, efektywność, skalowalność Podsumowanie 24 1

3 Rozdział 1 Opis problemu Projekt związany jest z zagadnieniem mnożenia macierzy. W jego ramach podejmujemy się analizy przetwarzania równoległego, poprawności kodu, ale także pomiaru zdarzeń procesora wpływających na efektywność. Podejmiemy się wyznaczenia miary efektywności, a także przypieszenia. Przedstawimy optymalny przydział macierzy wynikowej do odpowiednich procesorów. Pokażemy również jaki wpływ na przetwarzanie ma transponowanie macierzy. Spróbujemy ten, mimo wszystko złożony proces badawczy, w sposób zwięzły, poparty odpowiednimi argumentami. 2

4 Rozdział 2 Implementacja problemu 2.1 Kod współdzielony #pragma omp parallel sections{ #pragma omp section{ for (int z=0; z <Wiersze/2; z++){ for(int u=0; u <Kolumny/2;u++){ for(int k=0; k <Kolumny;k++){ if(transpose) sumtab[z][u]+=tab1[z][k]*tab2[u][k]; else sumtab[z][u]+=tab1[z][k]*tab2[k][u]; #pragma omp section{ for (int z=wiersze/2; z <Wiersze; z++){ for(int u=0; u <Kolumny/2;u++){ for(int k=0; k <Kolumny;k++){ if(transpose) sumtab[z][u]+=tab1[z][k]*tab2[u][k]; else sumtab[z][u]+=tab1[z][k]*tab2[k][u]; 3

5 #pragma omp section{ for (int z=0; z <Wiersze/2; z++){ for(int u=kolumny/2; u <Kolumny;u++){ for(int k=0; k <Kolumny;k++){ if(transpose) sumtab[z][u]+=tab1[z][k]*tab2[u][k]; else sumtab[z][u]+=tab1[z][k]*tab2[k][u]; #pragma omp section{ for (int z=wiersze/2; z <Wiersze; z++){ for(int u=kolumny/2; u <Kolumny;u++){ for(int k=0; k <Kolumny;k++){ if(transpose) sumtab[z][u]+=tab1[z][k]*tab2[u][k]; else sumtab[z][u]+=tab1[z][k]*tab2[k][u]; 2.2 Opis kodu i podejście programowe Mając na uwadze cel minimalizacji czasu wykonywania wszystkich obliczeń związany z osiągnięciem wyniku mnożenia dwóch macierzy - wynik znajduje się w macierzy sumtab[][] - jedynym słusznym przydziałem zadań do procesorów jest przydział blokowy. Dysponując czterema procesorami podzieliliśmy dane wyjściowe (tablicę wynikową) między procesory. Sposób podziału przedstawiony jest na rysunku 2.1. OpenMP pozwala w łatwy sposób odzwierciedlić ten przydział w kodzie. Jak widać w kodzie zastosowaliśmy cztery bloki sekcji, które odpowiadają poszczególnym ćwiartkom macierzy wynikowej. Dla potrzeb badania zmienne globalne Wiersze oraz Kolumny określające rozmiar macierzy są sobie równe. To pozwala na to by najbardziej wewnętrzna pętla iterowana po zmiennej k przyjmowała wartości od zera do rozmiaru (czyli liczby Wierszy lub Kolumn). 4

6 Rysunek 2.1: Podział blokowy macierzy wyjściowej. W implementacji wspomogliśmy się również zmienną warunkową, określającą czy mamy do czynienia z podejściem wykorzystującym transponowanie macierzy, czy też mnożymy w klasyczny sposób Klasyczne mnożenie macierzy W tym przypadku mnożąc macierz AÖB nie transponujemy macierzy B, zatem w schematyczny sposób każdy z procesorów w podejściu blokowym wykorzystuje połowę wierszy macierzy A i połowę kolumn macierzy B, aby w przydzielonej ćwiartce macierzy wynikowej zamieścić wyniki mnożenia. Przedstawiamy to na rysunku 2.2. Na pewno takie mnożenie jest nieefektywne, z tego względu, że podczas każdego (zależne jest to od rozmiaru macierzy i wielkości Cache procesora) mnożenia danej z macierzy A z daną z macierzy B, następuje ściągnięcie do pamięci podręcznej procesora nowej linii. Dlaczego? W macierzy B odwołujemy się w każdej kolejnej iteracji do nowego wiersza, tym samym do danej, której nie ma w pamięci podręcznej (przy odpowiednio dużej macierzy!). 5

7 Wpływa to na nieefektywne wykorzystanie pamięci podręcznej, gdyż z każdej ściągniętej linii odczytujemy potencjalnie tylko jedną daną (maksymalnie kilka - nigdy wszystkie). Rysunek 2.2: Schemat mnożenia macierzy (brak transpozycji). Dla przykładu, mając macierz 500Ö500, by osiągnąc w macierzy wynikowej jedną komórkę z wynikiem potrzebny jest dostęp do jednego wiersza macierzy A i 500 wierszy macierzy B. W środowisku w jakim badamy problem długość linii Cache to 64B, a całe Cache posiada 1024 linie. Natomiast dane na jakich 6

8 operujemy są typu Integer = 4B. Dane potrzebne do mnożenia z macierzy B to 500 linii Cache (64B) razy 16 (tyle linii Cache zajmują dane w jednym wierszu o szerokości 250 kolumn). Jak widzimy jest fizycznie niemożliwe wykorzystanie wszystkich danych macierzy B wykorzystywanych przy mnożeniu podczas jednego pobrania określonej linii do pamięci podręcznej procesora. Poglądowy rysunek utwierdza nas w przekonaniu, że ponowny dostęp do linii PP zawierającej dane z macierzy B następuje po < n n działaniach. Natomiast ściągnięte dane z macierzy A są w kolejnych iteracjach - odwołaniach 2 po kolei odczytywane z Cache, po czym stają się rzecz jasna niepotrzebne i mogą zostać nadpisane. Rysunek 2.3: Poglądowy odzwierciedlenie macierzy w Cache Mnożenie macierzy po transponowaniu Pisaliśmy wcześniej o nieefektywnym wykorzystaniu pamięci przez procesory. Teraz nadszedł czas rozwiązania tego problemu. Jak wiemy proste transponowanie macierzy B (musi być to druga macierz!) przebiega w sposób następujący: 7

9 int i,j; for(i=0; i<wiersze; i++) for(j=0; j i; j++) swap(i,j); gdzie definicja funkcji swap() to: void swap(int i, int j){ int temp = tabb[i][j]; tabb[i][j] = tabb[j][i]; tabb[j][i] = temp; W ramach badania dowiedziemy, że koszt transpozycji macierzy B jest na tyle mały, żeby rzec, iż transpozycja jest opłacalna. Dlaczego warto transponować? Otóż jest to bardzo przydatne, by efektywnie wykorzystać pamięć podręczną procesora. Z uwagi, że teraz mnożenie macierzy A razy B wiąże się z mnożeniem de facto wiersza razy wiersz, więc każda kolejna dana mnożona znajduje się w pamięci podręcznej obok danej pobieranej wcześniej. Inaczej mówiąc ściągnięta linia do Cache zostaje w pełni wykorzystana (na tym etapie zakładamy, że wielkość wiersza macierzy jest wielokrotnością rozmiaru linii Cache procesorów). Obszary macierzy wejściowych i wynikowych jakimi zajmuje się dany procesor przedstawione są na rysunku 2.4. Z uwagi na to, że pamięć podręczna procesora nie jest aż tak diametralnie mała dla małych rozmiarów macierzy czas mnożenia może być porównywalny - mówimy o efekcie utrzymywania danych za całej macierzy B w pamięci podręcznej. Natomiast kiedy macierz osiąga większe rozmiary może być tak, że raz ściągnięta linia (wielkości linii Cache) danych może nie doczekać się ponownego wykorzystania, z uwagi na brak miejsca i bezwzględną konieczność ściągnięcia innych danych w to miejsce. Mówimy tutaj o n2 n2 pobrań do PP

10 Rysunek 2.4: Schemat mnożenia macierzy (po transponowaniu macierzy B). Dla każdego procesora taka operacja oznacza tyle, że ściągnięta linia danych do Cache zostaje w kolejnych iteracjach wykorzystywana. Inaczej - każda dana z linii po kolei zostaje odczytywana celem otrzymania wyniku we wskazanej komórce macierzy wynikowej. Nie oznacza to jednak, że wskazana linia z danymi wystarczy, aby była raz pobrana dla zapewnienia wyników we wskazanej ćwiartce macierzy wynikowej. Z uwagi na ograniczenie wielkościowe Cache dla macierzy rozmiaru 180 (180*90/ linii Cache; 180 kolumn, 90 wierszy, 16 obiektów Integer w linii) potrzeba ponownego ściągania tych samych danych z pamięci operacyjnej do pamięci podręcznej. 9

11 2.2.3 Wpływ kolejności pętli w mnożeniu Zmiana kolejności pętli iterującej po idenksach wierszów i kolumna w przypadku metody bez transponowania macierzy niesie za sobą na pewno negatywny skutek jeżeli spojrzymy na macierz wynikową. W przypadku macierzy wejściowych zamienią się one tylko charakterystyką - odzwierciedlenie macierzy A w pamięci przyjmie charakterystykę macierzy B i odwrotnie. Natomiast w przypadku macierzy wynikowej może wystąpić masowo zjawisko ponownych pobrań do PP procesora wskazanej linii, w której nastapi modyfikacja (zapis) jednej danej. W przypadku metody wykorzystującej transponowanie skutek in minus będzie dotyczyć tylko macierzy wynikowej. Jeszcze kilka słów odnośnie kolejności samych iteracji w pętlach. Rzeczą pożądaną wydaje się być manualne ustawienie kolejności (innej kolejności) iteracji w pętlach iterujących po wierszach i kolumnach dla każdego z czterech procesorów (w kodzie - sekcji). Dla przykładu - powiedzmy, że procesor P0 i procesor P1 iterują od zerowego wiersza. W takim wypadku pobrania linii z pamięci operacyjnej dotyczące tych samych danych macierzy A mogą się pokrywać czasowo, co wpłynie rzecz jasna na konieczne opóźnienia. Eliminacja tego zjawiska powoduje zrównoleglenie komunikacji na linii pamięć RAM - pamięć Cache procesorów (przesyłanie przez różne porty pamięci). Rysunek 2.5: Przykładowa realizacja kolejności iteracji w pętlach dla każdego z procesorów. 10

12 Rysunek 2.6: Mnożenie macierzy - odzwierciedlenie w Cache. 11

13 Rozdział 3 Analiza kodu 3.1 Efektywność Już kilka słów dotyczących efektywności zostało przedstawionych przy opisie dwóch metod obliczeń. Teraz postaram się w sposób bardziej zrozumiały poprzeć założenia konkretnymi liczbami i dowieść prawdziwość przyjętego przydziału blokowego do procesorów. Otóż jeden, konkretny procesor dla wyznaczenia sobie przydzielonej części jednego wiersza macierzy wynikowej sumtab[][] potrzebuje ½liczby kolumn macierzy B i jeden wiersz macierzy A. Po tych obliczeniach wskazany wiersz macierzy A staje się niepotrzebny. Zatem pobierany zostaje następny wiersz macierzy A (kolumny macierzy B są pamiętane), co pozwala przeprowadzić obliczenia i wyznaczyć kolejny wiersz (skrót myślowy - mamy na myśli część wiersza przydzieloną temu procesorowi) macierzy wynikowej. Stąd możemy wyznaczyć wielkość Cache niezbędnej do wykonania obliczeń: ˆ macierz A: 1 wiersz * liczba kolumn * 4B (rozmiar Integer) ˆ macierz B: ½liczby kolumn * liczba wierszy * 4B ˆ macierz C: długość linii Cache procesora (64B) To pozwala wyznaczyć granicę rozmiaru macierzy, dla której w ramach jednego procesora zapewnimy jednokrotne pobranie do pamięci podręcznej danych z tablic A i B a tym samym optymalizujemy liczbę trafień dla podanego podziału pracy. 12

14 Zgodnie z naszym środowiskiem laboratoryjnym procesor ma do dyspozycji 64kB Cache, więc: 64kB = 64B + n 4B n2 4B 65534B = 64B + n 4B + n 2 2B = 4n + 2n 2 n < 180 W takim wypadku, zakładając rozmiar macierzy na poziomie n=178 (lub mniej) możemy obliczyć liczbę dostępów do danych w ramach jednego procesora: ˆ macierz A: n3 = M (każdy element wiersza (n-elementów, 4 4 n-wierszy) wykorzystywany jeden raz dla każdej pobranej kolumny macierzy B ( n-kolumn)) 2 2 ˆ macierz B: n3 = M (każdy element kolumny (n-elementów, 4 4 n-kolumn) wykorzystywany jeden raz dla każdego pobranego wiersza 2 macierzy A ( n-wierszy)) 2 W założonym przypadku dane są czytane po ich jednokrotnym pobraniu do Cache procesora, a dodatkowo wszystkie dane są wykorzystane. Wnioskując, liczba pobrań linii Cache z pamięci operacyjnej odpowiada liczbie braku trafień. W łatwy sposób możemy wyznaczyć liczbę pobrań z pamięci operacyjnej do Cache: ˆ macierz A: n2 2 = = obiekty typu Integer ˆ macierz B: n2 2 = obiekty typu Integer Z uwagi, że linia Cache procesora (64B) zawiera 16 obiektów typu Integer (4B) liczba pobrań wynosi: = 1981 Stosunek trafień natomiast wynosi: Analiza czasów i koncepcji, rozważania nt. problemów mogących wstąpić w realizacji kodu doprowadziły nas do wniosku, że procesory, które wykorzystują do obliczeń te same fragmenty tablic A i B (kolumny lub wiersze) powinny rozpoczynać pracę każdy od innego. Chodzi tutaj o zawartość w potencjalnie innej linii pamięci, co umożliwia komunikację i przesyłanie danej linii do Cache przez różne porty pamięci. Jest to konieczne dla umożliwienia jednoczesnego dla wszystkich procesorów dostępu do pamięci operacyjnej. 13

15 Ciekawym przypadkiem jest jest macierz wynikowa sumtab[][], której elementy są wynikiem mnożenia elementów macierzy A i B, a w konsekwencji dodawania sum częściowych. Liczba takich dostępów w celu inkrementacji wartości byłaby równa rozmiarowi macierzy, co staje się mało efektywne. Zatem optymalizując wykonanie mnożenia możemy przyjąć iż sumy częściowe będą przechowywane w rejestrach procesora - to doprowadza do jednokrotnej aktualizacji elementu macierzy wynikowej. To ułatwia pracę, bo elementy macierzy wynikowej przydzielone do danego procesora są jednokrotnie sprowadzane do Cache, i wykonywany jest na każdym z elementów linii jednokrotny odczyt i zapis. Dla każdego procesora przypada n2 = 1782 = 7921 elementów macierzy wynikowej. Liczba pobrań danych do Cache to 7921 = 496. Liczba trafień w takim razie wynosi = (liczba odczytów + liczba zapisów - liczba pobrań). Natomiast stosunek pobrań to Pozostaje nam do przeanalizowania stosunek trafień w stosunku do wszystkich macierzy, a ten wynosi:

16 3.2 Intel Parallel Studio Concurrency Analysis Zmiana kolejności iteracji pętli - optymalizacja dostępu do RAM Rysunek 3.1: Porównanie analiz dla metody wykorzystującej transpozycję (kolor jaśniejszy) i bez transpozycji macierzy B (kolor ciemny) dla różnych rozmiarów macierzy. Na powyższym rysunku widzimy bezpośrednie porównanie, z których możemy odczytać, że przewaga metody wykorzystującej transpozycję jest utrzymana. Przewaga wzrasta wraz ze wzrostem rozmiaru macierzy. Z wykresów przedstawiających oddzielnie poszczególne implementacje możemy odczytać średnie użycie procesora. Stąd dla transpozycji użycie średnie wynosi od 3.78 do 3.84 na rzecz jasna 4 rdzenie. Natomiast dla wersji bez transpozycji mamy spadek zużycia do poziomu 3.17 wraz ze wzrostem rozmiaru macierzy do n=500. //dodać dlaczego tak jest 15

17 Zmiana kolejności pętli Rysunek 3.2: Porównanie analiz dla metody wykorzystującej transpozycję (kolor jaśniejszy) i bez transpozycji macierzy B (kolor ciemny) dla różnych rozmiarów macierzy. Tutaj godny uwagi jest fakt, że koszt transpozycji macierzy B staje się bardzo wysoki jeśli weźmiemy pod uwagę, że mnożymy macierze małych rozmiarów - ten koszt oczywiście staje się niezauważalny dla większych macierzy, ale wówczas występuje strata w części zrównoleglonej (4 procesory wykonujące obliczenia na przydzielonego bloku). Z czym związany jest taki wzrost kosztu? Transponując macierz B, do uzyskania wyniku w jednej komórce macierzy ostatecznej, potrzebujemy jednego wiersza danych. Oczywiście, jak pisaliśmy wcześniej, rozmieszczenie danych w pamięci jest w tym wypadku bardzo korzystne. Systuacja się zmienia kiedy zamienimy pętle, przez co w konsekwencji pętla iterująca po wszystkich elementach takiego wiersza jest umieszczona na zewnątrz pętli iterującej po kolejnych wierszach. Skutek jest taki, że elementy macierzy wynikowej nie są generowane po kolei (stąd brak możliwości użycia sum częściowych) a jedynie uzupełniane aż obliczenia dla danej pozycji dobiegną końca. To wiąże się z nieoptymalnym wykorzystaniem pamięci i co za tym idzie odpowiednim kosztem. Natomiast korzystniej zamiana pętli wpływa na metodę beztranspozycyjną - po sobie wykorzystywane są elementy macierzy B leżące obok siebie w pobranej linii. Jednak 16

18 koszt wielokrotnego uzupełnienia wyniku pozostaje. Dlaczego koszt obliczeń na macierzy rozmiaru n=120 nie uległ pogorszeniu? Nie przypadkowo wybraliśmy taki rozmiar macierzy. W dziale 3.1 podaliśmy rozmiar macierzy który przy założonej obsłudze prowadziłby do optymalnego wykorzystania pamięci podręcznej procesorów. Rozmiar ten pozwala na wykorzystanie elementów macierzy B raz pobranych do pamięci podręcznej procesorów. Inaczej mówiąc - liczba obiektów macierzy i ich rozmiar jest mniejsza od wielkości pamięci podręcznej. Zatem wykorzystanie procesora dla metody z transpozycją wzrasta z uwagi na dłuższy czas obliczeń (związany z pobieraniem wielokrotnie dancych do pamięci podręcznej) dla coraz większych macierzy. Natomiast dla małych macierzy, poprzez koszt związany z samą transpozycją (transpozycja wykonywana sekwencyjnie na jednym wątku) to zużycie mieści się pomiędzy 1.0 a 2.5. Klasyczny algorytm wykorzystujący sumy częściowe Rysunek 3.3: Porównanie analiz dla metody wykorzystującej transpozycję (kolor jaśniejszy) i bez transpozycji macierzy B (kolor ciemny) dla różnych rozmiarów macierzy. Obecny rysunek przedstawia niemal takie same wyniki jak poprzedni (dla zamienionych pętli) z tą jednak ważna i oczywistą różnicą, że teraz trans- 17

19 pozycja jest lepszą metodą dla coraz większych rozmiarów macierzy. Brak zamiany pętli prowadzi do odwrócenia sytuacji. Jednak przyglądając się bliżej wynikom można dojść do jeszcze jednego wniosku. Otóż dla każdej metody czasy tutaj są nieco lepsze od odpowiadającym im czasom z rysunku 3.2. Nie ingerując w kolejność pętli wykorzystać sumy częściowe - jest to możliwe, ponieważ elementy macierzy wynikowej są obliczane w pełni po kolei. Threading Errors i Memory Errors Przeprowadziliśmy inspekcję pamięci, jednak ku uciesze naszych oczu znajwisko wycieku pamięci nie następowało. Podobnie sytuacja miała się z wątkami - Parallel Inspector nie wykrył żadnych błędów. 18

20 3.3 AMD CodeAnalyst Thread Profiling Zmiana kolejności iteracji pętli - optymalizacja dostępu do RAM Rysunek 3.4: Porównanie profili dla metody wykorzystującej transpozycję (u dołu) i bez transpozycji macierzy B (u góry) dla różnych rozmiarów macierzy. Widzimy, że nie w implementacji nie ustawiono maski powinowactwa - poszczególne wątki nie są na sztywno przypisane do konkretnych rdzeni. Przewaga transpozycji zostaje utrzymana. Sekcje tworzone w bloku zrównoleglonym na rysynkach przedstawiają poszczególne procesory. Rozpoczącie sekcji (wątków) jest niemal jednoczesne - oczekiwanie pozostałych procesorów są niewielkie - podobnie jak zakończenia. Świadczy to o tym, że każdy procesor ma mniej więcej tyle samo pracy do wykonania. Nie występują nielokalne dostępy do pamięci. 19

21 Zmiana kolejności pętli Rysunek 3.5: Porównanie profili dla metody wykorzystującej transpozycję (u dołu) i bez transpozycji macierzy B (u góry). Profilowanie satysfakcjonujące - w tej metodzie przewagę powinna uzyskać metoda beztranspozycyjna. cechy profilowania identyczne jak poprzednio. Brak nielokalnych, kosztownych dostępów do pamięci. Klasyczny algorytm wykorzystujący sumy częściowe Klasyczna metoda wykorzystująca sumy częściowe i transpozycję pozwala, jak widać bardzo szybko osiągnąć wynik. W profilach nie widać nic niepokojącego. Nie zidentyfikowano żadnych nielokalnych odwołań do pamięci. Na następnej stronie został zobrazowany efekt profilowania. 20

22 Rysunek 3.6: Porównanie profili dla metody wykorzystującej transpozycję (u dołu) i bez transpozycji macierzy B (u góry). Investigate Data Access Zmiana kolejności pętli oraz klasyczny algorytm wykorzystujący sumy częściowe 21

23 Rysunek 3.7: Badanie dostępów do danych w pamięci: A) metoda ze zmianą kolejności pętli, B) klasyczny algorytm; Najpierw metoda z bez transpozycji, zaraz pod nią metoda z transpozycją. 22

24 Rozdział 4 Badanie 4.1 Koszt współdzielenia i unieważniania danych 4.2 Niezamierzone współdzielenie 4.3 Przyspieszenie, efektywność, skalowalność 23

25 Rozdział 5 Podsumowanie 24

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

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

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

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

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

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

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

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

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności. Procesory wielordzeniowe (multiprocessor on a chip) 1 Procesory wielordzeniowe 2 Procesory wielordzeniowe 3 Konsekwencje prawa Moore'a 4 Procesory wielordzeniowe 5 Intel Nehalem 6 Architektura Intel Nehalem

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

Jak zawsze wyjdziemy od terminologii. While oznacza dopóki, podczas gdy. Pętla while jest

Jak zawsze wyjdziemy od terminologii. While oznacza dopóki, podczas gdy. Pętla while jest Pętle Pętla to pewien fragment kodu, który jest wykonywany wielokrotnie. Wyobraź sobie taką sytuację. Piszesz program do szyfrowania danych. Dane są szyfrowane kolejno bajt po bajcie. Załóżmy, że plik

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

Materiały pomocnicze do laboratorium. 1. Miary oceny efektywności 2. Mnożenie macierzy 3. Znajdowanie liczb pierwszych

Materiały pomocnicze do laboratorium. 1. Miary oceny efektywności 2. Mnożenie macierzy 3. Znajdowanie liczb pierwszych Materiały pomocnicze do laboratorium 1. Miary oceny efektywności 2. Mnożenie macierzy 3. Znajdowanie liczb pierwszych 4. Optymalizacja dostępu do pamięci Miary efektywności systemów współbieżnych System

Bardziej szczegółowo

System obliczeniowy laboratorium oraz. mnożenia macierzy

System obliczeniowy laboratorium oraz. mnożenia macierzy System obliczeniowy laboratorium.7. oraz przykładowe wyniki efektywności mnożenia macierzy opracował: Rafał Walkowiak Materiały dla studentów informatyki studia niestacjonarne październik 1 SYSTEMY DLA

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

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

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

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

3. Macierze i Układy Równań Liniowych

3. Macierze i Układy Równań Liniowych 3. Macierze i Układy Równań Liniowych Rozważamy równanie macierzowe z końcówki ostatniego wykładu ( ) 3 1 X = 4 1 ( ) 2 5 Podstawiając X = ( ) x y i wymnażając, otrzymujemy układ 2 równań liniowych 3x

Bardziej szczegółowo

Wskaźniki w C. Anna Gogolińska

Wskaźniki w C. Anna Gogolińska Wskaźniki w C Anna Gogolińska Zmienne Zmienną w C można traktować jako obszar w pamięci etykietowany nazwą zmiennej i zawierający jej wartość. Przykład: kod graficznie int a; a a = 3; a 3 Wskaźniki Wskaźnik

Bardziej szczegółowo

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na

Bardziej szczegółowo

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe I. Struktury sterujące.bezpośrednie następstwo (A,B-czynności) Wykład _2 Algorytmy sortowania tablic Sortowanie bąbelkowe Elementy języka stosowanego do opisu algorytmu Elementy Poziom koncepcji Poziom

Bardziej szczegółowo

MACIERZE. Sobiesiak Łukasz Wilczyńska Małgorzata

MACIERZE. Sobiesiak Łukasz Wilczyńska Małgorzata MACIERZE Sobiesiak Łukasz Wilczyńska Małgorzata Podstawowe pojęcia dotyczące macierzy Nie bez przyczyny zaczynamy od pojęcia macierzy, które jest niezwykle przydatne we wszystkich zastosowaniach, obliczeniach

Bardziej szczegółowo

Lekcja : Tablice + pętle

Lekcja : Tablice + pętle Lekcja : Tablice + pętle Wprowadzenie Oczywiście wiesz już jak dużo można osiągnąć za pomocą tablic oraz jak dużo można osiągnąć za pomocą pętli, jednak tak naprawdę prawdziwe możliwości daje połączenie

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

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

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

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

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

Zarządzanie pamięcią w systemie operacyjnym

Zarządzanie pamięcią w systemie operacyjnym Zarządzanie pamięcią w systemie operacyjnym Cele: przydział zasobów pamięciowych wykonywanym programom, zapewnienie bezpieczeństwa wykonywanych procesów (ochrona pamięci), efektywne wykorzystanie dostępnej

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

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny Algorytm to przepis; zestawienie kolejnych kroków prowadzących do wykonania określonego zadania; to uporządkowany sposób postępowania przy rozwiązywaniu zadania, problemu, z uwzględnieniem opisu danych

Bardziej szczegółowo

Macierze. Rozdział Działania na macierzach

Macierze. Rozdział Działania na macierzach Rozdział 5 Macierze Funkcję, która każdej parze liczb naturalnych (i, j) (i 1,..., n; j 1,..., m) przyporządkowuje dokładnie jedną liczbę a ij F, gdzie F R lub F C, nazywamy macierzą (rzeczywistą, gdy

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

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4 Dr inż. Dariusz JĘDRZEJCZYK Wskaźniki Dynamiczna alokacja pamięci Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Wskaźnik to

Bardziej szczegółowo

Wieczorowe Studia Licencjackie Wrocław, Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa

Wieczorowe Studia Licencjackie Wrocław, Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa Wieczorowe Studia Licencjackie Wrocław, 7.11.2006 Wstęp do programowania Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa Zaprezentujemy teraz algorytm na wyznaczanie wszystkich

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

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

Magistrala systemowa (System Bus)

Magistrala systemowa (System Bus) Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki systemowa (System Bus) Pamięć operacyjna ROM, RAM Jednostka centralna Układy we/wy In/Out Wstęp do Informatyki

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

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer Realizacja algorytmu przez komputer Wstęp do informatyki Wykład UniwersytetWrocławski 0 Tydzień temu: opis algorytmu w języku zrozumiałym dla człowieka: schemat blokowy, pseudokod. Dziś: schemat logiczny

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

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

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego Mariusz Uchroński 3 grudnia 2010 Plan prezentacji 1. Wprowadzenie 2.

Bardziej szczegółowo

WHILE (wyrażenie) instrukcja;

WHILE (wyrażenie) instrukcja; INSTRUKCJE ITERACYJNE WHILE, DO WHILE, FOR Instrukcje iteracyjne pozwalają powtarzać daną instrukcję programu określoną liczbę razy lub do momentu osiągnięcia określonego skutku. Pętla iteracyjna while

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

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

Architektura potokowa RISC

Architektura potokowa RISC Architektura potokowa RISC Podział zadania na odrębne części i niezależny sprzęt szeregowe Brak nawrotów" podczas pracy potokowe Przetwarzanie szeregowe i potokowe Podział instrukcji na fazy wykonania

Bardziej szczegółowo

WHILE (wyrażenie) instrukcja;

WHILE (wyrażenie) instrukcja; INSTRUKCJE ITERACYJNE WHILE, DO WHILE, FOR Instrukcje iteracyjne pozwalają powtarzać daną instrukcję programu określoną liczbę razy lub do momentu osiągnięcia określonego skutku. Pętla iteracyjna while

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

System plików. Warstwowy model systemu plików

System plików. Warstwowy model systemu plików System plików System plików struktura danych organizująca i porządkująca zasoby pamięci masowych w SO. Struktura ta ma charakter hierarchiczny: urządzenia fizyczne strefy (partycje) woluminy (w UNIXie:

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

Programowanie i techniki algorytmiczne

Programowanie i techniki algorytmiczne Temat 2. Programowanie i techniki algorytmiczne Realizacja podstawy programowej 1) wyjaśnia pojęcie algorytmu, podaje odpowiednie przykłady algorytmów rozwiązywania różnych 2) formułuje ścisły opis prostej

Bardziej szczegółowo

Zapis algorytmów: schematy blokowe i pseudokod 1

Zapis algorytmów: schematy blokowe i pseudokod 1 Zapis algorytmów: schematy blokowe i pseudokod 1 Przed przystąpieniem do napisania kodu programu należy ten program najpierw zaprojektować. Projekt tworzącego go algorytmu może być zapisany w formie schematu

Bardziej szczegółowo

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności. Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle Krzysztof Banaś, Obliczenia wysokiej wydajności. 1 Organizacja pamięci Organizacja pamięci współczesnych systemów komputerowych

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy Wstęp do informatyki Architektura komputera Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki System komputerowy systemowa (System Bus) Pamięć operacyjna ROM,

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

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle Paweł Szołtysek 12 czerwca 2008 Streszczenie Planowanie produkcji jest jednym z problemów optymalizacji dyskretnej,

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

MATERIAŁY POMOCNICZE DO LABORATORIUM Z PRZETWARZANIA RÓWNOLEGŁEGO KWIECIEŃ 2018

MATERIAŁY POMOCNICZE DO LABORATORIUM Z PRZETWARZANIA RÓWNOLEGŁEGO KWIECIEŃ 2018 Analiza efektywności mnożenia macierzy w systemach z pamięcią współdzieloną MATERIAŁY POMOCNICZE DO LABORATORIUM Z PRZETWARZANIA RÓWNOLEGŁEGO KWIECIEŃ 2018 1 Mnożenie macierzy dostęp do pamięci podręcznej

Bardziej szczegółowo

Zad. 3: Układ równań liniowych

Zad. 3: Układ równań liniowych 1 Cel ćwiczenia Zad. 3: Układ równań liniowych Wykształcenie umiejętności modelowania kluczowych dla danego problemu pojęć. Definiowanie właściwego interfejsu klasy. Zwrócenie uwagi na dobór odpowiednich

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

Analizator wydajności AMD CodeAnalyst

Analizator wydajności AMD CodeAnalyst Analizator wydajności AMD CodeAnalyst Dostępny bezpłatnie dla Windows i Linux (różne funkcjonalności w obu systemach) Pozwala na 4 tryby pracy - profilowania: Bazujące na upływie czasu próbkowanie aplikacji

Bardziej szczegółowo

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych B.1. Dostęp do urządzeń komunikacyjnych Sterowniki urządzeń zewnętrznych widziane są przez procesor jako zestawy rejestrów

Bardziej szczegółowo

Optymalizacja harmonogramów budowlanych - szeregowanie zadań. Mgr inż. Aleksandra Radziejowska AGH Akademia Górniczo-Hutnicza w Krakowie

Optymalizacja harmonogramów budowlanych - szeregowanie zadań. Mgr inż. Aleksandra Radziejowska AGH Akademia Górniczo-Hutnicza w Krakowie Optymalizacja harmonogramów budowlanych - szeregowanie zadań Mgr inż. Aleksandra Radziejowska AGH Akademia Górniczo-Hutnicza w Krakowie Opis zagadnienia Zadania dotyczące szeregowania zadań należą do szerokiej

Bardziej szczegółowo

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek Wstęp do informatyki Architektura komputera Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki System komputerowy systemowa (System Bus) Pamięć operacyjna ROM,

Bardziej szczegółowo

Sortowanie zewnętrzne

Sortowanie zewnętrzne Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet Zielonogórski Sortowanie zewnętrzne 1 Wstęp Bardzo często

Bardziej szczegółowo

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady Pętle i tablice. Spotkanie 3 Dr inż. Dariusz JĘDRZEJCZYK Pętle: for, while, do while Tablice Przykłady 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Pętla w największym uproszczeniu służy

Bardziej szczegółowo

Programowanie w Baltie klasa VII

Programowanie w Baltie klasa VII Programowanie w Baltie klasa VII Zadania z podręcznika strona 127 i 128 Zadanie 1/127 Zadanie 2/127 Zadanie 3/127 Zadanie 4/127 Zadanie 5/127 Zadanie 6/127 Ten sposób pisania programu nie ma sensu!!!.

Bardziej szczegółowo

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, rok

Bardziej szczegółowo

1 Układy równań liniowych

1 Układy równań liniowych II Metoda Gaussa-Jordana Na wykładzie zajmujemy się układami równań liniowych, pojawi się też po raz pierwszy macierz Formalną (i porządną) teorią macierzy zajmiemy się na kolejnych wykładach Na razie

Bardziej szczegółowo

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2010/2011 Wykład nr 7 (24.01.2011) dr inż. Jarosław Forenc Rok akademicki

Bardziej szczegółowo

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, Lista 3 Zestaw I Zadanie 1. Zaprojektować i zaimplementować funkcje: utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, zapisz

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

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

6. Pętle while. Przykłady

6. Pętle while. Przykłady 6. Pętle while Przykłady 6.1. Napisz program, który, bez użycia rekurencji, wypisze na ekran liczby naturalne od pewnego danego n do 0 włącznie, w kolejności malejącej, po jednej liczbie na linię. Uwaga!

Bardziej szczegółowo

Aproksymacja funkcji a regresja symboliczna

Aproksymacja funkcji a regresja symboliczna Aproksymacja funkcji a regresja symboliczna Problem aproksymacji funkcji polega na tym, że funkcję F(x), znaną lub określoną tablicą wartości, należy zastąpić inną funkcją, f(x), zwaną funkcją aproksymującą

Bardziej szczegółowo

1 Wprowadzenie do algorytmiki

1 Wprowadzenie do algorytmiki Teoretyczne podstawy informatyki - ćwiczenia: Prowadzący: dr inż. Dariusz W Brzeziński 1 Wprowadzenie do algorytmiki 1.1 Algorytm 1. Skończony, uporządkowany ciąg precyzyjnie i zrozumiale opisanych czynności

Bardziej szczegółowo

W jakim celu to robimy? Tablica Karnaugh. Minimalizacja

W jakim celu to robimy? Tablica Karnaugh. Minimalizacja W jakim celu to robimy? W projektowaniu układów cyfrowych istotne jest aby budować je jak najmniejszym kosztem. To znaczy wykorzystanie dwóch bramek jest tańsze niż konieczność wykorzystania trzech dla

Bardziej szczegółowo

Rozdział 5. Macierze. a 11 a a 1m a 21 a a 2m... a n1 a n2... a nm

Rozdział 5. Macierze. a 11 a a 1m a 21 a a 2m... a n1 a n2... a nm Rozdział 5 Macierze Funkcję, która każdej parze liczb naturalnych (i,j) (i = 1,,n;j = 1,,m) przyporządkowuje dokładnie jedną liczbę a ij F, gdzie F = R lub F = C, nazywamy macierzą (rzeczywistą, gdy F

Bardziej szczegółowo

METODY ELIMINACJI STUDENTÓW INFORMATYKI. Czyli co student INF-EKA powinien wiedzieć o MESI...

METODY ELIMINACJI STUDENTÓW INFORMATYKI. Czyli co student INF-EKA powinien wiedzieć o MESI... METODY ELIMINACJI STUDENTÓW INFORMATYKI Czyli co student INF-EKA powinien wiedzieć o MESI... copyright Mahryanuss 2004 Data Cache Consistency Protocol Czyli po naszemu protokół zachowujący spójność danych

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

Programowanie dynamiczne

Programowanie dynamiczne Programowanie dynamiczne Patryk Żywica 5 maja 2008 1 Spis treści 1 Problem wydawania reszty 3 1.1 Sformułowanie problemu...................... 3 1.2 Algorytm.............................. 3 1.2.1 Prosty

Bardziej szczegółowo

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 INFORMATYKA W SZKOLE Dr inż. Grażyna KRUPIŃSKA grazyna@fis.agh.edu.pl D-10 pokój 227 Podyplomowe Studia Pedagogiczne 2 Algorytmy Nazwa algorytm wywodzi się od nazwiska perskiego matematyka Muhamed ibn

Bardziej szczegółowo

Rozdział 1 PROGRAMOWANIE LINIOWE

Rozdział 1 PROGRAMOWANIE LINIOWE Wprowadzenie do badań operacyjnych z komputerem Opisy programów, ćwiczenia komputerowe i zadania. T. Trzaskalik (red.) Rozdział 1 PROGRAMOWANIE LINIOWE 1.1 Opis programów Do rozwiązania zadań programowania

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

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010 Algorytmy równoległe Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka Znajdowanie maksimum w zbiorze n liczb węzły - maksimum liczb głębokość = 3 praca = 4++ = 7 (operacji) n - liczność

Bardziej szczegółowo

Wykład 2. Informatyka Stosowana. 10 października Informatyka Stosowana Wykład 2 10 października / 42

Wykład 2. Informatyka Stosowana. 10 października Informatyka Stosowana Wykład 2 10 października / 42 Wykład 2 Informatyka Stosowana 10 października 2016 Informatyka Stosowana Wykład 2 10 października 2016 1 / 42 Systemy pozycyjne Informatyka Stosowana Wykład 2 10 października 2016 2 / 42 Definicja : system

Bardziej szczegółowo

Wykład 2. Informatyka Stosowana. 9 października Informatyka Stosowana Wykład 2 9 października / 42

Wykład 2. Informatyka Stosowana. 9 października Informatyka Stosowana Wykład 2 9 października / 42 Wykład 2 Informatyka Stosowana 9 października 2017 Informatyka Stosowana Wykład 2 9 października 2017 1 / 42 Systemy pozycyjne Informatyka Stosowana Wykład 2 9 października 2017 2 / 42 Definicja : system

Bardziej szczegółowo

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki INFORMATYKA Z MERMIDONEM Programowanie Moduł 5 / Notatki Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego. Realizator projektu: Opracowano w ramach projektu

Bardziej szczegółowo

0 + 0 = 0, = 1, = 1, = 0.

0 + 0 = 0, = 1, = 1, = 0. 5 Kody liniowe Jak już wiemy, w celu przesłania zakodowanego tekstu dzielimy go na bloki i do każdego z bloków dodajemy tak zwane bity sprawdzające. Bity te są w ścisłej zależności z bitami informacyjnymi,

Bardziej szczegółowo

Podstawy Informatyki DMA - Układ bezpośredniego dostępu do pamięci

Podstawy Informatyki DMA - Układ bezpośredniego dostępu do pamięci Układ Podstawy Informatyki - Układ bezpośredniego dostępu do pamięci alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu Układ 1 Układ Wymiana informacji Idea Zasady pracy maszyny W Architektura

Bardziej szczegółowo

System pamięci. Pamięć wirtualna

System pamięci. Pamięć wirtualna System pamięci Pamięć wirtualna Pamięć wirtualna Model pamięci cache+ram nie jest jeszcze realistyczny W rzeczywistych systemach działa wiele programów jednocześnie Każdy może używać tej samej przestrzeni

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

Ograniczenia efektywności systemu pamięci

Ograniczenia efektywności systemu pamięci Ograniczenia efektywności systemu pamięci Parametry pamięci : opóźnienie (ang. latency) - czas odpowiedzi pamięci na żądanie danych przez procesor przepustowość systemu pamięci (ang. bandwidth) - ilość

Bardziej szczegółowo

TABLICA (ang. array) pojedyncza zmienna z wieloma komórkami, w których można zapamiętać wiele wartości tego samego typu danych.

TABLICA (ang. array) pojedyncza zmienna z wieloma komórkami, w których można zapamiętać wiele wartości tego samego typu danych. Złożone typy danych - TABLICE TABLICA (ang. array) pojedyncza zmienna z wieloma komórkami, w których można zapamiętać wiele wartości tego samego typu danych. * Może przechowywać dowolny typ danych, typ

Bardziej szczegółowo

Temat 20. Techniki algorytmiczne

Temat 20. Techniki algorytmiczne Realizacja podstawy programowej 5. 1) wyjaśnia pojęcie algorytmu, podaje odpowiednie przykłady algorytmów rozwiązywania różnych problemów; 2) formułuje ścisły opis prostej sytuacji problemowej, analizuje

Bardziej szczegółowo

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 = Systemy liczbowe Dla każdej liczby naturalnej x Î N oraz liczby naturalnej p >= 2 istnieją jednoznacznie wyznaczone: liczba n Î N oraz ciąg cyfr c 0, c 1,..., c n-1 (gdzie ck Î {0, 1,..., p - 1}) taki,

Bardziej szczegółowo