POZNAŃ SUPERCOMPUTING AND NETWORKING. Zwiększanie efektywności programów optymalizacja pamięci część 1
|
|
- Sebastian Stasiak
- 2 lat temu
- Przeglądów:
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
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
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
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
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
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
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
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
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
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
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ą
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
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
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.
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
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
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,
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
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
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
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
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
Podstawy programowania.
Kod przedmiotu: PPR Podstawy programowania. Rodzaj przedmiotu: kierunkowy; obowiązkowy Wydział: Informatyki Kierunek: Informatyka Specjalność (specjalizacja): - Poziom studiów: pierwszego stopnia Profil
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
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:
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
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ą
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ń
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ść
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
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
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.
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
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
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
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.
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)
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
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
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
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
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
Architektura Systemów Komputerowych 2
Architektura Systemów Komputerowych 2 Pytania egzaminacyjne z części pisemnej mgr inż. Leszek Ciopiński Wykład I 1. Historia i ewolucja architektur komputerowych 1.1. Czy komputer Z3 jest zgodny z maszyną
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ą
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ń
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
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
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
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:
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
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,
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
Wykład 14. Środowisko przetwarzania
Wykład 14 Środowisko przetwarzania Środowisko przetwarzania Przed generacją kodu, musimy umieć powiązać statyczny kod źródłowy programu z akcjami, wykonywanymi w trakcie działania i implementującymi program;
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
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
Schematy zarzadzania pamięcia
Schematy zarzadzania pamięcia Segmentacja podział obszaru pamięci procesu na logiczne jednostki segmenty o dowolnej długości. Postać adresu logicznego: [nr segmentu, przesunięcie]. Zwykle przechowywana
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
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
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ń
Zarządzanie zasobami pamięci
Zarządzanie zasobami pamięci System operacyjny wykonuje programy umieszczone w pamięci operacyjnej. W pamięci operacyjnej przechowywany jest obecnie wykonywany program (proces) oraz niezbędne dane. Jeżeli
Haszowanie (adresowanie rozpraszające, mieszające)
Haszowanie (adresowanie rozpraszające, mieszające) Tadeusz Pankowski H. Garcia-Molina, J.D. Ullman, J. Widom, Implementacja systemów baz danych, WNT, Warszawa, Haszowanie W adresowaniu haszującym wyróżniamy
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
Od programu źródłowego do procesu
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
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
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ć
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
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
Analiza algorytmów zadania podstawowe
Analiza algorytmów zadania podstawowe Zadanie 1 Zliczanie Zliczaj(n) 1 r 0 2 for i 1 to n 1 3 do for j i + 1 to n 4 do for k 1 to j 5 do r r + 1 6 return r 0 Jaka wartość zostanie zwrócona przez powyższą
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
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).
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
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
Budowa Mikrokomputera
Budowa Mikrokomputera Wykład z Podstaw Informatyki dla I roku BO Piotr Mika Podstawowe elementy komputera Procesor Pamięć Magistrala (2/16) Płyta główna (ang. mainboard, motherboard) płyta drukowana komputera,
Paradygmaty programowania
Paradygmaty programowania Jacek Michałowski, Piotr Latanowicz 15 kwietnia 2014 Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 1 / 12 Zadanie 1 Zadanie 1 Rachunek predykatów
Programowanie w VB Proste algorytmy sortowania
Programowanie w VB Proste algorytmy sortowania Sortowanie bąbelkowe Algorytm sortowania bąbelkowego polega na porównywaniu par elementów leżących obok siebie i, jeśli jest to potrzebne, zmienianiu ich
Budowa komputera. Magistrala. Procesor Pamięć Układy I/O
Budowa komputera Magistrala Procesor Pamięć Układy I/O 1 Procesor to CPU (Central Processing Unit) centralny układ elektroniczny realizujący przetwarzanie informacji Zmiana stanu tranzystorów wewnątrz
Algorytmika i pseudoprogramowanie
Przedmiotowy system oceniania Zawód: Technik Informatyk Nr programu: 312[ 01] /T,SP/MENiS/ 2004.06.14 Przedmiot: Programowanie Strukturalne i Obiektowe Klasa: druga Dział Dopuszczający Dostateczny Dobry
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
Sieci Petriego. Sieć Petriego
Sieci Petriego Sieć Petriego Formalny model procesów umożliwiający ich weryfikację Główne konstruktory: miejsca, przejścia, łuki i żetony Opis graficzny i matematyczny Formalna semantyka umożliwia pogłębioną
Architektura komputerów
Architektura komputerów Wykład 3 Jan Kazimirski 1 Podstawowe elementy komputera. Procesor (CPU) 2 Plan wykładu Podstawowe komponenty komputera Procesor CPU Cykl rozkazowy Typy instrukcji Stos Tryby adresowania
Data Mining Wykład 9. Analiza skupień (grupowanie) Grupowanie hierarchiczne O-Cluster. Plan wykładu. Sformułowanie problemu
Data Mining Wykład 9 Analiza skupień (grupowanie) Grupowanie hierarchiczne O-Cluster Plan wykładu Wprowadzanie Definicja problemu Klasyfikacja metod grupowania Grupowanie hierarchiczne Sformułowanie problemu
Budowa komputera. Magistrala. Procesor Pamięć Układy I/O
Budowa komputera Magistrala Procesor Pamięć Układy I/O 1 Procesor to CPU (Central Processing Unit) centralny układ elektroniczny realizujący przetwarzanie informacji Zmiana stanu tranzystorów wewnątrz
Obliczenia Wysokiej Wydajności
Obliczenia wysokiej wydajności 1 Wydajność obliczeń Wydajność jest (obok poprawności, niezawodności, bezpieczeństwa, ergonomiczności i łatwości stosowania i pielęgnacji) jedną z najważniejszych charakterystyk
Algorytmy i Struktury Danych
POLITECHNIKA KRAKOWSKA WYDZIAŁ INŻYNIERII ELEKTRYCZNEJ i KOMPUTEROWEJ Katedra Automatyki i Technik Informacyjnych Algorytmy i Struktury Danych www.pk.edu.pl/~zk/aisd_hp.html Wykładowca: dr inż. Zbigniew
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH Temat : Drzewa zrównoważone, sortowanie drzewiaste Wykładowca: dr inż. Zbigniew TARAPATA e-mail: Zbigniew.Tarapata@isi.wat.edu.pl http://www.tarapata.strefa.pl/p_algorytmy_i_struktury_danych/
Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15
Technologie cyfrowe Artur Kalinowski Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.pl Semestr letni 2014/2015 Zadanie algorytmiczne: wyszukiwanie dane wejściowe:
ARCHITEKTURA PROCESORA,
ARCHITEKTURA PROCESORA, poza blokami funkcjonalnymi, to przede wszystkim: a. formaty rozkazów, b. lista rozkazów, c. rejestry dostępne programowo, d. sposoby adresowania pamięci, e. sposoby współpracy
Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII
Spis treści Od autora..................................................... Obliczenia inżynierskie i naukowe.................................. X XII Ostrzeżenia...................................................XVII
Sortowanie bąbelkowe
1/98 Sortowanie bąbelkowe (Bubble sort) prosty i nieefektywny algorytm sortowania wielokrotnie przeglądamy listę elementów, porównując dwa sąsiadujące i zamieniając je miejscami, jeśli znajdują się w złym
miejsca przejścia, łuki i żetony
Sieci Petriego Sieć Petriego Formalny model procesów umożliwiający ich weryfikację Główne konstruktory: miejsca, przejścia, łuki i żetony Opis graficzny i matematyczny Formalna semantyka umożliwia pogłębioną
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
Sortowanie Shella Shell Sort
Sortowanie Shella Shell Sort W latach 50-tych ubiegłego wieku informatyk Donald Shell zauważył, iż algorytm sortowania przez wstawianie pracuje bardzo efektywnie w przypadku gdy zbiór jest w dużym stopniu
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
dr inż. Jarosław Forenc
Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2009/2010 Wykład nr 8 (29.01.2009) dr inż. Jarosław Forenc Rok akademicki
Zaawansowane algorytmy i struktury danych
Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań teoretycznych z egzaminów. Strona 1 z 12 Pytania teoretyczne z egzaminu pisemnego z 25 czerwca 2014 (studia dzienne)
dr inŝ. Jarosław Forenc
Rok akademicki 2009/2010, Wykład nr 8 2/19 Plan wykładu nr 8 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2009/2010
Architektura Systemów Komputerowych
Architektura Systemów Komputerowych Wykład 7: Potokowe jednostki wykonawcze Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Budowa potoku Problemy synchronizacji
ALGORYTMY. 1. Podstawowe definicje Schemat blokowy
ALGORYTMY 1. Podstawowe definicje Algorytm (definicja nieformalna) to sposób postępowania (przepis) umożliwiający rozwiązanie określonego zadania (klasy zadań), podany w postaci skończonego zestawu czynności
3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 2 / 22
ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH struktury procesorów ASK SP.06 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 1 Maszyny wirtualne 2 3 Literatura c Dr inż. Ignacy
Teoretyczne podstawy informatyki
Teoretyczne podstawy informatyki Wykład 3a: Złożoność obliczeniowa algorytmów http://kiwi.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Złożoność obliczeniowa i asymptotyczna
Wykład 7. Zarządzanie pamięcią
Wykład 7 Zarządzanie pamięcią -1- Świat idealny a świat rzeczywisty W idealnym świecie pamięć powinna Mieć bardzo dużą pojemność Mieć bardzo krótki czas dostępu Być nieulotna (zawartość nie jest tracona