Programowanie równoległe Parallel Extensions

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

Download "Programowanie równoległe Parallel Extensions"

Transkrypt

1 Programowanie równoległe Parallel Extensions W. Grześkowiak Instytut Informatyki, Wydział Elektroniki i Technik Informacyjnych, Politechnika Warszawska, ul. Nowowiejska 15/19, Warszawa, Polska w.grzeskowiak@stud.elka.pw.edu.pl Streszczenie. Parallel Extensions to zbiór narzędzi przeznaczonych do programowania równoległego, wprowadzony w czwartej wersji platformy.net Framework firmy Microsoft. Zaproponowano nowy model programowania, oparty na fizycznej równoległości wykonywanych zadań. Takie podejście pozwala na pełne wykorzystanie aktualnie produkowanych procesorów wielordzeniowych. 1. Wstęp. Kiedy należy ocenić wydajność komputera, pierwszą rzeczą na którą powinno się zwrócić uwagę jest częstotliwość taktowania procesora. Większa liczba może oznaczać większą wydajność. Producenci układów nie mogli jednak przyśpieszać swoich procesorów w nieskończoność. Problemem okazała się technologia wytwarzania i rozmiary otrzymywanych tranzystorów bliskie rozmiarom atomów. Powstał problem który należało rozwiązać w inny sposób. Tak powstała idea procesorów wielordzeniowych i programowana kierowanego na te środowisko, określanego mianem programowania równoległego. 2. Rynek procesorów. W latach 90 w półświatku informatyków głośno krążyło prawo sformujłowane założyciela firmy Intel - Gordona Moora [1]. Mówiło ono że: Liczba tranzystorów w układzie elektrycznym podwaja się co miesiące. Prawo to w tamtych czasach zgadzało się z rzeczywistością, postęp techniczny był bardzo gwałtowny, coraz więcej tranzystorów można było umieszczać w jednym układzie krzemowym, a jak wiadomo ich liczba decyduje pośrednio o częstotliwości pracy procesora. Im więcej tranzystorów umieści się w jednym układzie, tym większą częstotliwość można osiągnąć. Z czasem inżynierowie doszli do rozmiarów rzędu 32 nm. [2], czyli bardzo blisko rozmiarów atomu (10-10 m). Pomimo faktu że produkcja w coraz to mniejszym wymiarze jest bardzo trudna, Intel aktualnie inwestuje w technologię 22 nm [3]. Procesory wytworzone w tym rozmiarze technologicznym nie trafią jednak na rynek wcześniej niż w 2011 roku. Na problem zwiększania częstotliwości od dawna szukano alternatywy chociaż odpowiedz wydawała się w miarę oczywista. Skoro nie można zwiększać prędkości rdzeni procesorów, to należy umieszczać ich więcej w jednym układzie. Takie rozwiązanie jako pierwszy wprowadził Intel tworząc rodzinę procesorów Core Duo [4]. Ciekawostką jest fakt, że funkcjonowały także jednostki Core Solo [5], które tak naprawdę były ukrytymi jednostkami Duo, z pracującym jednym rdzeniem. Zastosowano taką praktykę ponieważ proces technologiczny w którym produkuje się procesory jest bardzo skomplikowany i często dochodzi do uszkodzeń podzespołów. Intel stwierdził, że jeśli usterka nastąpi w jednym rdzeniu, to nie warto wyrzucać całego układu do kosza. Wyłączano uszkodzony rdzeń i sprzedawano układ pod inna nazwą. Intel z czasem wprowadził na rynek jednostki 4 rdzeniowe, a ostatnie z nich (np. model Intel Core 1

2 7 950 [6]) wyposażone w technologie HT [7] pozwalają na uruchamianie do 8 wątków równolegle. Na rynku pojawiły się więc procesory wielordzeniowe, co zyskano? Aby odpowiedzieć na to pytanie najlepiej posłużyć się wypowiedzią Dana Reeda z Microsoftu Różnica jest taka jak między szybkim sportowym autem, a autobusem szkolnym. Pierwszy szybko przewiezie dwie osoby, a drugi, choć trochę wolniej czterdzieści. Zauważyć należy, że rdzenie jednostek wielordzeniowych nie są tak samo szybkie jak rdzenie z procesorów jednordzeniowych, to jest ciągle jedna płytka krzemu i ciągle bardzo mało miejsca na umieszczenie wszystkich modułów procesora. Analitycy z firmy Forrester Research przewidują, że już w 2012 roku zbudowane zostaną procesory wyposażone w 64 rdzenie. Dan Reed ostrzega Już niedługo zabraknie programistów z doświadczeniem w tworzeniu aplikacji wykorzystujących przetwarzanie równoległe.. To już ostatni dzwonek, aby przekonać młodych programistów o wartości przetwarzania równoległego dodaje. 3. Równoległość, a współbieżność. Zanim zaprezentowane zostanie rozwiązanie Parallel Extensions, na potrzeby artykułu zostaną rozróżnione dwa aspekty programowania równoległego, które nazwane zostaną współbieżnością i równoległością. Obliczenia są współbieżne, jeżeli kolejne do wykonanie obliczenie, rozpocznie się wcześniej niż skończy się poprzednie. Obliczenia współbieżne wykonywane są jednej jednostce obliczeniowej (np. procesorze), pracującej z podziałem czasu. Aby łatwiej zobrazować współbieżność, należy zdefiniować dwa zadania, które powinny wykonać się współbieżnie Zadanie 1 oraz Zadanie 2. Podział czasu polega na udostępnieniu zasobów jednostki obliczeniowej na określony czas na przemian jednemu i drugiemu zadaniu. W każdym cyklu jednostka wykona jedynie część zadania i przełączy się na drugie. Obliczenia równoległe są realizowane fizycznie jednocześnie, na wielu jednostkach obliczeniowych. Obliczenia równoległe mogą być wykonywane co najmniej na dwóch jednostkach obliczeniowych. Rozważając dwa zadania z poprzedniego przykładu, możliwość wykonywania ich równolegle wymaga dwóch jednostek obliczeniowych (np. dwóch procesorów lub dwóch rdzeni). 4. Parallel Extensions. Opisane na początku wydarzenia z rynku procesorów miały miejsce na początku tego dziesięciolecia. Już wtedy firma Microsoft widziała w procesorach wielordzeniowych duży potencjał. Oddział badawcza firmy, Microsoft Research [8], rozpoczął wtedy pacę nad narzędziem które pozwoliłoby programistą w łatwy i przyjemny sposób tworzyć aplikację wykorzystujące możliwość równoległego wykonywania kodu. W ten sposób powstała biblioteka TPL (Task Parallel Library), która stanowi fundament Parallel Extensions. Biblioteka ta jest częścią czwartej wersji platformy.net Framework [9]. 5. Równoległość w praktyce. W rozdziale tym zostanie zaprezentowany przykład praktycznego wykorzystania zalety przetwarzania równoległego. Do tego celu posłużono się aplikacją demonstracyjną, dostarczoną wraz z nową wersją platformy. Aplikacja ta generuje dynamiczne sceny 3D wykorzystując czasochłonną technikę śledzenia promieni, z ang. Ray Tracing. Sposób generowania obrazu zaimplementowano dwojako, w pierwszym wypadku wykorzystano typowe podejście sekwencyjne, w drugim wykorzystano bibliotekę Parallel Extensions. Maszyna testowa to: procesor Intel Core Quad (4x 2.2GHz), 1GB pamięci RAM, system operacyjny Windows Server 2008 zwirtualizowany przy pomocy technologii Hyper-V. Przy uruchomieniu aplikacji z sekwencyjną generacją obrazu, menadżer zadań systemu Windows pokazał zużycie procesora w granicach 25-26%, co w przypadku czterech rdzeni świadczy o tym że wtkorzystywano tylko jeden z nich. 2

3 Ilość FPS Zużycie procesora Współbieżnie 0,7 26 % Równolegle 2,8 100% Tabela 1 - Obciążenie procesora aplikacją Ray Tracing Uruchomienie aplikacji w trybie równoległym (z wykorzystaniem Parallel Extensions) spowodowało wzrost obciążenia procesora do 100%, dzięki czemu wykorzystywano pełną moc dostępnej maszyny testowej. Liczba generowanych klatek na sekundę FPS (z ang. frame per second) w drugim przypadku była 4 razy większa niż w przypadku pierwszym (Tabela 1). Różnica w kodzie algorytmu generowania obrazu równolegle, różni się od wersji synchronicznej jedynie jedna instrukcją. Biblioteka Parallel Extsnions wprowadza wprowadza bardzo wysoka abstrakcję równoległości, dzięki czemu implementacja takiego podejścia jest bardzo łatwa. 6. Imperatywny paralelizm. Przykłady programowania równoległego zostaną omówione na podstawie prezentacji Daniela Motha Parallel Programming for Managed Developers with the Next Version of Microsoft Visual Studio [10] przedstawionej na corocznej konferencji dla programistów związanych z technologiami Microsoftu, Professional Developer Conference. Konferencja ta odbyła się w październiku 2008 roku. Przykład polega na implementacji metody pewnej aplikacji, której celem jest wykonanie czasochłonnych obliczeń na każdym węźle dostarczonego drzewa binarnego. Obliczenia na węzłach są niezależne względem siebie. Kod aplikacji prezentuje listing 1, ciało metody przechodzącej po drzewie jest puste. Zadaniem jest napisanie tej metody w sposób minimalizujący czas potrzebny do przetworzenia całego drzewa o wysokości 9 węzłów. Pierwszym pomysłem na rozwiązaniem tego problemu jest rekurencja. W ten sposób stworzono drzewo więc w podobny sposób można je przeglądać. Funkcja wykorzystująca rekurencje może wyglądać podobnie do funkcji przedstawionej na listingu 2. using System; using System.Diagnostics; using System.Threading; using System.Threading.Tasks; namespace Tree class Program static void Main(string[] args) TNode root = TNode.CreateTree(9, 1); Stopwatch watch = Stopwatch.StartNew(); WalkTree(root); Console.WriteLine( String.Format("Elapsed = 0", watch.elapsedmilliseconds)); /* To co musimy zaimplementować. */ public static int ProcessItem(int value) Thread.SpinWait( ); return value; class TNode public TNode LeftNode get; set; public TNode RightNode get; set; public int Value get; set; public static TNode CreateTree( int deep, int start) TNode root = new TNode(); root.value = start; if (deep > 0) root.leftnode = CreateTree( deep - 1, start + 1); root.rightnode = CreateTree( deep - 1, start + 1); return root; Listing 1- Kod aplikacji wykonującej obliczenia na węzłach drzewa 3

4 Rozwiązania będą testowe na maszynie z procesorem Intel Core 2 Duo T7100 (2x 1,8GHz), 4GB pamięci RAM oraz systemem operacyjnym Windows 7 64bit. if (node == null) return; WalkTree(node.LeftNode); WalkTree(node.RightNode); ProcessItem(node.Value); Listing 2 - Funkcja przeglądania drzewa wykorzystująca rekurencje Czas uzyskany przez rozwiązanie rekurencyjne to 24,998 s.. Zużycie procesora w tym teście wynosiło 50% (taką wartość pokazywał podczas testów menadżer zadań systemu Windows), czyli na dwa dostępne rdzenie, wykorzystywano tylko jeden z nich. Połowa mocy maszyny została niespożyta. Błędem w tym podejściu jest wykorzystanie jednego wątku (tak działa rekurencja). Skoro mamy procesor wielordzeniowy, to można wykorzystać wiele wątków, wtedy wszystkie rdzenie powinny pracować na pełnym obciążeniu. Funkcja implementująca takie podejście przedstawia listing 3. if (node == null) return; Thread left = new Thread((o) => WalkTree(node.LeftNode)); left.start(); Thread right = new Thread((o) => WalkTree(node.RightNode)); right.start(); left.join(); right.join(); ProcessItem(node.Value); Listing 3 - Funkcja przeglądania drzewa wykorzystująca wątki W powyższym rozwiązaniu wykorzystano składnie Lambda, dostępną w platformie.net od wersji 3.5, użyto także metody Join, aby rozwiązanie było funkcjonalnie porównywalne z rekurencją (czyli operacje na węzłach będą się odbywać w tej samej kolejności). Zmierzony czas to 14,116 s., czyli prawie 10 sekund szybciej. Podczas testowania uruchomiony menadżer zadań pokazywał stuprocentowe wykorzystanie mocy procesora, oto właśnie chodziło. Rozwiązanie wydaje się poprawne jednak należy dokładnie przemyśleć, takie podejście. Podczas obliczeń powstaje tyle wątków ile jest węzłów na których należy wykonać operację. W idealnym drzewie binarnym o wysokości 9 jest 511 węzłów, każdorazowe tworzenie wątku jest operacją bardzo czasochłonna ponieważ za każdym razem należy odwołać się do systemu, który przydzieli odpowiednie zasoby m.in. pamięć, licznik rozkazów itp. Ponadto przełączanie pomiędzy tak dużą liczbą wątków jest również czasochłonne. Jak można zrobić to lepiej? Tutaj z pomocą przychodzi Parallel Extensions, do takich właśnie celów stworzono tą bibliotekę. Rozwiązanie wykorzystujące nowe narzędzia i struktury danych, które zostaną opisane w dalszej części artykułu. Listing 4 prezentuje implementacje rozwiązania przy użyciu tej biblioteki. if (node == null) return; Task left = Task.Create((o) => WalkTree(node.LeftNode)); Task right = Task.Create((o) => WalkTree(node.RightNode)); left.wait(); right.wait(); ProcessItem(node.Value); Listing 4 - Funkcja przeglądania drzewa wykorzystująca bibliotekę Parallel Extensions Jak można zauważyć kod tej metody nie różni się znacząco od rozwiązania wielowątkowego. Słowo kluczowe Thread zastąpiono słowem Task, a metodę Join, metodą Wait. Zmierzony czas to 13,203 ms, czyli jedynie sekundę szybciej od rozwiązania wykorzystujące wątki. Największą 4

5 zaleta takiego podejścia jest pozyskana pamięć, która w niektórych przypadkach może mieć kluczowe znaczenie dla algorytmu przetwarzania. Czasy tych rozwiązań na maszynie 4 rdzeniowej, wykorzystanej podczas prezentacji Daniela Motha przedstawia Tabela 2, jak widać w tym przypadku otrzymano prawie 4 krotny wzrost wydajności. Rekurencja Wątki Zadania.NET ,022 s 5,801 s 3,918 s Tabela 2 - Czasy rozwiązań zadania przechodzenia po drzewie otrzymane przez Daniela Motha podczas prezentacji PDC Podejście której stosuje bezpośrednio obiekty typu Task, nazywane jest imperatywnym paralelizmem. 7. Deklaratywny paralelizm. Drugim podejściem do równoległości w bibliotece Parallel Extensions jest tzw. deklaratywny paralelizm. Polega on na wprowadzeni równoległości w zapytaniach LINQ [11]. Aby zobrazować taki przypadek należy prześledzić przykładowe zapytanie przedstawione na listingu 5. var q = from p in people where p.age < MaxAge && p.age > MinAge && p.state == STATE order by age ascending select p; Listing 5 - Przykładowe zapytanie LINQ Zapytanie to ma na celu wybranie w kolejności rosnącej tych obiektów z kolekcji people, które spełniają pewne zadane kryteria. Normalne wykonanie tego zapytanie polega na przeglądaniu kolekcji obiekt po obiekcie. Te obiekty które spełniają podane kryteria są zwracane. W przypadku kiedy kolekcja liczy tysiące obiektów operacja ta jest czasochłonna i może mieć bezpośredni wpływ na wydajność całego programu. Wprowadzanie równoległości w takim przypadku, może polegać na rozdzieleniu kolekcji na rozłączne zbiory i analizowanie ich osobno np. na innych rdzeniach. Po zakończeniu wyniki osobnych analiz powinny być łączone. Takie podejście właśnie wykorzystuje Parallel Extensions. Zmodyfikowane zapytanie prezentuje listing 6. var q = from p in people.asparallel() where p.age < MaxAge && p.age > MinAge && p.state == STATE order by age ascending select p; Listing 6 - Przykładowe zapytanie LINQ, zrównoleglone przy pomocy Parallel Extensions Jak widać równoległe zapytanie różni się od wersji sekwencyjnej jedynie jedną instrukcją - na obiekcie kolekcji wykonano dodatkowo metodę AsParallel. Powoduje to rozdzielenie kolekcji do analizy. Podział kolekcji może nie być równy i zależeć może od aktualnego obciążenia rdzeni np. jeden z rdzeni może dostać większą część kolekcji, niż inne rdzenie. Deklaratywny paralelizm wewnętrznie działa na fundamentach imperatywnego podejścia tj. tworzone są obiekty typu Task, które rozdziale są poprzez menadżera zadań. 8. Zasada działania. Podstawą kwestią jaką należy zrozumieć w Parallel Extensions jest sposób działania menadżera zadań tej biblioteki. Rysunek 1 przedstawia schematyczną budowie tego elementu na maszynie 4 rdzeniowej. Dokładną budowę menadżera zadań można opisać następująco: jeśli dany jest procesor o N rdzeniach, to dla każdego rdzenia tworzona jest grupa robocza (z ang. work group), zaznaczona na rysunku zielona elipsą z napisem WG). Każda taka grupa robocza posiada jednego aktywnego pracownika (z ang. worker). Pracownik to czerwona elipsa na obręczy doczepionej do grupy roboczej. Pracowników może być więcej, ale tylko jeden może być aktywny w danej chwili, tzn. nie w stanie zawieszenia. Pracownik wykonuje zadania na rdzeniu, do którego przypisana jest grupa robocza. Każda 5

6 grupa robocza posiada własną kolejkę zadań, które utożsamiane są z obiektami klasy Task tworzonymi w kodzie programu. Dodatkowo istnieje także globalna kolejka zadań. Grupa robocza przypisana jest do konkretnego rdzenia procesora i wszystkie obliczenia w ramach tej grupy wykonywane są w jednym wątku. Biblioteka Parallel Extensions tworzy tylko tyle wątków ile dostępnych jest rdzeni na maszynie na której aktualnie jest uruchomiona. Nie ma tutaj kosztu przełączania, ponieważ każdy rdzeń ma swój wątek. Rysunek 1 - Menadżer zadań Parallel Extensions Pierwsze tworzone zadania trafiają do globalnej kolejki zadań (z ang. global queue). Z tego miejsca zostają rozdzielone do poszczególnych kolejek grup roboczych. Podział ten nie musi być sprawiedliwy i może zależeć od aktualnego obciążenia rdzeni. Kiedy pracownik nie wykonuje żadnych zadań sięga do kolejki swojej grup roboczej i pobiera z niej pierwsze zadania do wykonania. Zakładając że w przykładowym programie do każdej lokalnej kolejki trafiły jakieś zadania, każdy pracownik sięga zadanie z lokalnej kolejki i zaczyna je wykonywać. W tym momencie na każdym rdzeniu wykonywany jest jeden wątek obsługujący któreś z zadań, a zużycie procesora wynosi 100%, czyli wykorzystywany jest cały potencjał maszyny. Co się stanie jeśli pracownik skończył wykonywać swoje zadanie a w kolejce jego grupy nie ma kolejnych zadań? Pracownik chce dalej pracować, zagląda więc do globalnej kolejki z nadzieją że znajdzie tam kolejne zadania do wykonania. Jeśli są tam nierozdzielone jeszcze zadania, pracownik pobiera jedno z nich i zajmuje się jego wykonywaniem. Co jednak jeśli tam również jest pusto? W tym momencie stosowany jest mechanizm kradzieży pracy (z ang. work stealing). Kradzież pracy polega na przeglądaniu przez pracownika wszystkich lokalnych kolejek sąsiednich grup roboczych w poszukiwaniu wolnego zadania do wykonania. Jeśli któraś z kolejek zawiera zadania, to te znajdujące się na końcu tej kolejki zostaje skradzione. Celem tego mechanizmu jest całkowite wykorzystanie wszystkich dostępnych jednostek obliczeniowych. W przykładzie o przechodzeniu drzewa, zadania tworzyły kolejne zadania do wykonania. Jeśli pracownik wykonuje zadanie, które tworzy nowe zadania, to te nowe zadania umieszczane są na początku kolejki grupy roboczej tego pracownika. Taka reguła ma bezpośredni związek z mechanizmem kradzieży pracy. Zadanie które zostało stworzone jako ostatnie, będzie wykonywane jako następne, ponieważ znajduje się na pierwszym miejscu kolejki. Dane potrzebne do wykonania tego zadania mogą być jeszcze trzymane w pamięci podręcznej rdzenia, więc dostęp do nich będzie o wiele szybszy niż do kolejnych zadań z kolejki. Z kolei zadania na końcu kolejki były stworzone najwcześniej, więc dane o nich mogły zostać wyrzucone z pamięci podręcznej. Właśnie te zadania są kradzione podczas działania mechanizmu kradzieży pracy. Przy takiej kradzieży prawdopodobnie nie potrzebna będzie synchronizacja pomiędzy rdzeniami ponieważ dane o zadaniach zostały wyrzucone z pamięci podręcznych. Zadania mogą się zablokować czekając na zakończenie wykonywania innych zadań, do tego celu służy metoda Wait. Menadżer zadań po wykryciu że zadanie się zablokowało, zamraża 6

7 pracownika który je wykonywał, a grupa robocza tego pracownika tworzy kolejnego, który staje się jedynym aktywnym pracownikiem. Pracownik ten wykonuje kolejne zadania znajdujące się w lokalnej kolejce lub kradnie je innym grupom roboczym. Należy zaznaczyć, że tworzenie nowego pracownika nie wiąże się z tworzeniem nowego wątku. Cała grupa robocza oraz wszyscy jej pracownicy wykonują się w tym samym wątku. Kiedy zadanie się odblokowuje oczekuje na zakończenie zadania aktualnego pracownika i jest wykonywane poza kolejnością tj. przed zadaniami czekającymi w kolejce lokalnej grupy roboczej. 9. Podsumowanie. Parallel Extensions jest podstawowa biblioteką programowania równoległego dla platformy.net i kierowana jest głownie na maszyny wieloprocesorowe lub wielordzeniowe. Nowe podejście stanowi godną alternatywę dla dotychczasowego, wielowątkowego modelu programowania. Główną zaletą tej biblioteki nie jest szybkość przetwarzania zadań, oszczędność pamięć, przenośność oraz skalowalność. W erze procesorów wielordzeniowych, stosowanie tej biblioteki staje się obowiązkowe. Bibliografia. [1] Gordon E. Moore: Cramming more components onto integrated circuits, Electronics Magazine 38 (8), 19/04/1965, ftp://download.intel.com/museum /Moores_Law/Articles-Press_Releases/ Gordon_Moore_1965_Article.pdf [2] Introducing to Intel s 32nm Process Technology, Whitepaper, 2009, m/westmere/intel_32nm_overview.pdf [3] Intel News Fact Sheet, Intel Developer Forum 22nm News Facts, 2009, ts/idffall_2009/pdfs/22nm_factsheet.pdf [4] Intel Core Duo Processor Family milyid=22731 [5] Intel Core Solo Processor Family milyid=18995 [6] Specyfikacja procesora Intel Core i7-950 Processor, [7] Hyper - Threading Technology, Intel Technology Journal, Volume 06, Issue 01, 14 luty 2002, ISSN X, ftp://download.intel.com/technology/itj/2002/ volume06issue01/vol6iss1_hyper_threading_t echnology.pdf [8] Microsoft Research [9].NET Framework 4.0, Microsoft Software Developer Network, [10] Parallel Programming for Managed Developers with the Next Version of Microsoft Visual Studio, Daniel Moth, Professional Developer Conference 2008, [11] LINQ, Microsoft Software Developer Network, 7

Programowanie równoległe!= współbieżne na platformie.net Framework 4.0

Programowanie równoległe!= współbieżne na platformie.net Framework 4.0 Programowanie równoległe!= współbieżne na platformie.net Framework 4.0 Wojciech Grześkowiak Streszczenie: Parallel Extensions, to zbiór narzędzi do programowania równoległego, które stanowi nowość na platformie.net

Bardziej szczegółowo

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

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

Bardziej szczegółowo

Nowinki technologiczne procesorów

Nowinki technologiczne procesorów Elbląg 22.04.2010 Nowinki technologiczne procesorów Przygotował: Radosław Kubryń VIII semestr PDBiOU 1 Spis treści 1. Wstęp 2. Intel Hyper-Threading 3. Enhanced Intel Speed Technology 4. Intel HD Graphics

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

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

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

Bardziej szczegółowo

Task Parallel Library

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

Bardziej szczegółowo

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer Sprzęt komputerowy 2 Autor prezentacji: 1 prof. dr hab. Maria Hilczer Budowa komputera Magistrala Procesor Pamięć Układy I/O 2 Procesor to CPU (Central Processing Unit) centralny układ elektroniczny realizujący

Bardziej szczegółowo

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer Sprzęt komputerowy 2 Autor prezentacji: 1 prof. dr hab. Maria Hilczer Budowa komputera Magistrala Procesor Pamięć Układy I/O 2 Procesor to CPU (Central Processing Unit) centralny układ elektroniczny realizujący

Bardziej szczegółowo

Nowinki technologiczne procesorów

Nowinki technologiczne procesorów Elbląg 22.04.2010 Nowinki technologiczne procesorów Przygotował: Radosław Kubryń VIII semestr PDBiOU 1 Spis treści 1. Wstęp 2. Intel Hyper-Threading 3. Enhanced Intel Speed Technology 4. Intel HD Graphics

Bardziej szczegółowo

Nowinkach technologicznych procesorów

Nowinkach technologicznych procesorów Elbląg 22.04.2010 Nowinkach technologicznych procesorów Przygotował: Radosław Kubryń VIII semestr PDBiOU 1 Spis treści 1. Wstęp 2. Intel Hyper-Threading 3. Enhanced Intel Speed Technology 4. Intel HD Graphics

Bardziej szczegółowo

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

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

Bardziej szczegółowo

4. Procesy pojęcia podstawowe

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

Bardziej szczegółowo

RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC,

RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC, RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC, zapoczątkowana przez i wstecznie zgodna z 16-bitowym procesorem

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie współbieżne i rozproszone

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

Bardziej szczegółowo

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ Procesy i wątki Proces posiada samodzielne środowisko wykonawcze. Proces posiada własny zestaw podstawowych zasobów w czasie wykonywania; W szczególności, każdy proces ma własną przestrzeń pamięci. W uproszczeniu

Bardziej szczegółowo

LINQ TO XML. Autor ćwiczenia: Marcin Wolicki

LINQ TO XML. Autor ćwiczenia: Marcin Wolicki LINQ TO XML Celem ćwiczenia jest zapoznanie się z możliwościami przetwarzania dokumentów XML na platformie.net. W toku zadania zostaną przedstawione dwie technologie: LINQ TO XML i XPath. Autor ćwiczenia:

Bardziej szczegółowo

Wykład 8: klasy cz. 4

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

Bardziej szczegółowo

Aplikacje w Javie- wykład 11 Wątki-podstawy

Aplikacje w Javie- wykład 11 Wątki-podstawy 1 Aplikacje w Javie- wykład 11 Wątki-podstawy Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/ http://docs.oracle.com/javase/9/docs/

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

4. Procesy pojęcia podstawowe

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Cel zajęć. Celem zajęć jest zapoznanie się ze sposobem działania popularnych kolekcji. Wprowadzenie teoretyczne. Rozważana w ramach niniejszych

Bardziej szczegółowo

Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych

Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych Jacek Matulewski Materiały dla Podyplomowego Studium Programowania i Zastosowania Komputerów, sekcja Projektowanie i tworzenie aplikacji

Bardziej szczegółowo

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

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

Bardziej szczegółowo

msgbox("akcja: Początek, argument: " + argument.tostring()); Thread.Sleep(1000); //opóźnienie msgbox("akcja: Koniec"); return DateTime.Now.

msgbox(akcja: Początek, argument:  + argument.tostring()); Thread.Sleep(1000); //opóźnienie msgbox(akcja: Koniec); return DateTime.Now. Programowanie asynchroniczne. Operator await i modyfikator async Język C# 5.0 wyposażony został w nowy operator await, ułatwiający synchronizację dodatkowych zadań uruchomionych przez użytkownika. Poniżej

Bardziej szczegółowo

Struktura drzewa w MySQL. Michał Tyszczenko

Struktura drzewa w MySQL. Michał Tyszczenko Struktura drzewa w MySQL Michał Tyszczenko W informatyce drzewa są strukturami danych reprezentującymi drzewa matematyczne. W naturalny sposób reprezentują hierarchię danych toteż głównie do tego celu

Bardziej szczegółowo

Wprowadzenie do programowania współbieżnego

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

Bardziej szczegółowo

Dydaktyka Informatyki budowa i zasady działania komputera

Dydaktyka Informatyki budowa i zasady działania komputera Dydaktyka Informatyki budowa i zasady działania komputera Instytut Matematyki Uniwersytet Gdański System komputerowy System komputerowy układ współdziałania dwóch składowych: szprzętu komputerowego oraz

Bardziej szczegółowo

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami Rok akademicki 2015/2016, Wykład nr 6 2/21 Plan wykładu nr 6 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2015/2016

Bardziej szczegółowo

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Ćwiczenie 1. Kolejki IBM Message Queue (MQ) Ćwiczenie 1. Kolejki IBM Message Queue (MQ) 1. Przygotowanie Przed rozpoczęciem pracy, należy uruchomić "Kreator przygotowania WebSphere MQ" oraz przejść przez wszystkie kroki kreatora, na końcu zaznaczając

Bardziej szczegółowo

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki 2011. Promotor dr inż. Paweł Figat

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki 2011. Promotor dr inż. Paweł Figat Grzegorz Ruciński Warszawska Wyższa Szkoła Informatyki 2011 Promotor dr inż. Paweł Figat Cel i hipoteza pracy Wprowadzenie do tematu Przedstawienie porównywanych rozwiązań Przedstawienie zalet i wad porównywanych

Bardziej szczegółowo

Budowa Mikrokomputera

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,

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Przykładowe sprawozdanie. Jan Pustelnik

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Wstęp do programowania 2

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

Bardziej szczegółowo

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego Wątki Wątek - definicja Ciąg instrukcji (podprogram) który może być wykonywane współbieżnie (równolegle) z innymi programami, Wątki działają w ramach tego samego procesu Współdzielą dane (mogą operować

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

Systemy operacyjne. Zajęcia 11. Monitory

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Metody Metody, parametry, zwracanie wartości

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

Bardziej szczegółowo

Klasy abstrakcyjne i interfejsy

Klasy abstrakcyjne i interfejsy Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie

Bardziej szczegółowo

ALGORYTMY I STRUKTURY DANYCH

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

Bardziej szczegółowo

WIELOWĄTKOWOŚĆ. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

WIELOWĄTKOWOŚĆ. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska WIELOWĄTKOWOŚĆ Waldemar Korłub Platformy Technologiczne KASK ETI Politechnika Gdańska Wydajność 2 Do 2005 roku wydajność komputerów poprawiano zwiększając częstotliwość taktowania procesora 1995: Pentium

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

Wielowątkowość mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Wielowątkowość mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Wielowątkowość mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Uruchomienie programu powoduje stworzenie nowego procesu przez system operacyjny. Proces wykonywany program wraz

Bardziej szczegółowo

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami: Wskaźniki są nieodłącznym elementem języka C. W języku C++ także są przydatne i korzystanie z nich ułatwia pracę, jednak w odróżnieniu do C wiele rzeczy da się osiągnąć bez ich użycia. Poprawne operowanie

Bardziej szczegółowo

Wykład 4. Klasa List Kolejki Stosy Słowniki

Wykład 4. Klasa List Kolejki Stosy Słowniki Wykład 4 Klasa List Kolejki Stosy Słowniki Klasa List Poważną niedogodnością tablic jako kolekcji danych jest fakt, że muszą one mieć stały rozmiar. Programista musi wiedzieć z góry ile miejsca powinien

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

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

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

Bardziej szczegółowo

Zasady programowania Dokumentacja

Zasady programowania Dokumentacja Marcin Kędzierski gr. 14 Zasady programowania Dokumentacja Wstęp 1) Temat: Przeszukiwanie pliku za pomocą drzewa. 2) Założenia projektu: a) Program ma pobierać dane z pliku wskazanego przez użytkownika

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

Szablony funkcji i klas (templates)

Szablony funkcji i klas (templates) Instrukcja laboratoryjna nr 3 Programowanie w języku C 2 (C++ poziom zaawansowany) Szablony funkcji i klas (templates) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp

Bardziej szczegółowo

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku.

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku. Laboratorium 7 Wstęp Jednym z podstawowych własności Javy jest wielowątkowość. Wiąże się to z możliwością współbieżnego wykonywania różnych operacji w ramach pojedynczej wirtualnej maszyny Javy (JVM).

Bardziej szczegółowo

Interfejsy w Java. Przetwarzanie równoległe. Wątki.

Interfejsy w Java. Przetwarzanie równoległe. Wątki. Informatyka I Interfejsy w Java. Przetwarzanie równoległe. Wątki. dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Interfejsy w Java Pojęcie interfejsu w programowaniu Deklaracja

Bardziej szczegółowo

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

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

Bardziej szczegółowo

JAK DZIAŁAJĄ FUNKCJE PODZIAŁ PAMIĘCI

JAK DZIAŁAJĄ FUNKCJE PODZIAŁ PAMIĘCI JAK DZIAŁAJĄ FUNKCJE PODZIAŁ PAMIĘCI Gdy wywołujesz daną funkcję, program przechodzi do tej funkcji, przekazywane są parametry i następuje wykonanie ciała funkcji. Gdy funkcja zakończy działanie, zwracana

Bardziej szczegółowo

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej. Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.

Bardziej szczegółowo

Leszek Stasiak Zastosowanie technologii LINQ w

Leszek Stasiak Zastosowanie technologii LINQ w Leszek Stasiak Zastosowanie technologii LINQ w C# 1. Wstęp - połączenie Do naszych zadań będziemy używać Microsoft Visual Studio 2010. Stwórzmy nowy projekt Windows Form Application. Mając do dyspozycji

Bardziej szczegółowo

Koło zainteresowań Teleinformatyk XXI wieku

Koło zainteresowań Teleinformatyk XXI wieku Koło zainteresowań Teleinformatyk XXI wieku PROJEKT 3 Temat: Aplikacja Interfejsu MS Kinect Imię i nazwisko ucznia: Kamil Kruszniewski Klasa: III TiA Numer z dziennika: 14 Suwałki, Kwiecień 2013 Strona

Bardziej szczegółowo

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class

Bardziej szczegółowo

Architektura komputerów

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

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

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

4. Procesy pojęcia podstawowe

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

Bardziej szczegółowo

Języki i paradygmaty programowania - 1

Języki i paradygmaty programowania - 1 doc. dr inż. Tadeusz Jeleniewski e-mail: t.jeleniewski@neostrada.pl tadeusz.jeleniewski@pwr.edu.pl http://www.tjeleniewski.wstt.edu.pl Cele przedmiotu Umiejętność zastosowania i oceny przydatności paradygmatów

Bardziej szczegółowo

Db4o obiektowa baza danych wersja.net

Db4o obiektowa baza danych wersja.net Wstęp Db4o obiektowa baza danych wersja.net Db4o (database for objects) to obiektowa baza danych na platformę Java i.net. Pełna wersja bazy db4o jest dostępna na dwóch licencjach: open source: pozwala

Bardziej szczegółowo

która metoda jest najlepsza

która metoda jest najlepsza która metoda jest najlepsza dr inż. Marek Żabka Instytut Matematyki Wydział Matematyki Stosowanej Politechnika Śląska 20 września 2012r Nowa metoda tworzenia grafiki na stronie internetowej: element,,canvas

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie Rozproszone i Równoległe

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

Architektura Systemów Komputerowych. Rozwój architektury komputerów klasy PC

Architektura Systemów Komputerowych. Rozwój architektury komputerów klasy PC Architektura Systemów Komputerowych Rozwój architektury komputerów klasy PC 1 1978: Intel 8086 29tys. tranzystorów, 16-bitowy, współpracował z koprocesorem 8087, posiadał 16-bitową szynę danych (lub ośmiobitową

Bardziej szczegółowo

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE WINDOWS 1 SO i SK/WIN 007 Tryb rzeczywisty i chroniony procesora 2 SO i SK/WIN Wszystkie 32-bitowe procesory (386 i nowsze) mogą pracować w kilku trybach. Tryby pracy

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Sieci Komputerowe 2 / Ćwiczenia 2

Sieci Komputerowe 2 / Ćwiczenia 2 Tematyka Sieci Komputerowe 2 / Ćwiczenia 2 Opracował: Konrad Kawecki na podstawie materiałów: http://www.isi.edu/nsnam/ns/tutorial/index.html Na ćwiczeniach zapoznamy się z symulatorem

Bardziej szczegółowo

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski e-mail: t.jeleniewski@neostrada.pl tadeusz.jeleniewski@pwr.wroc.pl http://www.tjeleniewski.wstt.edu.pl Treści kształcenia: Paradygmaty

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego

Bardziej szczegółowo

Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński

Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński Plan Prezentacji. Programowanie ios. Jak zacząć? Co warto wiedzieć o programowaniu na platformę ios? Kilka słów na temat Obiective-C.

Bardziej szczegółowo

Wykorzystanie architektury Intel MIC w obliczeniach typu stencil

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

Bardziej szczegółowo

Kompletna dokumentacja kontenera C++ vector w - http://www.cplusplus.com/reference/stl/vector/

Kompletna dokumentacja kontenera C++ vector w - http://www.cplusplus.com/reference/stl/vector/ STL, czyli o co tyle hałasu W świecie programowania C++, hasło STL pojawia się nieustannie i zawsze jest o nim głośno... często początkujące osoby, które nie znają STL-a pytają się co to jest i czemu go

Bardziej szczegółowo

Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie. dr inż. Adam Piórkowski. Jakub Osiadacz Marcin Wróbel

Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie. dr inż. Adam Piórkowski. Jakub Osiadacz Marcin Wróbel Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Problem magazynowania i przetwarzania wielkoformatowych map i planów geologicznych. Promotor: dr inż. Adam Piórkowski Autorzy: Jakub Osiadacz

Bardziej szczegółowo

Dokumentacja fillup - MS SQL

Dokumentacja fillup - MS SQL Dokumentacja fillup - MS SQL e-file.pl 28 lipca 2017 Spis treści Wstęp 2 Wymagania sprzętowe 2 Windows Server 2012.......................... 2 Windows 10............................... 3 MS SQL Server.............................

Bardziej szczegółowo

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1 1 LINQ 1 1. Cel zajęć Celem zajęć jest zapoznanie się z technologią LINQ oraz tworzeniem trójwarstwowej aplikacji internetowej. 2. Zadanie Proszę przygotować aplikację WWW, która: będzie pozwalała na generowanie

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Laboratorium przedmiotu Technika Cyfrowa

Laboratorium przedmiotu Technika Cyfrowa Laboratorium przedmiotu Technika Cyfrowa ćw.3 i 4: Asynchroniczne i synchroniczne automaty sekwencyjne 1. Implementacja asynchronicznych i synchronicznych maszyn stanu w języku VERILOG: Maszyny stanu w

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Wykład 10 - boost Thread. 8 czerwca 2007 Równoległość bardzo wolna reakcja człowieka wolne urządzenia wejścia - wyjścia (np. drukarki) bardzo szybkie procesory można przeprowadzać obliczenia podczas obsługi

Bardziej szczegółowo

Historia modeli programowania

Historia modeli programowania Języki Programowania na Platformie.NET http://kaims.eti.pg.edu.pl/ goluch/ goluch@eti.pg.edu.pl Maszyny z wbudowanym oprogramowaniem Maszyny z wbudowanym oprogramowaniem automatyczne rozwiązywanie problemu

Bardziej szczegółowo

Budowa i zasada działania komputera. dr Artur Bartoszewski

Budowa i zasada działania komputera. dr Artur Bartoszewski Budowa i zasada działania komputera 1 dr Artur Bartoszewski Jednostka arytmetyczno-logiczna 2 Pojęcie systemu mikroprocesorowego Układ cyfrowy: Układy cyfrowe służą do przetwarzania informacji. Do układu

Bardziej szczegółowo

Algorytmy i Struktury Danych

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

Bardziej szczegółowo

ξ II.UWr Wprowadzenie do STM

ξ II.UWr Wprowadzenie do STM ξ KS @.UWr Wprowadzenie do STM Marek Materzok ZOSA 2007 ξ KS @.UWr Wprowadzenie Były sobie komputery. Wykonywały programy instrukcja po instrukcji i wszyscy byli szczęśliwi... ξ KS @.UWr Wprowadzenie Były

Bardziej szczegółowo

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows.

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows. Kod szkolenia: Tytuł szkolenia: PS/WIN Programowanie systemowe w Windows Dni: 5 Opis: Adresaci szkolenia Szkolenie adresowane jest do programistów tworzących aplikacje w systemach z rodziny Microsoft Windows,

Bardziej szczegółowo

Budowa komputera Komputer computer computare

Budowa komputera Komputer computer computare 11. Budowa komputera Komputer (z ang. computer od łac. computare obliczać) urządzenie elektroniczne służące do przetwarzania wszelkich informacji, które da się zapisać w formie ciągu cyfr albo sygnału

Bardziej szczegółowo

Listy powiązane zorientowane obiektowo

Listy powiązane zorientowane obiektowo Listy powiązane zorientowane obiektowo Aby zilustrować potęgę polimorfizmu, przeanalizujmy zorientowaną obiektowo listę powiązaną. Jak zapewne wiesz, lista powiązana jest strukturą danych, zaprojektowaną

Bardziej szczegółowo

Wprowadzenie do programowania

Wprowadzenie do programowania do programowania ITA-104 Wersja 1 Warszawa, Wrzesień 2009 ITA-104 do programowania Informacje o kursie Zakres tematyczny kursu Opis kursu Kurs przeznaczony jest do prowadzenia przedmiotu do programowania

Bardziej szczegółowo

Podstawy programowania komputerów

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

Bardziej szczegółowo

Programowanie obiektowe i C++ dla matematyków

Programowanie obiektowe i C++ dla matematyków Programowanie obiektowe i C++ dla matematyków Bartosz Szreder szreder (at) mimuw... 22 XI 2011 Uwaga! Ponieważ już sobie powiedzieliśmy np. o wskaźnikach i referencjach, przez które nie chcemy przegrzebywać

Bardziej szczegółowo