POZNAŃ SUPERCOMPUTING AND NETWORKING. Zwiększanie efektywności programów optymalizacja pamięci część 1

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

Download "POZNAŃ SUPERCOMPUTING AND NETWORKING. Zwiększanie efektywności programów optymalizacja pamięci część 1"

Transkrypt

1 Zwiększanie efektywności programów optymalizacja pamięci część 1

2 literatura podstawowa [Aho2002] Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman, Kompilatory. Reguły, metody i narzędzia, WNT 2002 (tłum. pierwszego wydania amerykańskiego, 1986). [Aho2001] A.V. Aho, R. Sethi, J.D. Ullman, Compilers: Principles, Techniques, and Tools, Pearson Education

3 literatura uzupełniająca [Bentley2008] Jon Bentley, Perełki oprogramowania, wyd. trzecie, WNT, 2008 (tłum. drugiego wydania amerykańskiego, Pearson Education 2000). [Bentley2007] Jon Bentley, Więcej perełek oprogramowania. Wyznania programisty, WNT 2007 (tłum. pierwszego wydania amerykańskiego, Pearson Education 1988). 3

4 literatura uzupełniająca [Kernigham2002] Brian W. Kernigham, Rob Pike, Lekcja programowania, WNT 2002, (tłum. pierwszego wydania amerykańskiego, Pearson Education 1999). [Oram2008] Andy Oram, Greg Wilson (red.), Piękny kod. Tajemnice mistrzów programowania, Helion 2008, (tłum. wydania amerykańskiego, O Reilly Media Inc. 2007). 4

5 literatura uzupełniająca [Barr2005] Adam Barr, Znajdź błąd. Sztuka analizowania kodu, Helion 2005 (tłum. wydania amerykańskiego, Pearson Education 2005). 5

6 literatura uzupełniająca [Cooper2004] Keith D. Cooper, Linda Torczon, Engineering a Compiler, Morgan Kaufmann Publishers, San Francisco, [Goedecker2001] Stefan Goedecker, Adolfy Hoisie, Performance Optimization of Numerically Intensive Codes, Society for Industrial and Applied Mathematics, Philadelphia

7 literatura uzupełniająca [Kaspersky2003], Kris Kaspersky, Code Optimization: Effective Memory Usage, A-LIST, LLC, [Muchnik1997] Steven S. Muchnick, Advanced Compiler Design and Implementation, Morgan Kaufmann Publishers, San Francisco,

8 literatura uzupełniająca [Allen2002] Randy Allen, Ken Kennedy, Optimizing Compilers for Modern Architectures, Morgan Kaufmann Publishers, San Francisco, [Falk2004] Heiko Falk, Peter Marwedel, Source Code Optimization Techniques for Data Flow Dominated Embedded Software, Kluwer Academic Publishers, Boston

9 literatura uzupełniająca [Wolfe1995] Michael Wolfe, High- Performance Compilers for Parallel Computing, Addison Wesley,

10 plan optymalizacja hierarchii pamięci [Muchnick1997] rozdz. 20 [Allen2002] rozdz. 9 optymalizacja dostępu do pamięci [Goedecker2001] rozdz. 6, [Kaspersky2003] rozdz. 3 10

11 plan optymalizacja operacji na pamięci [Kaspersky2003] rozdz. 2 alokacja rejestrów [Cooper2004] rozdz. 13 ograniczenie wykorzystywanej pamięci [Bentley2008] rozdz. 10 [Kernigham2002] rozdz. 7 11

12 optymalizacja hierarchii pamięci rozważamy tutaj techniki optymalizacji kodu, wykorzystujące hierarchię pamięci, w szczególności: pamięci notatnikowe danych i rozkazów przydział rejestrów do elementów tablic 12

13 optymalizacja hierarchii pamięci od lat systemy posiadały pamięć główną i rejestry pamięć jest duża i wolna, a rejestry są małe i szybkie z czasem, różnica między cyklem procesora a czasem dostępu do pamięci wzrastała (wzrost szybkości procesora 50% rocznie, pamięci 20% rocznie) 13

14 optymalizacja hierarchii pamięci aby zapobiec pogarszaniu się wydajności, wprowadzono pamięć notatnikową (cache) między pamięć główną a rejestry, redukując niedopasowanie szybkości pamięć notatnikowa powiela wybrane fragmenty pamięci głównej, zwykle na życzenie sprzętu albo oprogramowania 14

15 optymalizacja hierarchii pamięci odczyt, zapis albo pobranie instrukcji skierowane do adresu reprezentowanego w pamięci notatnikowej jest spełniany zazwyczaj przez pamięć notatnikową, a nie przez pamięć główną efektywność pamięci notatnikowej zależy od cech przestrzennej i czasowej lokalizacji w programie 15

16 optymalizacja hierarchii pamięci jeżeli program wykonuje pętlę, wtedy pierwsza iteracja umieszcza jej kod w pamięci notatnikowej, a kolejne iteracje wykonują go z pamięci notatnikowej, zamiast ładować go z pamięci głównej 16

17 optymalizacja hierarchii pamięci podobnie, jeżeli blok danych jest wykorzystywany powtarzalnie, najlepiej jak jest umieści się go w pamięci notatnikowej i tam właśnie jest dostępny wtedy dane są pobierane z pamięci głównej tylko raz 17

18 optymalizacja hierarchii pamięci z drugiej strony, jeżeli kod i dane interferują w pamięci notatnikowej, czyli zajmują tam te same miejsca, albo gdy dane interferują ze sobą, w ten sposób że ich porcje są odwzorowane na te same bloki w pamięci notatnikowej, to wtedy wydajność znacznie spada 18

19 optymalizacja hierarchii pamięci w najgorszym razie, pamięć notatnikowa nic nie przyspiesza, czyli odczyt, zapis i pobieranie instrukcji nie są szybsze niż w przypadku pamięci głównej system może mieć oddzielne pamięci notatnikowe instrukcji i danych, może też mieć wspólną pamięć notatnikową dla instrukcji i danych 19

20 optymalizacja hierarchii pamięci system ze stronicowaniem ma inny typ pamięci notatnikowej TLB (translationlookaside buffer), do przechowywania informacji o translacji adresów wirtualnych w fizyczne, i odwrotnie 20

21 wpływ pamięci notatnikowej na przykład optymalizację jak efektywność wykonania programu zmienia się z odstępami między indeksami, z jaką następuje dostęp do tablicy gdy odległości są większe niż 32, efektywność maleje 21

22 wpływ pamięci notatnikowej na optymalizację 4 wersje mnożenia macierzy w j. Fortran MM: klasyczne (potrójnie zagnieżdżona pętla do mnożenia A przez B) MMT: z transpozycją macierzy A w pamięci MMB: z podziałem pętli na bloki MMBT: z transpozycją macierzy A i podziałem pętli na bloki 22

23 mnożenie macierzy [Muchnick1997] 23

24 wpływ pamięci notatnikowej na optymalizację efektywność klasycznej wersji jest zależna od rozmiaru macierzy i jej organizacji, i różni się nawet o współczynnik 14 efektywność pozostałych wersji jest bliska maksymalnej i jest stabilna 24

25 optymalizacja pamięci notatnikowej instrukcji cel: zwiększenie ilości trafień 2 podejścia interproceduralne 1 podejście intraproceduralne 3 podejścia i takie i takie 25

26 optymalizacja pamięci notatnikowej instrukcji pobieranie instrukcji wsparte sprzętowo pobieranie sekwencyjne albo z wybranej ścieżki pobieranie instrukcji wsparte programowo pobieranie do pamięci notatnikowej instrukcji znajdujących się w bloku o podanym adresie: iprefetch address 26

27 optymalizacja pamięci notatnikowej instrukcji pobieranie instrukcji wsparte programowo stosowane dla bloków kodu pobieranych pierwszy raz, albo dla bloków stosowanych powtarzalnie programowe wsparcie jedynie wtedy, gdy nie ma sprzętowego 27

28 sortowanie procedur najprostszym i najefektywniejszym zastosowaniem optymalizacji pamięci notatnikowej instrukcji jest sortowanie statycznie powiązanych procedur, zgodnie z relacjami ich wywołania i częstotliwością stosowania 28

29 sortowanie procedur celem jest: umieszczenie procedur blisko wywołań w pamięci wirtualnej, aby ograniczyć ruch stron umieszczenie często stosowanych i powiązanych procedur razem, aby zmniejszyć prawdopodobieństwo kolizji z innymi procedurami w pamięci notatnikowej 29

30 sortowanie procedur jeżeli jest dostępny wynik profilowania (dynamicznej analizy zachowania się programu), należy go uwzględnić jeżeli nie, należy posłużyć się heurystyką, która umieszcza procedury, które się często wywołują blisko siebie (wywołania w pętli powinny być ważniejsze od wywołań spoza pętli) 30

31 sortowanie procedur aby implementować tę ideę, posłużymy się nieskierowanym statycznym grafem wywołań, gdzie każda krawędź jest etykietowana liczbą razy, z jaką dwie procedury na obu jej końcach wywołują tę drugą procedurę 31

32 sortowanie procedur następnie scalamy graf w etapy, na każdym etapie wybierając krawędź o najwyższej wadze i łącząc węzły w jeden, scalając odpowiednie krawędzie i dodając wagi scalanych krawędzi 32

33 sortowanie procedur węzły, które zostały scalone, są umieszczone po sobie w końcowym uporządkowaniu procedur, z wagami połączeń w oryginalnym grafie stosowanymi do wyznaczenia ich wzajemnego porządku 33

34 sortowanie procedur algorytm ICAN tego procesu to procedura Proc_Position( ) ICAN - Informal Compiler Algorithm Notation rodzaj notacji (pseudokodu) do opisu algorytmów ICAN wywodzi się z C, Pascala, Moduli-2 plus naturalna notacja 34

35 sortowanie procedur [Muchnick1997] 35

36 sortowanie procedur funkcja Coalesce_Nodes(T,A,weight,psweight,p1,p2) scala węzły p1 i p2 w jeden węzeł a procedura Flatten(T) trawersuje drzewo binarne reprezentowane przez sekwencję T z lewej do prawej, i tworzy sekwencję liści (Flatten(T)nie jest tu wprost pokazana) 36

37 sortowanie procedur [Muchnick1997] 37

38 graf przepływu w sortowaniu procedur [Muchnick1997] 38

39 graf przepływu wpierw scalamy P2 i P4 do postaci [P2,P4] następnie scalamy P3 i P6 do postaci [P3,P6], potem P5 i [P2,P4], aby otrzymać [P5,[P2,P4]] ostateczny wynik to: [[P1,[P3,P6],[P5,[P2,P4]]],[P7,P8]] 39

40 umieszczenie procedury na krawędzi bloku wymaga modyfikacji konsolidatora, aby umieszczał każdą procedurę na krawędzi bloku w pamięci notatnikowej instrukcji pozwoli to w kolejnych fazach kompilacji pozycjonować często wykonywane segmenty kodu, takie jak pętle, aby zajmowały jak najmniejszą liczbę bloków pamięci notatnikowej 40

41 umieszczenie procedury na krawędzi bloku oraz pozwoli umieścić je blisko albo na krawędzi bloku, ułatwiając zmniejszenie braku trafień w pamięci notatnikowej i ułatwi pobieranie całych grup instrukcji przez superskalarny CPU w celu ich jednoczesnego wykonania w jednym cyklu zegara 41

42 umieszczenie procedury na krawędzi bloku gdy większość bloków jest krótka (4 albo 8 instrukcji), ułatwia to utrzymywanie początków bloków daleko od końca bloków pamięci notatnikowej kompilator może zbierać statystyki, a wyniki profilowania mogą być wykorzystane do oceny, czy umieszczanie procedury na krawędzi jest korzystne 42

43 intraproceduralne pozycjonowanie kodu podejście od dołu do góry Pettisa i Hansena z 1990 roku cel: przesunięcie rzadko wykonywanego kodu poza główną część kodu, oraz: wyrównanie kodu (usunięcie gałęzi niewarunkowych i umieszczenie jak najwięcej gałęzi warunkowych na ścieżce opadającej) 43

44 intraproceduralne pozycjonowanie kodu co powoduje, że większy fragment instrukcji pobieranych do pamięci notatnikowej jest faktycznie wykonywany odmiennie niż w sortowaniu procedur, ten proces jest przeprowadzany podczas kompilacji każdej procedury 44

45 intraproceduralne pozycjonowanie kodu aby to zrobić, zakłada się, że na krawędziach grafu przepływu procedury podane są częstotliwości ich wykonania, uzyskane przez profilowanie albo szacowanie 45

46 intraproceduralne pozycjonowanie kodu algorytm wykonuje przeszukiwanie wstępujące grafu przepływu, budując łańcuchy bloków podstawowych, które być powinny umieszczone jako kod wyrównany, ponieważ krawędzie są wykonywane często 46

47 algorytm pozycjonowania bloków bazowych początkowo, każdy blok bazowy jest sam łańcuchem następnie, w kolejnych krokach, dwa łańcuchy, których odpowiednio ogon i głowa są połączone krawędzią o najwyższej częstotliwości wykonań, są scalone 47

48 algorytm pozycjonowania bloków bazowych jeżeli najwyższa częstotliwość występuje na krawędzi, która nie łączy ogona łańcucha z głową innego łańcucha, łańcuchy nie mogą być scalone na koniec, dokonuje się umieszczenia bloku bazowego poprzez wybór łańcucha wejściowego i przetwarzanie innych łańcuchów zgodnie z wagą połączeń 48

49 algorytm pozycjonowania Block_Position(B,E,r,freq) B zbiór węzłów (bloków bazowych) E zbiór krawędzi r węzeł wejściowy freq odwzorowanie krawędzi na częstość wykonania 49

50 algorytm pozycjonowania[muchnick1997] 50

51 algorytm pozycjonowania 51

52 przykład pozycjonowania bloków bazowych rozważmy przykład [Muchnick1997] 52

53 przykład pozycjonowania bloków bazowych krawędź o największej częstości wykonania jest od B1 do B2, stąd [B1,B2] następna krawędź o największej częstości wykonania jest od B2 do B4, stąd sekwencja jest rozszerzona do [B1,B2,B4] podobnie dodaje się entry oraz B8 w kolejnych dwóch krokach, stąd mamy: [entry,b1,b2,b4,b8] 53

54 przykład pozycjonowania bloków bazowych 54

55 przykład pozycjonowania bloków bazowych następna krawędź o największej częstości wykonania jest od B9 do exit, stąd [B9,exit] w kolejnych krokach [B9,exit] jest rozszerzona do [B6,B9,exit] dwie nowe sekwencje są utworzone [B3,B7] i [B5] 55

56 przykład pozycjonowania bloków bazowych 56

57 przykład pozycjonowania bloków bazowych następnie obliczamy funkcję edges(), podającą liczbę krawędzi do innych sekwencji: edges([entry,b1,b2,b4,b8])=2 edges([b3,b7])=1 edges([b5])=1 edges([b6,b9,exit])=0 57

58 przykład pozycjonowania bloków bazowych następnie porządkujemy sekwencje tak, że ta z entry jest pierwsza, potem są sekwencje zgodnie z porządkiem określonym funkcją edges() na koniec, poprawiamy kod dodając i usuwając gałęzie, aby graf przepływu był równoważny co do efektu z grafem oryginalnym 58

59 wynik intraproceduralnego pozycjonowania kodu [Muchnick1997] 59

60 podział procedury zwiększa efektywność algorytmów sortowania procedur i intraproceduralnego pozycjonowania kodu każda procedura jest dzielona na składnik pierwotny i wtórny pierwotny: zawiera często wykonywane bloki bazowe wtórny: rzadko wykonywane bloki bazowe 60

61 podział procedury to powoduje, że składniki pierwotne są umieszczane blisko siebie w jednej sekcji, podobnie jak wtórne podział procedury wymaga dopasowania granic między składnikami obszary oznaczone p i s oznaczają kod pierwotny i kod wtórny 61

62 podział procedury [Muchnick1997] 62

63 kombinacja procedur intra- i interproceduralnych zmiana kolejności instrukcji w pamięci i rezygnacja z umieszczania pewnych instrukcji w pamięci notatnikowej, doktorat Scotta McFarlinga, Stanford Univ analiza, czy warto wstawiać procedurę (w miejsce jej wywołania) McFarling procedure inlining 63

64 zastąpienie elementów macierzy skalarami jeżeli zastąpimy dostępy do C(i,j) przez zmienną ct, a ct jest przydzielona do rejestru, zmniejszamy liczbę dostępów do pamięci do 2(N 3 N 2) czyli blisko 2 razy skalar zamiast C(i,j) (czasowo) 64

65 mnożenie macierzy [Muchnick1997] 65

66 przykład: rekurencja HIR użycie dwóch zmiennych tymczasowych, t0 i t1 zmniejsza dostępy do pamięci o 40% HIR: High-Level Intermediate Representation 66

67 przykład: rekurencja HIR [Muchnick1997] 67

68 zastąpienie przez skalar zastępowanie zmiennych z indeksami przez skalary, co pozwala przydzielać je do rejestrów, nazywa się zastępowaniem przez skalar (scalar replacement) albo potokowym przetwarzaniem rejestrów (register pipelining) 68

69 zastąpienie przez skalar pokażmy tę metodę w przypadku zagnieżdżeń pętli, nie zawierającej warunków aby ją zastosować, potrzebujemy stałej liczby iteracji pętli pomiędzy odwołaniami do zmiennych indeksowanych 69

70 zastąpienie przez skalar możemy też ułatwić zastąpienie przez skalar poprzez zamianę pętli i fuzję pętli 70

71 zamiana pętli [Muchnick1997] 71

72 fuzja pętli [Muchnick1997] 72

73 zastąpienie przez skalar pętli z if stosujemy trzy tymczasowe zmienne: t2 zamiast a[i-2] t1 zamiast a[i-1] t0 zamiast a[i] 73

74 pętle z if [Muchnick1997] 74

75 kombinacje zastąpień skalarami wpierw zastąpienie skalarami wartości x[i] potem rozwinięcie pętli wewnętrznej (przez współczynnik 3, arbitralny) następnie zastąpienie skalarami wartości y[j] 75

76 zastąpienie skalarami x[i] [Muchnick1997] 76

77 rozwinięcie pętli wewnętrznej [Muchnick1997] 77

78 zastąpienie skalarami y[j] [Muchnick1997] 78

79 optymalizacja pamięci notatnikowej danych zajmiemy się teraz optymalizacją wykorzystania pamięci notatnikowej do kodu numerycznego (inaczej naukowego) przez kod numeryczny rozumiemy program, zwykle w Fortranie, który operuje na dużych tablicach danych, zazwyczaj na wartościach zmiennoprzecinkowych 79

80 optymalizacja pamięci notatnikowej danych wiele z tych programów stosuje wzorce wykorzystania danych o regularnej strukturze, które dają możliwość ponownego wykorzystania danych zanim zostaną usunięte z pamięci notatnikowej 80

81 optymalizacja pamięci notatnikowej danych dysponujemy globalnym układem danych, który zakłada, że mamy dostępny cały program do analizy i transformacji, stąd informacja zebrana przez wszystkie części programu może być wykorzystana przez kompilator do ułożenia wszystkich tablic tak, aby zminimalizować konflikty w pamięci notatnikowej danych 81

82 optymalizacja pamięci notatnikowej danych idea optymalizacji pamięci notatnikowej danych odnosi się do pojedynczych procedur, które eliminują opóźnienie wynikające z pobierania danych z pamięci do pamięci notatnikowej i zapamiętania w niej wyników z rejestrów 82

83 optymalizacja pamięci notatnikowej danych ten typ optymalizacji osiągnął najlepsze wyniki dla kodu numerycznego, któremu większość czasu zajmuje wykonywanie zagnieżdżonych pętli operujących na macierzach wartości numerycznych 83

84 optymalizacja pamięci notatnikowej danych optymalizacje wpierw wyjaśniają wzorce ponownego używania danych w pętlach, a następnie transformują je do postaci wykazującej lokalność odniesienia to znaczy stosują te same lokalizacje danych, albo bloki pamięci notatnikowej są tak blisko w czasie, że wykonują się bez konieczności usuwania danych z pamięci notatnikowej 84

85 optymalizacja pamięci notatnikowej danych główną techniką do określenia wzorców ponownego używania danych w pętlach jest analiza zależności, opisywana oddzielnie oraz transformacja zagnieżdżeń pętli, jako podejście do zbliżenia wykorzystania danych w czasie (transformacje te nie powinny zmieniać wyników obliczeń!) 85

86 transformacje zmieniające wynik obliczeń (0.0, 0.0, 1.0, n) 86

87 transformacje zmieniające wynik obliczeń pętle HIR sumują te same sekwencje wartości zmiennoprzecinkowych, ale dają odmienne wyniki: 0.0, 0.0, 1.0 i n HIR oznacza High-Level Intermediate Representation (sposób lub język reprezentacji) 87

88 optymalizacja pamięci notatnikowej danych istotna jest również technika wyprzedzającego pobierania danych, ukrywającego opóźnienie pobierania danych stosuje się też współdziałanie optymalizacji skalarnych i optymalizacji pamięci, optymalizację pamięci notatnikowej danych dla wskaźników, dynamiczne przydzielanie obiektów danych 88

89 optymalizacja pamięci notatnikowej danych przeprowadza się również integrację optymalizacji pamięci notatnikowej instrukcji (I-cache) i pamięci notatnikowej danych (D-cache) 89

90 wnioski w prezentacji skupiono się na optymalizacji hierarchii pamięci, w szczególności optymalizacji wykorzystania pamięci notatnikowej instrukcji i pamięci notatnikowej danych 90

91 wnioski pozostałe kwestie dotyczące optymalizacji dostępu do pamięci, operacji na pamięci, alokacji rejestrów i ograniczenia wykorzystywanej pamięci, są przedmiotem kolejnych spotkań 91

POZNA SUPERCOMPUTING AND NETWORKING. Zwikszanie efektywnoci programów optymalizacja pamici cz2

POZNA SUPERCOMPUTING AND NETWORKING. Zwikszanie efektywnoci programów optymalizacja pamici cz2 Zwikszanie efektywnoci programów optymalizacja pamici cz2 literatura podstawowa [Aho2002] Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman, Kompilatory. Reguły, metody i narzdzia, WNT 2002 (tłum. pierwszego

Bardziej szczegółowo

Metody Kompilacji Wykład 1 Wstęp

Metody Kompilacji Wykład 1 Wstęp Metody Kompilacji Wykład 1 Wstęp Literatura: Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman: Compilers: Princiles, Techniques, and Tools. Addison-Wesley 1986, ISBN 0-201-10088-6 Literatura: Alfred V. Aho,

Bardziej szczegółowo

Optymalizacja oprogramowania - wprowadzenie

Optymalizacja oprogramowania - wprowadzenie Optymalizacja oprogramowania - wprowadzenie Poznaskie Centrum Superkomputerowo Sieciowe Projekt jest współfinansowany ze rodków Europejskiego Funduszu Rozwoju Regionalnego w ramach Programu Operacyjnego

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

Zarządzanie pamięcią operacyjną

Zarządzanie pamięcią operacyjną SOE Systemy Operacyjne Wykład 7 Zarządzanie pamięcią operacyjną dr inż. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW Hierarchia pamięci czas dostępu Rejestry Pamięć podręczna koszt

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

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

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014 Stany równoważne Stany p i q są równoważne,

Bardziej szczegółowo

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

Systemy wbudowane. Uproszczone metody kosyntezy. Wykład 11: Metody kosyntezy systemów wbudowanych Systemy wbudowane Wykład 11: Metody kosyntezy systemów wbudowanych Uproszczone metody kosyntezy Założenia: Jeden procesor o znanych parametrach Znane parametry akceleratora sprzętowego Vulcan Początkowo

Bardziej szczegółowo

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek Algorytmy i str ruktury danych Metody algorytmiczne Bartman Jacek jbartman@univ.rzeszow.pl Metody algorytmiczne - wprowadzenia Znamy strukturę algorytmów Trudność tkwi natomiast w podaniu metod służących

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW

ZASADY PROGRAMOWANIA KOMPUTERÓW POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Tydzień 12 Wspomaganie systemu operacyjnego: pamięć wirtualna Partycjonowanie Pamięć jest dzielona, aby mogło korzystać z niej wiele procesów. Dla jednego procesu przydzielana jest

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

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

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 5 Podstawy programowania 2 Temat: Drzewa binarne Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny Drzewa są jedną z częściej wykorzystywanych struktur danych. Reprezentują

Bardziej szczegółowo

Pamięć. Jan Tuziemski Źródło części materiałów: os-book.com

Pamięć. Jan Tuziemski Źródło części materiałów: os-book.com Pamięć Jan Tuziemski Źródło części materiałów: os-book.com Cele wykładu Przedstawienie sposobów organizacji pamięci komputera Przedstawienie technik zarządzania pamięcią Podstawy Przed uruchomieniem program

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

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

Translacja wprowadzenie

Translacja wprowadzenie Translacja wprowadzenie Teoria kompilacji Dr inż. Janusz Majewski Katedra Informatyki Literatura 1) Aho A. V., Sethi R., Ullman J. D.: Compilers. Principles, Techniques and Tools, Addison- Wesley, 1986

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

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

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

Sortowanie. Bartman Jacek Algorytmy i struktury

Sortowanie. Bartman Jacek Algorytmy i struktury Sortowanie Bartman Jacek jbartman@univ.rzeszow.pl Algorytmy i struktury danych Sortowanie przez proste wstawianie przykład 41 56 17 39 88 24 03 72 41 56 17 39 88 24 03 72 17 41 56 39 88 24 03 72 17 39

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

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny Klasa 2 INFORMATYKA dla szkół ponadgimnazjalnych zakres rozszerzony Założone osiągnięcia ucznia wymagania edukacyjne na poszczególne oceny Algorytmy 2 3 4 5 6 Wie, co to jest algorytm. Wymienia przykłady

Bardziej szczegółowo

Przetwarzanie potokowe pipelining

Przetwarzanie potokowe pipelining Przetwarzanie potokowe pipelining (część A) Przypomnienie - implementacja jednocyklowa 4 Add Add PC Address memory ister # isters Address ister # ister # memory Wstęp W implementacjach prezentowanych tydzień

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

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy) Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013

Bardziej szczegółowo

Zapisywanie algorytmów w języku programowania

Zapisywanie algorytmów w języku programowania Temat C5 Zapisywanie algorytmów w języku programowania Cele edukacyjne Zrozumienie, na czym polega programowanie. Poznanie sposobu zapisu algorytmu w postaci programu komputerowego. Zrozumienie, na czym

Bardziej szczegółowo

Zarządzanie pamięcią operacyjną

Zarządzanie pamięcią operacyjną Dariusz Wawrzyniak Plan wykładu Pamięć jako zasób systemu komputerowego hierarchia pamięci przestrzeń owa Wsparcie dla zarządzania pamięcią na poziomie architektury komputera Podział i przydział pamięci

Bardziej szczegółowo

Stronicowanie w systemie pamięci wirtualnej

Stronicowanie w systemie pamięci wirtualnej Pamięć wirtualna Stronicowanie w systemie pamięci wirtualnej Stronicowanie z wymianą stron pomiędzy pamięcią pierwszego i drugiego rzędu. Zalety w porównaniu z prostym stronicowaniem: rozszerzenie przestrzeni

Bardziej szczegółowo

PRZYDZIAŁ PAMIĘCI OPERACYJNEJ

PRZYDZIAŁ PAMIĘCI OPERACYJNEJ PRZYDZIAŁ PAMIĘCI OPERACYJNEJ dr inż. Krzysztof Patan Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski k.patan@issi.uz.zgora.pl Wstęp Pamięć komputera wielka tablica słów (bajtów)

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

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

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

Modelowanie procesów współbieżnych

Modelowanie procesów współbieżnych Modelowanie procesów współbieżnych dr inż. Maciej Piotrowicz Katedra Mikroelektroniki i Technik Informatycznych PŁ piotrowi@dmcs.p.lodz.pl http://fiona.dmcs.pl/~piotrowi -> Modelowanie... Literatura M.

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

Podstawy programowania.

Podstawy programowania. Kod przedmiotu: PPR Podstawy programowania. Rodzaj przedmiotu: kierunkowy; obowiązkowy Wydział: Informatyki Kierunek: Informatyka Specjalność (specjalizacja): - Poziom studiów: pierwszego stopnia Profil

Bardziej szczegółowo

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4 Pamięć wirtualna Przygotował: Ryszard Kijaka Wykład 4 Wstęp główny podział to: PM- do pamięci masowych należą wszelkiego rodzaju pamięci na nośnikach magnetycznych, takie jak dyski twarde i elastyczne,

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

SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią

SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią Wrocław 2007 SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl www.equus.wroc.pl/studia.html 1 PLAN: 2. Pamięć rzeczywista 3. Pamięć wirtualna

Bardziej szczegółowo

Wydajność programów sekwencyjnych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Wydajność programów sekwencyjnych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1 Wydajność programów sekwencyjnych Krzysztof Banaś Obliczenia Wysokiej Wydajności 1 Wydajność obliczeń Dla wielu programów wydajność obliczeń można traktować jako wydajność pobierania z pamięci i przetwarzania

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

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

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

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

Wykład z Technologii Informacyjnych. Piotr Mika

Wykład z Technologii Informacyjnych. Piotr Mika Wykład z Technologii Informacyjnych Piotr Mika Uniwersalna forma graficznego zapisu algorytmów Schemat blokowy zbiór bloków, powiązanych ze sobą liniami zorientowanymi. Jest to rodzaj grafu, którego węzły

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

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz] Procesor ma architekturę akumulatorową. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset or Rx, Ry, A add Rx load A, [Rz] push Rx sub Rx, #3, A load Rx, [A] Procesor ma architekturę rejestrową

Bardziej szczegółowo

Algorytmy sortujące i wyszukujące

Algorytmy sortujące i wyszukujące Algorytmy sortujące i wyszukujące Zadaniem algorytmów sortujących jest ułożenie elementów danego zbioru w ściśle określonej kolejności. Najczęściej wykorzystywany jest porządek numeryczny lub leksykograficzny.

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

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

Architektura komputerów, Informatyka, sem.iii. Rozwiązywanie konfliktów danych i sterowania w architekturze potokowej

Architektura komputerów, Informatyka, sem.iii. Rozwiązywanie konfliktów danych i sterowania w architekturze potokowej Rozwiązywanie konfliktów danych i sterowania w architekturze potokowej Konflikty w przetwarzaniu potokowym Konflikt danych Data Hazard Wstrzymywanie kolejki Pipeline Stall Optymalizacja kodu (metody programowe)

Bardziej szczegółowo

Energooszczędne programowanie

Energooszczędne programowanie Projektowanie energooszczędnych systemów wbudowanych dr inż. Ireneusz Brzozowski C-3, p. 512 WIET KATEDRA ELEKTRONIKI Elektronika i Telekomunikacja, Systemy Wbudowane www.agh.edu.pl Projektowanie energooszczędnych

Bardziej szczegółowo

Projektowanie. Projektowanie mikroprocesorów

Projektowanie. Projektowanie mikroprocesorów WYKŁAD Projektowanie mikroprocesorów Projektowanie układ adów w cyfrowych - podsumowanie Algebra Boole a Bramki logiczne i przerzutniki Automat skończony System binarny i reprezentacja danych Synteza logiczna

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

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II Algorytmy Równoległe i Rozproszone Część V - Model PRAM II Łukasz Kuszner pokój 209, WETI http://www.sphere.pl/ kuszner/ kuszner@sphere.pl Oficjalna strona wykładu http://www.sphere.pl/ kuszner/arir/ 2005/06

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

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński ppelczynski@swspiz.pl

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński ppelczynski@swspiz.pl Programowanie niskopoziomowe dr inż. Paweł Pełczyński ppelczynski@swspiz.pl 1 Literatura Randall Hyde: Asembler. Sztuka programowania, Helion, 2004. Eugeniusz Wróbel: Praktyczny kurs asemblera, Helion,

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Wykład 5 Jan Kazimirski 1 Podstawowe elementy komputera. Procesor (CPU) c.d. 2 Architektura CPU Jednostka arytmetyczno-logiczna (ALU) Rejestry Układ sterujący przebiegiem programu

Bardziej szczegółowo

Optymalizacja skalarna. Piotr Bała. bala@mat.uni.torun.pl. Wykład wygłoszony w ICM w czercu 2000

Optymalizacja skalarna. Piotr Bała. bala@mat.uni.torun.pl. Wykład wygłoszony w ICM w czercu 2000 Optymalizacja skalarna - czerwiec 2000 1 Optymalizacja skalarna Piotr Bała bala@mat.uni.torun.pl Wykład wygłoszony w ICM w czercu 2000 Optymalizacja skalarna - czerwiec 2000 2 Optymalizacja skalarna Czas

Bardziej szczegółowo

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

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania 1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja nie ma parametru i zwraca wartość na zewnątrz. nie ma parametru i nie zwraca wartości na zewnątrz. ma parametr o nazwie void i zwraca

Bardziej szczegółowo

Według raportu ISO z 1988 roku algorytm JPEG składa się z następujących kroków: 0.5, = V i, j. /Q i, j

Według raportu ISO z 1988 roku algorytm JPEG składa się z następujących kroków: 0.5, = V i, j. /Q i, j Kompresja transformacyjna. Opis standardu JPEG. Algorytm JPEG powstał w wyniku prac prowadzonych przez grupę ekspertów (ang. Joint Photographic Expert Group). Prace te zakończyły się w 1991 roku, kiedy

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

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium Nr 4

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium Nr 4 Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Algorytmy i struktury danych Laboratorium Nr 4 Algorytmy sortowania zewnętrznego 1 Wstęp Bardzo często przy rozwiązywaniu praktycznych

Bardziej szczegółowo

ECDL Podstawy programowania Sylabus - wersja 1.0

ECDL Podstawy programowania Sylabus - wersja 1.0 ECDL Podstawy programowania Sylabus - wersja 1.0 Przeznaczenie Sylabusa Dokument ten zawiera szczegółowy Sylabus dla modułu Podstawy programowania. Sylabus opisuje, poprzez efekty uczenia się, zakres wiedzy

Bardziej szczegółowo

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86 Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86 Spis treści Wprowadzenie... 11 1. Architektura procesorów rodziny x86... 17 1.1. Model procesorów

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

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów Wykład 2. Reprezentacja komputerowa grafów 1 / 69 Macierz incydencji Niech graf G będzie grafem nieskierowanym bez pętli o n wierzchołkach (x 1, x 2,..., x n) i m krawędziach (e 1, e 2,..., e m). 2 / 69

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 3 2 Złożoność obliczeniowa algorytmów Notacja wielkie 0 Notacja Ω i Θ Algorytm Hornera Przykłady rzędów

Bardziej szczegółowo

Programowanie komputerów

Programowanie komputerów Programowanie komputerów Wykład 1-2. Podstawowe pojęcia Plan wykładu Omówienie programu wykładów, laboratoriów oraz egzaminu Etapy rozwiązywania problemów dr Helena Dudycz Katedra Technologii Informacyjnych

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

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

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów przeznaczonych do wykonania w komputerze (ang. software).

Bardziej szczegółowo

Sortowanie - wybrane algorytmy

Sortowanie - wybrane algorytmy Sortowanie - wybrane algorytmy Aleksandra Wilkowska Wydział Matematyki - Katedra Matematyki Stosowanej Politechika Wrocławska 2 maja 2018 1 / 39 Plan prezentacji Złożoność obliczeniowa Sortowanie bąbelkowe

Bardziej szczegółowo

Zrównoleglenie i przetwarzanie potokowe

Zrównoleglenie i przetwarzanie potokowe Zrównoleglenie i przetwarzanie potokowe Zrównoleglenie wysoka wydajność pozostaje osiągnięta w efekcie jednoczesnego wykonania różnych części zagadnienia. Przetwarzanie potokowe proces jest rozdzielony

Bardziej szczegółowo

1. Liczby i w zapisie zmiennoprzecinkowym przedstawia się następująco

1. Liczby i w zapisie zmiennoprzecinkowym przedstawia się następująco 1. Liczby 3456.0012 i 0.000076235 w zapisie zmiennoprzecinkowym przedstawia się następująco a) 0.34560012 10 4 i 0.76235 10 4 b) 3.4560012 10 3 i 7.6235 10 5 c) 3.4560012 10 3 i 7.6235 10 5 d) po prostu

Bardziej szczegółowo

wagi cyfry 7 5 8 2 pozycje 3 2 1 0

wagi cyfry 7 5 8 2 pozycje 3 2 1 0 Wartość liczby pozycyjnej System dziesiętny W rozdziale opiszemy pozycyjne systemy liczbowe. Wiedza ta znakomicie ułatwi nam zrozumienie sposobu przechowywania liczb w pamięci komputerów. Na pierwszy ogień

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

architektura komputerów w. 8 Zarządzanie pamięcią

architektura komputerów w. 8 Zarządzanie pamięcią architektura komputerów w. 8 Zarządzanie pamięcią Zarządzanie pamięcią Jednostka centralna dysponuje zwykle duża mocą obliczeniową. Sprawne wykorzystanie możliwości jednostki przetwarzającej wymaga obecności

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

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386 Budowa procesora 80386 Struktura wewnętrzna logiczna procesora 80386 Pierwszy prawdziwy procesor 32-bitowy. Zawiera wewnętrzne 32-bitowe rejestry (omówione zostaną w modułach następnych), pozwalające przetwarzać

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

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1 Wykład Algorytmy grafowe metoda zachłanna. Właściwości algorytmu zachłannego:. W przeciwieństwie do metody programowania dynamicznego nie występuje etap dzielenia na mniejsze realizacje z wykorzystaniem

Bardziej szczegółowo

Systemy operacyjne III

Systemy operacyjne III Systemy operacyjne III WYKŁAD Jan Kazimirski Pamięć wirtualna Stronicowanie Pamięć podzielona na niewielki bloki Bloki procesu to strony a bloki fizyczne to ramki System operacyjny przechowuje dla każdego

Bardziej szczegółowo

KONSTRUKCJA KOMPILATORÓW

KONSTRUKCJA KOMPILATORÓW KONSTRUKCJA KOMPILATORÓW WYKŁAD Robert Plebaniak PLATFORMA PROGRAMOWA LINUX (może nie zawierać LLgen, wówczas instalacja ze strony http://tack.sourceforge.net); WINDOWS (używa się wtedy programu Cygwin,

Bardziej szczegółowo

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Kompresja danych Streszczenie Studia Dzienne Wykład 10, 1 Kwantyzacja wektorowa Kompresja danych Streszczenie Studia Dzienne Wykład 10, 28.04.2006 Kwantyzacja wektorowa: dane dzielone na bloki (wektory), każdy blok kwantyzowany jako jeden element danych. Ogólny

Bardziej szczegółowo

Wydajność obliczeń a architektura procesorów. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Wydajność obliczeń a architektura procesorów. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1 Wydajność obliczeń a architektura procesorów Krzysztof Banaś Obliczenia Wysokiej Wydajności 1 Wydajność komputerów Modele wydajności-> szacowanie czasu wykonania zadania Wydajność szybkość realizacji wyznaczonych

Bardziej szczegółowo

Programowanie w języku Python. Grażyna Koba

Programowanie w języku Python. Grażyna Koba Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Programowanie Współbieżne. Algorytmy

Programowanie Współbieżne. Algorytmy Programowanie Współbieżne Algorytmy Sortowanie przez scalanie (mergesort) Algorytm :. JEŚLI jesteś rootem TO: pobierz/wczytaj tablice do posortowania JEŚLI_NIE to pobierz tablicę do posortowania od rodzica

Bardziej szczegółowo

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

Algorytmy równoległe: prezentacja i ocena efektywności prostych algorytmów dla systemów równoległych Algorytmy równoległe: prezentacja i ocena efektywności prostych algorytmów dla systemów równoległych Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2018/19 Problem: znajdowanie

Bardziej szczegółowo

KARTA KURSU. Wstęp do programowania

KARTA KURSU. Wstęp do programowania KARTA KURSU Nazwa Nazwa w j. ang. Wstęp do programowania Introduction to Programming Kod Punktacja ECTS* 6 Koordynator dr inż. Magdalena Andrzejewska Zespół dydaktyczny: dr inż. Magdalena Andrzejewska

Bardziej szczegółowo

Adam Korzeniewski p Katedra Systemów Multimedialnych

Adam Korzeniewski p Katedra Systemów Multimedialnych Adam Korzeniewski adamkorz@sound.eti.pg.gda.pl p. 732 - Katedra Systemów Multimedialnych Operacja na dwóch funkcjach dająca w wyniku modyfikację oryginalnych funkcji (wynikiem jest iloczyn splotowy). Jest

Bardziej szczegółowo

Zarządzanie pamięcią. Od programu źródłowego do procesu. Dołączanie dynamiczne. Powiązanie programu z adresami w pamięci

Zarządzanie pamięcią. Od programu źródłowego do procesu. Dołączanie dynamiczne. Powiązanie programu z adresami w pamięci Zarządzanie pamięcią Przed wykonaniem program musi być pobrany z dysku i załadowany do pamięci. Tam działa jako proces. Podczas wykonywania, proces pobiera rozkazy i dane z pamięci. Większość systemów

Bardziej szczegółowo