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

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

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

Transkrypt

1 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 4.0. Środowisko te w finalnej postaci pojawi się w roku 2010, ale dzięki wersjom beta juz dziś można poznać kluczowe funkcjonalności tego rozwiązania. Wprowadza ono nowy model programowania, oparty na równoległości, a nie współbieżności. Umożliwia pełne wykorzystanie wielordzeniowych i wieloprocesorowych maszyn. Keywords:.NET, wątki, współbieżność, paralelizm 1. Wstęp Kiedy ocenia się moc komputer, pierwszą rzeczą na jaką powinno się zwrócić uwagę jest częstotliwość procesora. Więcej znaczy lepiej. Producenci nie mogli jednak przyśpieszać procesorów w nieskończoność. Na drodze stanęła technologia, należało więc wymyśleć coś innego. Tak powstała idea procesorów wielordzeniowych, a programowanie na nie, określono mianem programowania równoległego. 2. Rynek procesorów W latach 90 w półświatku informatyków głośno krążyło pewne prawo. Sformułował je założyciel firmy Intel, Gordon Moore. Mówiło one że Liczba tranzystorów w układzie elektrycznym podwaja się co miesiące. Na tamte czasy prawo to pasowało idealnie. Postęp techniczny był niewyobrażalny. Coraz więcej tranzystorów potrafiono wcisnąć w jeden wafel krzemu, a jak wiadomo ich liczba decyduje o częstotliwości pracy układu. Im więcej się ich tam umieści, tym większą częstotliwość można osiągnąć. Z czasem dotarto do rozmiarów rzędu 0.45 nm.. To bardzo blisko rozmiarów atomu. Czy można jeszcze bardziej zmniejszyć wymiar technologiczny? Na dzień dzisiejszy nie wiadomo. Faktem jest, że szukano alternatywy, a poszukiwania nie trwały długo, bo odpowiedz wydawała się oczywista. Skoro nie można zwiększać prędkości procesorów, to zaproponowano że zamiast jednej jednostki umieści się dwie takie same. Pierwszy tą technologię wprowadził Intel tworząc rodzinę procesorów Core Duo. Ciekawostką jest fakt, że funkcjonowały także jednostki Core Solo, które tak naprawdę były ukrytymi Duo, z pracującym jednym rdzenie. Czemu tak? Proces

2 technologiczny w którym produkuje się procesory, jest bardzo skomplikowany i często dochodzi do uszkodzeń. Intel stwierdził że jeśli usterka nastąpi w jednym rdzeniu, to nie warto wyrzucać całej płytki do kosza. Wyłączał uszkodzony rdzeń i sprzedawał procesor pod inna nazwą. Kolejno pojawiły się także jednostki 4 rdzeniowe, a ostatnie z nich, wyposażone w technologie HT pozwalają na uruchamianie do 8 wątków jednocześnie. Są 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 jednostki wielordzeniowe nie są tak samo szybkie jak te jednordzeniowe., to ciągle jedna płytka i ciągle bardzo mało miejsca. Jaka będzie przyszlość? Analitycy z firmy Forrester Research przewidują, że już w 2012 roku rozbudowane 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 zostanie omówione rozwiązanie ParallelFX, należy zwrócić uwagę na często popełniany błąd. W tytule artykułu pojawia się nierówność: równoległe!= (różne od) współbieżne. Napisano tak podkreślić że są to dwie odrębne rzeczy. Współbieżność wykorzystywana jest aby nie blokować wątku interfejsu użytkownika, gdy wykonywana jest jakaś asynchroniczna operacja, lub gdy manipulowane jest I/O. Równoległość wykorzystywana jest w tych samych przypadkach, lecz dodatkowo można o wiele bardziej zwiększyć wydajność aplikacji, wykonując równolegle wiele rzeczy. Dokładniej mówiąc współbieżność odnosi się jedynie do pojedynczego rdzenia. To tam dzięki szeregowaniu powstaje złudny obraz równoległego wykonywania wątków. Równoległość bowiem odnosi się do wielu rdzeni, bo tylko tam można niezależnie i fizycznie w tym samym czasie, równolegle wykonywać kilka wątków. Dzięki temu znacząco zwiększamy wydajność aplikacji. Opisane na początku wydarzenia z rynku procesorów nie działy się tak dawno, 3 może 4 lata wstecz. Już wtedy firma Microsoft widziała w tym potencjał. Jej oddział badawcza, znany także jako Microsoft Research, zaczął pracować nad czymś co pozwoliłoby developerem w łatwy i przyjemny sposób tworzyć aplikację wykorzystując możliwość równoległego wykonywania kodu. I tak powstała biblioteka TPL, czyli Task Parallel Library, która stanowi fundament Parallel Extensions, lub jak kto woli ParallelFX. Biblioteka ta jest częścią nadchodzącej, kolejnej wersji, platformy.net Framework. 2

3 4. ParallelFX w praktyce Na samym początku należy pokazać przykład jak praktycznie wykorzystać zalety przetwarzania równoległego. Do tego celu posłużono się aplikacją która była dostarczona wraz z wersją CDP (Community Technology Preview) tejże biblioteki. Aplikacja o której mowa zajmuje się generowaniem realistycznych scen 3D wykorzystując dosyć ciężką technikę - śledzenia promieni, z ang. Ray Tracing. Maszyna testowa to: Core Quad (4x 2.2Ghz), 1GB RAM, Windows Server 2008 na Hyper-V. Ilość FPS Zużycie procesora Współbieżnie 0,7 26 % Równolegle 2,8 100% Przy pierwszym uruchomieniu, Menadżer zadań pokazał zużycie procesora w 26% co, jak na cztery rdzenie, świadczy o tym że wykorzystaliśmy tylko jeden z nich. Uruchomienie w trybie równoległym dało wzrost pracy do 100%, dzięki czemu wykorzystywano pełną moc maszyny. Odświeżanie obrazu (FPS) było wtedy prawie 4 razy szybsze. Najciekawszy jest w tym wszystkim fakt, iż na poziomie kodu sposób równoległy od współbieżnego różni się jedynie kilkunastoma znakami. Tak mało za tak wiele. 5. Imperatywny paralelizm Jak więc wygląda kod aplikacji wykorzystującej przetwarzanie równoległe. Aby to przedstawić posłużono się kolejnym przykładem zaczerpniętym z prezentacji Daniela Motha na konferencji PDC (Proffesiona Developer Conferension) w październiku 2008 roku [2]. Jest więc aplikacji, w której istnieje metoda, której zadaniem jest wykonać pewne obliczenia na każdym węźle dostarczonego do niej drzewa binarnego. Ciało metody jest jak na razie puste. Zadaniem jest napisanie tej metody w najlepszy możliwy sposób. 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(12, 1); Stopwatch watch = Stopwatch.StartNew(); WalkTree(root); Console.WriteLine( String.Format("Elapsed = 0", watch.elapsedmilliseconds)); 3

4 public static void WalkTree(TNode node) /* 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; Pierwszym pomysłem jaki powinien nam do głowy, to rekurencja. W ten sposób tworzono drzewo w podobny sposób można je przeglądać. Funkcja tak zaimplementowana wygląda następująco public static void WalkTree(TNode node) if (node == null) return; WalkTree(node.LeftNode); WalkTree(node.RightNode); ProcessItem(node.Value); Mierzony zostanie czas takiej operacji. Maszyna testowa to: Core 2 Duo T7100 (2x1,8Ghz), 1GB RAM, Windows XP SP2 Uzyskany czas to ms.. Zużycie procesora w tym teście to jedynie 50% (tak pokazywał menadżer zadań). Czyli jak na dwa rdzenie, wykorzystywaliśmy tylko jeden z nich. Połowa mocy maszyny została nie wykorzystana. Błędem jest wykorzystanie jednego wątku. Skoro mamy procesor wielordzeniowy, to spróbujmy wykorzystać wiele wątków, wtedy wszystkie rdzenie powinny pracować. Funkcja implementująca te podejście wygląda następująco: 4

5 public static void WalkTree(TNode node) 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); Wykorzystano tu składnie Lambda, nowość w platformie.net 3.5. Użyto także metod join, aby rozwiązanie było funkcjonalnie porównywalne z rekurencją. Zmierzony czas to ms., czyli prawie dwa razy lepiej. Podczas testowania uruchomiony menadżer zadań wyglądał następująco: W 100% wykorzystywano moc procesora. Oto właśnie chodziło. I gdyby nie jeden problem, rozwiązanie wydawałoby się ideale. W czym rzecz? Do zastanowienia daje wykres zużycia pliku stronnicowego. Należało zadeklarować ponad 1GB pamięci. Dla każdego węzła tworzono wątek, węzłów w drzewie o wysokości 9 jest ponad tysiąc, a każdy wątek na zarządzanej platformie.net to 1MB pamięci, stąd właśnie owy 1GB. Co by się stało gdybym zwiększył wysokość drzewa np. do 11. Pojawił się wyjątek Out of memory exception, czyli brak pamięci. Jak widać rozwiązanie dobre dla małych zbiorów danych. Zauważyć należy dodatkowo że taka ilość wątków powodowała duży nakład związany z przełączania kontekstu. Wiele czasu tracono właśnie w taki sposób. Podsumowując, rozwiązanie kiepskie. Jak można zrobić to lepiej? Tutaj z pomocą przychodzi nam Parallel Extension. 5

6 Do takich celów właśnie stworzono tą bibliotekę. Kod funkcji wykorzystującej PX wygląda następująco: public static void WalkTree(TNode node) 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); Czy w kodzie tym są duże zmiany w porównaniu do wersji wielowątkowej? Nie. Słowo kluczowe Thread zastąpiono Task, a metodę Join, Wait i to tyle. Zmierzony czas to ms, czyli jedynie pół sekundy szybciej, czy to dużo? Co zysakno? Odpowiedź: pamięć. Podczas działania aplikacji, zarezerwowano jedynie 4 MB pamięci. I gdyby drzewo miało wysokość 11, czy 111, tyle samo pamięci zostałoby zajęte. Wracając jednak do czasów. Należy pamiętać że tresowana jest wersja CTP z czerwca Wiec jest to jeszcze naprawdę wczesna produkcja. Metoda fabrykująca zadania (Task) jest tutaj dość ciężka. Do twórców ParallelFx trafił dość duży feedback odnośnie tego problemu, naprawiono to, jednak nie wypuszczono kolejnej wersji CTP dodatku. Wypuszczono za to VisualStudio 2010 oraz.net 4.0 w wersji CTP. Wyniki z tej wersji przedstawione są poniżej. Dane pobrane z prezentacji Daniela Motha. Rekurencja Wątki Zadania.NET 4.0 CTP 15022ms 5801 ms 3918 ms Do końca artykuły zaprezentowane testy będą wykonywane na wersji CTP z czerwca

7 6. Zasada działania Podstawą kwestią jaką należy zrozumieć to sposób działania menadżera zadań, Parallel Extensions. Menadżer zadań można wyobrazić sobie w poniższy sposób. Jeśli dany jest procesor o N rdzeniach, to dla każdego takiego rdzenia tworzona jest grupa robocza (work group) zaznaczona na rysunku zieloną kropą. Każda taka grupa robocza posiada jednego aktywnego workera. Worker to czerwona kropa na obręczy doczepionej do grupy roboczej. Workerów może być więcej, ale tylko jeden może być aktywny. Worker wykonuje zadania na rdzeniu, do którego przypisana jest grupa robocza. Każda grupa robocza posiada własną kolejkę zadań (tak, tych zadań które tworzyliśmy w kodzie). Dodatkowo istnieje także globalna kolejka zadań. Aha, tak naprawdę każda grupa robocza to jeden wątek, niezależnie od ilości workerów w niej egzystujących. Tak więc na każdym rdzeniu mam jeden wątek, skojarzony z naszą aplikacja. Kiedy tworzone są pierwsze zadania, trafiają one do globalnej kolejki zadań. Z tamtą zostają one 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 (worker) nie wykonuje żadnych zadań zagląda do kolejki swojej grup roboczej i pobiera z niej kolejne zadania do wykonania. Załóżmy że w przykładzie do każdej lokalnej kolejki trafiły jakieś zadania. Tak więc każdy pracownik bierze zadanie z kolejki i zaczyna je wykonywać. W tym momencie każdy rdzeń wykorzystywany jest w 100%. Czyli wykorzystywany jest cały potencjał maszyny. Co jednak jeśli pracownik skończył wykonywać swoje zadanie, a w kolejce jego grupy jest pusto? Pracownik, bardzo chce dalej pracować. Tak więc zagląda do globalnej kolejki z nadzieją że może znajdą się tam jakieś zadania do wykonania. Jeśli tak, pobiera je i zajmuje się ich wykonywaniem. Co jednak jeśli tam również jest pusto? Czy pracownik nie będzie pracował? Nie. Tu pojawia się mechanizm, z którego tak bardzo dumni są programiści i inżynierowie ParalleFX. Work Stealing, czyli kradzież pracy. 7

8 Pracownik przegląda wszystkie lokalne kolejki sąsiednich grup roboczych i jeśli są tam zadania, kradnie je. Co oczywiście ma skutek w tym, że znów wszystkie rdzenie pracują w 100%. Osiągnięto zatem równomierny rozkład pracy na wszystkie rdzenie procesora. Mechanizm jak najbardziej godny pochwały. W przykładzie o drzewie, zadania tworzyły kolejne zadania do wykonywania? Jeśli zadanie tworzy kolejne, to pracownik które wykonuje owo zadanie wrzuca je do lokalnej kolejki grupy roboczej. Czemu nie do globalnej? Bo to jest jego zadania, i nie chce się dzielić. Wrzuca je do kolejki która funkcjonuje jako LIFO, czyli last in first out. Zadanie które zostało stworzone jako ostatnie, będzie wykonywane jako następne, bo znajduje się na pierwszym miejscu kolejki. Z pewnością ma swoje dane jeszcze ciepłe w pamięci podręcznej rdzenia, wiec nie trzeba będzie ściągać ich z pamięci. Bardzo sprytnie. Co jednak z kolejnością zadań? Tu nie ma praktycznie żadnej kontroli. Zadania jakie tworzymy powinny być od siebie niezależne, więc ich kolejność wykonywania nie powinna mieć znaczenia. Wracając do menadżera zadań. Jak wiadomo pracownicy lubią kraść zadania innym. Kiedy to robią pobierają zadania ze szczytu kolejki, czyli nie z tego końca z którego pobiera je pracownik. Czemu tak? Skoro zadanie jest na końcu, to prawdopodobnie zostało stworzone dość dawno, a skoro tak, to dane dotyczące tego zadania nie znajdują się pewnie w cashu rdzenia na którym ustawiona jest grupa robocza od której kradniemy zadania. Tak więc nie trzeba będzie synchronizować się miedzy rdzeniami. Do omówienia został jeszcze jeden przypadek. W przykładzie zadania blokowały się czekając aż wykonają się inne. Do tego celu służy metoda Wait. Jak to wygląda w menadżerze? Kiedy zadanie się blokuje, to pracownik który je wykonywał zamraża się, a grupa robocza tworzy kolejnego pracownika, który staje się tym aktywnym i wykonuje zadania znajdujące się w kolejce lub kradnie je innym. Należy wspomnieć ż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 może być kontynuowane, to zamrożony pracownik oddaje je aktywnemu, lub inny pracownik z innej grup roboczej kradnie je i wykonuje dalej. 7. Podsumowanie Parallel Extensions to z pewnością przyszłość jeżeli chodzi o programowanie aplikacji kierowanych na maszyny wieloprocesorowe lub wielordzeniowe. Podejście te stanowi godną alternatywę dla dotychczasowego, wielowątkowego modelu. Główną zaletą tej platformy nie jest szybkość przetwarzania żądań, ale zaoszczędzona pamięć, w porównaniu z rozwiązaniami tradycyjnymi. Do wydania wersji końcowej z pewnością minie jeszcze sporo czasu, pracownicy Microsoftu z pewnością dokładnie dopracują swój projekt i uczynią go bardziej przyjaznym dla programistów. 8

9 Literatura [1] Blog programistów tworzących Parallel Extensions, [2] Prezentacja Daniel a Moth a na Professional Developer Conference,

Programowanie równoległe Parallel Extensions

Programowanie równoległe Parallel Extensions Programowanie równoległe Parallel Extensions W. Grześkowiak Instytut Informatyki, Wydział Elektroniki i Technik Informacyjnych, Politechnika Warszawska, ul. Nowowiejska 15/19, 00-665 Warszawa, Polska w.grzeskowiak@stud.elka.pw.edu.pl

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

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

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

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

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

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

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

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

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

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

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

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

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

Czym są właściwości. Poprawne projektowanie klas

Czym są właściwości. Poprawne projektowanie klas Z akcesorów get i set korzysta każdy kto programuje w C#. Stanowią one duże udogodnienie w programowaniu obiektowym. Zapewniają wygodę, bezpieczeństwo i znacząco skracają kod. Akcesory są ściśle związane

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

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

Ć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

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

AMD Ryzen recenzja procesora. Wpisany przez Mateusz Ponikowski Piątek, 11 Październik :47

AMD Ryzen recenzja procesora. Wpisany przez Mateusz Ponikowski Piątek, 11 Październik :47 Sprawdzamy niedrogi procesor od AMD. Składając niedrogi komputer do pracy z multimediami i okazjonalnego grania musimy zacząć od wyboru platformy i tutaj pojawia się odwieczne pytanie, Intel czy AMD? Budując

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

Metody getter https://www.python-course.eu/python3_object_oriented_programming.php 0_class http://interactivepython.org/runestone/static/pythonds/index.html https://www.cs.auckland.ac.nz/compsci105s1c/lectures/

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

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

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

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

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

TEST BETA PAMIĘCI PODRĘCZNEJ USB W APLIKACJI PRZYSPIESZ KOMPUTER - INSTRUKCJA

TEST BETA PAMIĘCI PODRĘCZNEJ USB W APLIKACJI PRZYSPIESZ KOMPUTER - INSTRUKCJA TEST BETA PAMIĘCI PODRĘCZNEJ USB W APLIKACJI PRZYSPIESZ KOMPUTER - INSTRUKCJA Aby wykonać wszystkie etapy testu PAMIĘCI PODRĘCZNEJ USB, powtórz wszystkie z poniższych kroków. Aby pomyślnie zakończyć test

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

xmlns:prism=http://www.codeplex.com/prism c. <ContentControl prism:regionmanager.regionname="mainregion" />

xmlns:prism=http://www.codeplex.com/prism c. <ContentControl prism:regionmanager.regionname=mainregion /> 1 Tworzenie Shella a. W pierwszej kolejności tworzymy nowy projekt: WPF Application. Name: Shell SolutionName: PrismApp b. Dodajemy bibliotekę PRISM za pomocą NuGet Managera (dla.net Framework 4.5 Prism

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

Wirtualizacja baz danych a Dynamic Memory. Cezary Ołtuszyk coltuszyk.wordpress.com

Wirtualizacja baz danych a Dynamic Memory. Cezary Ołtuszyk coltuszyk.wordpress.com Wirtualizacja baz danych a Dynamic Memory Cezary Ołtuszyk coltuszyk.wordpress.com Plan spotkania I. Wprowadzenie do tematu II. III. IV. Problem 1: Spadek wydajności maszyny wirtualnej Problem 2: SQL Server

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

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

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

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

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

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

FastReporter 2 OPROGRAMOWANIE DO KOŃCOWEGO PRZETWARZANIA DANYCH

FastReporter 2 OPROGRAMOWANIE DO KOŃCOWEGO PRZETWARZANIA DANYCH OPROGRAMOWANIE DO KOŃCOWEGO PRZETWARZANIA DANYCH Narzędzie do skonsolidowanego zarządzania oraz końcowego przetwarzania danych, zaprojektowane po to, aby zwiększyć wydajność raportowania inspekcji zakończeń

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

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

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

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

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

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

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

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

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

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

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

ξ 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

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

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

Instrukcja laboratoryjna

Instrukcja laboratoryjna Zaawansowane techniki obiektowe 2016/17 Instrukcja laboratoryjna Testy funkcjonalne Prowadzący: Tomasz Goluch Wersja: 1.0 Testowanie aplikacji z bazą danych Większość współczesnych aplikacji korzysta z

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

Brain Game. Wstęp. Scratch

Brain Game. Wstęp. Scratch Scratch 2 Brain Game Każdy Klub Kodowania musi być zarejestrowany. Zarejestrowane kluby można zobaczyć na mapie na stronie codeclubworld.org - jeżeli nie ma tam twojego klubu sprawdź na stronie jumpto.cc/18cplpy

Bardziej szczegółowo

akademia androida Service, BroadcastReceiver, ContentProvider część IV

akademia androida Service, BroadcastReceiver, ContentProvider część IV akademia androida Service, BroadcastReceiver, ContentProvider część IV agenda 1. BroadcastReceiver 2. Service 3. ContentProvider 4. Zadanie 1. 5. Zadanie 2 (domowe). 1. BroadcastReceiver BroadcastReceiver

Bardziej szczegółowo

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4 Spis treści 1 Wątki 1 2 Tworzenie wątków 1 3 Synchronizacja 3 4 Dodatki 3 5 Algorytmy sortowania 4 6 Klasa Runnable 4 Temat: Wątki Czym są wątki. Grafika. Proste animacje. Małe podsumowanie materiału.

Bardziej szczegółowo

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 2, część 1 1 Język JAVA podstawy Plan wykładu: 1. Rodzaje programów w Javie 2. Tworzenie aplikacji 3. Tworzenie apletów 4. Obsługa archiwów 5. Wyjątki 6. Klasa w klasie! 2 Język

Bardziej szczegółowo

Parametry techniczne. Testy

Parametry techniczne. Testy Dyski SSD stają się pomału podstawą każdego komputera. Dzięki swoim parametrom, które pod wieloma względami biją klasyczne konstrukcje HDD, oferują niezwykle wysoką wydajność. Przekłada się to między innymi

Bardziej szczegółowo

4. Procesy pojęcia podstawowe

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

Bardziej szczegółowo

Programowanie komputerów

Programowanie komputerów Programowanie komputerów Wykład 7: Programowanie wielowątkowe w Javie dr inż. Walery Susłow Współbieżność Programy współbieżne (concurrent software) aplikacje potrafiące wykonywać kilka operacji w tym

Bardziej szczegółowo

Podstawy programowania obiektowego

Podstawy programowania obiektowego Podstawy programowania obiektowego Technologie internetowe Wykład 5 Program wykładu Podejście obiektowe kontra strukturalne do tworzenie programu Pojęcie klasy i obiektu Składowe klasy: pola i metody Tworzenie

Bardziej szczegółowo

Wykład 1. Systemy przekazywania wiadomości z założeniem bezbłędności działania

Wykład 1. Systemy przekazywania wiadomości z założeniem bezbłędności działania Mariusz Juszczyk 16 marca 2010 Seminarium badawcze Wykład 1. Systemy przekazywania wiadomości z założeniem bezbłędności działania Wstęp Systemy przekazywania wiadomości wymagają wprowadzenia pewnych podstawowych

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

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

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób. Zadanie: Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób. Na kolejnych zajęciach projekt będzie rozwijana i uzupełniana o kolejne elementy omawiane

Bardziej szczegółowo

NASI SPONSORZY I PARTNERZY

NASI SPONSORZY I PARTNERZY NASI SPONSORZY I PARTNERZY Wirtualizacja baz danych a pamięć RAM Cezary Ołtuszyk Blog: coltuszyk.wordpress.com Plan spotkania I. Wprowadzenie do tematu II. III. IV. Hot Add Memory w Windows i SQL Server

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

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków mgr inż. Maciej Lasota Version 1.0, 13-05-2017 Spis treści Wyjątki....................................................................................

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

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

Visual Studio instalacja

Visual Studio instalacja Visual Studio 2017 - instalacja Do tej pory napisaliśmy wiele programów, z czego niemal wszystkie były aplikacjami konsolowymi. Najwyższy więc czas zająć się tworzeniem aplikacji z graficznym interfejsem

Bardziej szczegółowo

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania, Przetwarzanie równoległe PROJEKT OMP i CUDA Temat projektu dotyczy analizy efektywności przetwarzania równoległego realizowanego przy użyciu komputera równoległego z procesorem wielordzeniowym z pamięcią

Bardziej szczegółowo

Celem tego projektu jest stworzenie

Celem tego projektu jest stworzenie Prosty kalkulator Celem tego projektu jest stworzenie prostego kalkulatora, w którym użytkownik będzie podawał dwie liczby oraz działanie, które chce wykonać. Aplikacja będzie zwracała wynik tej operacji.

Bardziej szczegółowo

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE WINDOWS 1 SO i SK/WIN 006 Wydajność systemu 2 SO i SK/WIN Najprostszym sposobem na poprawienie wydajności systemu, jeżeli dysponujemy zbyt małą ilością pamięci RAM

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

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

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

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

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) 20.11.2002 Algorytmy i Struktury Danych PIŁA ZŁOŻONE STRUKTURY DANYCH C za s tw or ze nia s tr uk tur y (m s ) TWORZENIE ZŁOŻONYCH STRUKTUR DANYCH: 00 0

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

GSMONLINE.PL. Twój smartfon Huawei może być jeszcze szybszy Akcja. partnerska

GSMONLINE.PL. Twój smartfon Huawei może być jeszcze szybszy Akcja. partnerska GSMONLINE.PL Twój smartfon Huawei może być jeszcze szybszy 2017-07-06 Akcja partnerska Smartfony to tak naprawdę niewielkie komputery osobiste z własnym systemem operacyjnym i aplikacjami. Producenci dbają,

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

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

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

WPROWADZENIE DO JĘZYKA JAVA

WPROWADZENIE DO JĘZYKA JAVA WPROWADZENIE DO JĘZYKA JAVA programowanie obiektowe KRÓTKA HISTORIA JĘZYKA JAVA KRÓTKA HISTORIA JĘZYKA JAVA 1991 - narodziny języka java. Pierwsza nazwa Oak (dąb). KRÓTKA HISTORIA JĘZYKA JAVA 1991 - narodziny

Bardziej szczegółowo

Uruchom Firefox i w pasku adresu wpisz about:config, następnie w pasku Filtr wpisz: network.http. Powinieneś otrzymać okienko podobne jak poniższe.

Uruchom Firefox i w pasku adresu wpisz about:config, następnie w pasku Filtr wpisz: network.http. Powinieneś otrzymać okienko podobne jak poniższe. Przeglądarka Firefox jest instalowana w domyślnej konfiguracji. Konfiguracja domyślna działa na znakomitej większości komputerów i na rozmaitych systemach operacyjnych. Nie zawsze jednak konfiguracja domyślna

Bardziej szczegółowo

Łączenie liczb i tekstu.

Łączenie liczb i tekstu. Łączenie liczb i tekstu. 1 (Pobrane z slow7.pl) Rozpoczynamy od sposobu pierwszego. Mamy arkusz przedstawiony na rysunku poniżej w którym zostały zawarte wypłaty pracowników z wykonanym podsumowaniem.

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

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

Raport Hurtownie Danych

Raport Hurtownie Danych Raport Hurtownie Danych Algorytm Apriori na indeksie bitmapowym oraz OpenCL Mikołaj Dobski, Mateusz Jarus, Piotr Jessa, Jarosław Szymczak Cel projektu: Implementacja algorytmu Apriori oraz jego optymalizacja.

Bardziej szczegółowo

Programowanie strukturalne i obiektowe. Funkcje

Programowanie strukturalne i obiektowe. Funkcje Funkcje Często w programach spotykamy się z sytuacją, kiedy chcemy wykonać określoną czynność kilka razy np. dodać dwie liczby w trzech miejscach w programie. Oczywiście moglibyśmy to zrobić pisząc trzy

Bardziej szczegółowo

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

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

Bardziej szczegółowo

7. Pętle for. Przykłady

7. Pętle for. Przykłady . Pętle for Przykłady.1. Bez użycia pętli while ani rekurencji, napisz program, który wypisze na ekran kolejne liczby naturalne od 0 do pewnego danego n. 5 int n; 6 cin >> n; 8 for (int i = 0; i

Bardziej szczegółowo

Kiedy potrzebne. Struktura (rekord) Struktura w języku C# Tablice struktur. struktura, kolekcja

Kiedy potrzebne. Struktura (rekord) Struktura w języku C# Tablice struktur. struktura, kolekcja 1 struktura, kolekcja Kiedy potrzebne Duża liczba danych takiego samego typu tablice a jak nieznana liczba elementów? dane zawierające wartości różnego typu (osoba: pesel, nazwisko, rok urodzenia, pracuje/niepracuje,

Bardziej szczegółowo

Testy jednostkowe Wybrane problemy testowania metod rekurencyjnych

Testy jednostkowe Wybrane problemy testowania metod rekurencyjnych Testy jednostkowe Wybrane problemy testowania metod rekurencyjnych Artykuł przeznaczony jest dla osób związanych z testowaniem, programowaniem, jakością oraz wytwarzaniem oprogramowania, wymaga jednak

Bardziej szczegółowo

Algorytmy i. Wykład 3: Stosy, kolejki i listy. Dr inż. Paweł Kasprowski. FIFO First In First Out (kolejka) LIFO Last In First Out (stos)

Algorytmy i. Wykład 3: Stosy, kolejki i listy. Dr inż. Paweł Kasprowski. FIFO First In First Out (kolejka) LIFO Last In First Out (stos) Algorytmy i struktury danych Wykład 3: Stosy, kolejki i listy Dr inż. Paweł Kasprowski pawel@kasprowski.pl Kolejki FIFO First In First Out (kolejka) LIFO Last In First Out (stos) Stos (stack) Dostęp jedynie

Bardziej szczegółowo