Biblioteka PCJ w wybranych zastosowaniach matematycznych - FFT i grafy Kroneckera
|
|
- Adrian Urban
- 8 lat temu
- Przeglądów:
Transkrypt
1 Biblioteka PCJ w wybranych zastosowaniach matematycznych - FFT i grafy Kroneckera Toruńska Studencka Konferencja Matematyki Stosowanej M. Ryczkowska, Ł. Górski, M. Nowicki, P. Bała Uniwersytet Mikołaja Kopernika w Toruniu, Uniwersytet Warszawski gdama@mat.umk.pl, lgorski@mat.umk.pl, faramir@mat.umk.pl, bala@icm.edu.pl 4-6 kwietnia 2014 Streszczenie U podstaw bardziej zaawansowanych problemów obliczeniowych - takich jak wyrafinowana analiza danych obrazowych czy rekonstrukcja modelu sieci społecznościowych - leżą bardziej fundamentalne zagadnienia. Związane są chociażby z wydajnym obliczaniem dyskretnej transformaty Fouriera oraz zwartej reprezentacji grafów. Opracowywane przez nas rozwiązania wykorzystujące bibliotekę PCJ bardzo dobrze realizują te zadania. W niniejszej pracy przedstawiamy najważniejsze własności i założenia biblioteki PCJ, a także zaprezentujemy wyniki testów wydajnościowych dla FFT oraz obliczania zwartej reprezentacji grafu - CSR. 1 Wstęp Zaobserwować można obecnie rewolucyjną zmianę w metodyce tworzenia oprogramowania wywołaną przez pojawienie się sprzętu komputerowego intensywnie korzystającego z wielowątkowego modelu przetwarzania. Z tego też względu tradycyjne rozwiązania, jak OpenMP czy MPI są niewystarczające i konieczne jest opracowanie nowych paradygmatów i narzędzi software owych umożliwiających wykorzystanie możliwości przetwarzania wielowątkowego i rozproszonego. Wielokrotnie zauważono więc, że cały czas brakuje odpowiednio wysokopoziomowych abstrackji i konstrukcji, które ułatwiłyby programowanie[1]. Tego rodzaju braki dotyczą zarówno systemów równoległych, jak i przede wszystkim rozproszonych. Języki PGAS (Partitioned Global Address Space) mogłyby znakomicie zmitygować wskazane braki, zapewniając zarówno wygodne tworzenie aplikacji tak w środowisku równoległym, jak i rozproszonym, oferując za każdym razem uniwersalne abstrakcje programistyczne. Języki należące do tej kategorii zakładają bowiem, że pamięć zostanie podzielona pomiędzy wszystkie wątki wykonania. Domyślnie wszystkie zmienne w określonym obszarze pamięci są prywatne dla danego wątku. Programista może je jednak oznaczyć jako dzielone, a tym samym udostępnić innym wątkom do odczytu albo modyfikacji. Niektóre z nowoopracowanych języków, które implementują ten zyskujący na popularności paradygmat to X10 [2] i Chapel [3]. Elementy modelu PGAS zostały wprowadzone w nowej wersji standardu Fortranu, jako coarrays [4]. Dodatkowo, prowadzone są prace na językiem CoArray Fortran 2.0, w celu dalszego ulepszenia jego możliwości w ramach modelu SPMD [5]. Dialekt C implementujący model PGAS nosi nazwę UPC [6].
2 Celem niniejszego opracowania jest zademonstrowanie użyteczności rozszerzenia PGAS dla języka Java, które jest obecnie opracowywane przez autorów niniejszego opracowania: biblioteki PCJ [27]. Java jest językiem przenośnym, zapewniającym warstwę abstrakcji nad sprzętem komputerowym i posiadającym dużą grupę użytkowników. Wybraliśmy Javę ze względu na jej przenośność i rozległą grupę użytkowników. Programy napisane w Javie mają potencjalnie dłuższy cykl życia w porównaniu do sprzętu, na którym są wykonywane, a ich wydajność może być zwiększona po prostu poprzez przeniesienie na bardziej zaawansowany system komputerowy [7]. Język jest łatwy w użyciu dzięki odśmiecaniu, statycznej typizacji czy brakowi wskaźników. Podobnie, jak w wypadku innych języków, również dla Javy zaprojektowano rozwiązania wzmacniające jej równoległość. Wskazać należy na projekty takie, jak Parallel Java [8] i projekt Java Grande [9] [10] (które jednak nie zyskały szerszej popularności), Titanium [11] czy ProActive [12] (niestety ten ostatni miewa problemy z wydajnością ze względu na nieefektywne mechanizmy serializacji). Należy także wspomnieć równoległe strumienie wprowadzone w nowej wersji Javy [13]. Nasze rozwiązanie biblioteka PGAS dla Javy - charakteryzuje się dużą przenośnością, pozostaje więc w duchu Javy. W odróżnieniu od innych rozwiązań nie modyfikuje składni języka ani nie implementauje własnej wersji maszyny wirtualnej, nie opiera się też na specjalnych preprocesorach. Biblioteka PCJ jest oparta na czystej Javie 7 i nie wymaga żadnych zewnętrznych bibliotek do działania. Pozwala to też na łatwą migrację do następnych wersji języka. Zapewnienie przenośności naszego rozwiązania nie zostało okupione koncesjami co do wydajności[14] [15]. W następnej części opracowania opisujemy bibliotekę PCJ i podajemy przykłady jej wykorzystania. Zainteresowany dalszymi szczegółami użytkownik powinien sięgnąć do podręcznika użytkownika [16]. Końcowe rozdziały prezentują informacje o przykładowych zastosowaniach biblioteki: do obliczania FFT i postaci CSR (Compressed Sparse Row) grafu. 2 Biblioteka PCJ W bibliotece PCJ wątki reprezentowane są przez klasy implementujące interfejs StartPoint (listing 1). Metoda main() odpowiada metodzie run() standardowej klasy Thread. public interface StartPoint { public void main(); Listing 1. Interfejs StartPoint Domyślnie, zgodnie z założeniami modelu PGAS, wszystkie pola są lokalne dla wątku. Ich uwspólnienie następuje poprzez użycie Klasa, które korzysta ze zmiennych współdzielonych musi też dziedziczyć z abstrakcyjnej klasy Storage (por. listing 2; przykładowe kod używa też metod myid() oraz numthreads() w celu pobrania liczby identyfikującej wątek oraz liczby wszystkich wątków). class Example extends Storage implements StartPoint { private double private int[] table; public void main () { System.out.println("Thread #" + PCJ.myNode() + " of" + PCJ.numNodes() + " threads."); Listing 2. Aplikacja wyświetlająca liczę wątków PCJ
3 Rozpoczęcie obliczeń jest bardzo proste i sprowadza się do wywołania metody deploy(), której można przekazać identyfikatory maszyn, na których mają zostać uruchomione obliczenia. Mechanizm ten pozwala na uruchomienie programu w różnych scenariuszach użycia, jak wiele wątków w pojedynczej maszynie wirtualnej albo wiele maszyn wirtualnych na pojedynczym węźle fizycznym. Przykładowo, w listingu 3. uruchomiono trzy wątki lokalne oraz dodatkowy - zdalny (w domenie example.com). Dwa wątki lokalne korzystające z tego samego domyślnego numeru portu dla komunikacji zostaną uruchomione na tej samej maszynie wirtualnej; w wypadku pozostałych dwóch uruchomione zostaną dodatkowe. PCJ.deploy( Example.class, // StartPoint Example.class, // Storage new String[] { // Lista maszyn "localhost", "localhost", "example.com", " :3003" ); Listing 3. Przykład wykorzystania metody deploy() Podstawowe operacje - odczyt i modyfikacje zmiennej dzielonej - zaimplementowano jako operacje get() i put(). Ich argumenty to: identyfikator wątku docelowego, etykieta zmiennej dzielonej (domyślnie określona przez jej nazwę), a w wypadku operacji put() - nowa wartość zmiennej. Składnia przedstawiona jest w listingu 4. Tamże taskid oznacza identyfikator zdalnego wątku (którego zmienna dzielona jest odczytywana bądź modyfikowana), variablename to nazwa zmiennej w klasie Storage, variabledata to przesyłane dane. Parametr indexes... jest opcjonalny i stosowany wyłącznie do tablic: wskazuje indeksy elementów, które mają być przesłane. PCJ.put(int taskid, String variablename, Object variabledata, int indexes...) PCJ.get(int taskid, String variablename, int indexes...) Listing 4. Składnia metod get() i put() W przykładowym listingu 5. wartość całkowita 42 zapisywana jest do zmiennej table w wątku o nr 4. W następnej linii cała tablica pobrana jest z wątku nr 6 (komunikacja synchroniczna). W dalszej części listingu 6. wykorzystana jest komunikacja asynchroniczna. PCJ.put(4, "table", 42, 10); int[] t = PCJ.get(6, "table"); FutureObject resp; resp = PCJ.getFutureObject(7, "table"); // nieblokujące /*... */ if (resp.isdone()) { int[] t = resp.get(); // blokujące Listing 5. Podstawy komunikacji Metoda barrier() stanowi implementację operacji synchronizacji wątków. Możliwe jest synchronizowanie tylko podzbioru wszystkich wątków. Jest to przydatne przy takich operacjach, jak wykonanie synchronicznego put/get (por. listing 6). if (PCJ.myId() == 3) { PCJ.putLocal("value", 42); PCJ.barrier(2); else if (PCJ.myId() == 2) {
4 PCJ.barrier(3); int answer = PCJ.get(3, "value"); Listing 6. Przykład wykorzystania bariery i synchronicznych operacji put/get Listing 7 przedstawia przykład wykorzystania operacji rozgłoszenia. W celu rozpoczęcia rozgłoszenia wątek wywołujący wykorzystuje metodę broadcast() i przesyła identyfikator rozgłaszanej zmiennej dzielonej, a także jej nową wartość. Wątek-odbiorca może poczekać na odebranie nowej wartości wykorzystując metodę waitfor(), która blokuje wątek aż monitorowana zmienna zostanie zmodyfikowana przez inny wątek. Monitorowanie zmiennych wprowadzone zostało ze względu na fakt, że biblioteka PCJ oparta jest na komunikacji jednostronnej. W wypadku listingu 7 należy także zauważyć, że również wątek nr 4 (inicjujący rozgłoszenie) korzysta z metody waitfor(). Komunikacja jest asynchroniczna, toteż bezpośrednio po wywołaniu metody broadcast() wątek 4 kontynuuje wykonanie. Wykorzystanie w tym wypadku metody waitfor() jest konieczne w celu upewnienia się, że zakończono zapis lokalnych danych. Co więcej, rozgłoszenie wykorzystuje topologię drzewa ukorzenionego w wątku o nr. 0, toteż zapis do zmiennej należącej do wątku nr 4 jest w istocie inicjowany przez jego int a; /*... */ if (PCJ.myNode() == 4) { PCJ.broadcast("a", 42); PCJ.waitFor("a"); //wait for a message from thread #4 Listing 7. Rozgłoszenie wartość 42 przez wątek nr 4. Każdy wątek przechowuje rozgłoszoną wartość w zmiennej a Przedstawione do tej pory operacje mogą być wykonywane globalnie dla wszystkich wątków, ale możliwe jest też ograniczenie ich jedynie do grupy wątków. Tworzenie grup jest proste i przedstawione w listingu 8., gdzie utworzono dwie grupy w oparciu o parzystość identyfikatora odpowiednich wątków. Group g = PCJ.join("group:" + (PCJ.myNode() % 2)); Listing 8. Tworzenie grupy wątków 3 Przykładowa implementacja - szybka transformata Fouriera Zaimplementowana jednowymiarowa zespolona szybka transformata Fouriera wykonuje nakładające się na siebie obliczenia i komunikację, nadaje się więc szczególnie do testowania wydajności systemu komputerowego w warunkach zbliżonych do rzeczywistych scenariuszy użycia. Została też wykorzystana przez autorów zestawu testów HPC Benchmark jako element pakietu umożliwiającego ocenę szybkości przyszłych petaskalowych systemów komputerowych [17]. Z tych też względów wykorzystaliśmy kod obliczający FFT do przedstawienia wydajności naszego rozwiązania, przyjmując test HPC Challenge za punkt odniesienia. Zainteresowani byliśmy przede wszystkim skalowalnością biblioteki, toteż odstąpiliśmy od przyjętej w ramach testu HPC Challenge metodologii polegającej na wykorzystaniu rozmiarów danych wypełniających prawie całą dostępną pamięć. Testy zostały zmodyfikowane tak, aby działały na danych tego samego rozmiaru, niezależnie od liczby węzłów obliczeniowych i dostępnej pamięci. Dodatkowo sprawdziliśmy też wydajność znanej i powszechnie wykorzystywanej biblioteki FFTW [18], skompilowanej ze wsparciem dla MPI. Testy przeprowadzono na klastrze 64 węzłów obliczeniowych opartych o procesory Intel Xeon X5660 (dwunastordzeniowe) z połączeniem Infiniband, taktowane zegarem 2,8 GHz. Każdy węzeł posiada 24 GB
5 pamięci RAM. Jako implementację MPI wykorzystano OpenMPI (kompatybilne z gcc 4.4.7). Biblioteka PCJ została uruchomiona z wykorzystaniem maszyny wirtualnej Oracle v _40 oraz IBM v _SR6. Praca została wykonana z wykorzystaniem infrastruktury PL-Grid [19]. Implementacja w wypadku HPC Challenge oparta jest o algorytmy opublikowane przez Takahashiego i Kanadę [20]. W wypadku biblioteki PCJ zdecydowano się zaadaptować wcześniejszą implementację wykorzystującą Coarray Fortran 2.0 opartą o radix-2, wykorzystującą do komunikacji wzorzec mechanizm all-to-all (tj. w trakcie komunikacji każdy wątek wysyła komunikat do wszystkich pozostałych) [21]. W naszej implementacji przetestowano dwa rozwiązania all-to-all. Oba opierają się na tym samym schemacie: każdy wątek przechowuje tablicę dzieloną blocks. Jej i-ta komórka jest wypełniania przez wątek, do którego ta przynależy danymi komunikowanymi dla i-tego wątku. Po zainicjowaniu tablicy blocks każdy wątek zaczyna odbierać odpowiednie dane od pozostałych. W tym miejscu obie implementacje się różnią. Przetestowaliśmy, po pierwsze, implementację wykorzystaną przez Manninena i Richardsona dla Fortranu [22]. Ta wykorzystuje prostą pętlę iterującą od myid() + 1 do numthreads() - 1, a następnie od 0 do myid() - 1. W trakcie każdej iteracji wykorzystywana jest komunikacja blokująca i odpowiednia wartość jest odbierana od odpowiedniego wątku (listing 9). Przetestowana została też implementacje nieblokująca (listing 10). block_size = local_n / PCJ.numThreads(); for (int image = (PCJ.myId() + 1) % PCJ.threadCount(), num = 0; num!= PCJ.threadCount() - 1; image = (image + 1) % PCJ. threadcount()) { double[] recv = (double[]) PCJ.get(image, "blocks", PCJ.myId()); System.arraycopy(recv, 0, dest, (int) (image * 2 * blocksize), (int) (2 * blocksize)); num++; Listing 9. Blokujące all-to-all //prepare the futures array FutureObject<double[]>[] futures =new FutureObject[PCJ.threadCount()]; //get the data (asynchronous) for (int i = 0; i < PCJ.threadCount(); i++) { if (i!= PCJ.myId()) { futures[i] = PCJ.getFutureObject(i, "blocks", PCJ.myId()); int numreceived = 0; while (numreceived!= PCJ.threadCount() - 1) { for (int i = 0; i < futures.length; i ++) { if (futures[i]!= null && futures[i].isdone()) { double[] recv = futures[i].getobject(); System.arraycopy(recv, 0, dest, 20 (int) (i * 2 * blocksize), (int) (2 * blocksize)); numreceived++; futures[i] = null; Listing 10. Nieblokujące all-to-all Wykres 1 przedstawia wyniki przyspieszenia dla danych złożonych z 2 25 liczb zespolonych. Dla testów wykorzystano hybrydową implementację z biblioteki FFTW (tzn. wykorzystującą MPI dla obliczeń rozproszonych i OpenMP dla zrównoleglenia na pojedynczym węźle). Biblioteka PCJ wypadała poprawnie, osiągając przyspieszenie porównywalne z FFTW (należy jednak zauważyć, że referencyjny czas działania na pojedynczym wątku jednak się różnił i wynosił ok. 3,3 s dla FFTW i ok. 10 s. dla PCJ). W wypadku
6 mniejszej liczby wątków (tj. obliczeń wykonywanych na pojedynczym węźle) znakomicie wypadło rozwiązanie z HPC Benchmark. Należy więc rozważyć w przyszłości implementację zastosowanego w nim algorytmu i ponowne wykonanie testów. Wykres 1. FFT - przyspieszenie 4 Przykładowa implementacja postać CSR dla grafu Kroneckera Grafy są jednym z najbardziej powszechnych modeli używanych do analizy. Są wykorzystywane do reprezentacji relacji i dlatego są obecne w wielu dziedzinach nauki między innymi w biologii (badanie łańcuchów pokarmowych w różnych ekosystemach, badanie interakcji między białkami HCV - ludzkim wirusem typu C zapalenia wątroby - oraz białkami człowieka), w analizie sieci dróg (oprogramowanie oparte na algorytmach analizujących grafy znalazło zastosowanie w przenośnych urządzeniach PDA wyposażonych w GPS ) oraz w analizie sieci społecznościowych takich jak Facebook czy Twitter. Podstawowe problemy grafowe znajdują zastosowania w wielu dziedzinach życia, dlatego analiza grafów i otrzymywanie szybkich rozwiązań stają się coraz ważniejsze. Wielkość i złożoność grafów stanowi jednak wyzwanie do ich efektywnego przetwarzania. Coraz bardziej na znaczeniu zyskują projekty które pomagają badać moc obliczeniową klastrów w kontekście algorytmów grafowych. Jednym z takich projektów jest projekt Graph500 przedstawiony na międzynarodowej konferencji ISC2010 [26]. Graph500 dostarcza testów do oceny superkomputerów na całym świecie [26]. Testy te wymuszają dużą ilość komunikacji i synchronizacji co pozwala na analizę bardziej realistycznych obciążeń obliczeniowych [24]. W benchmarku Graph500 można wyróżnić trzy główne części [25]: generator Grafu Kroneckera: tworzenie losowego Grafu Kroneckera w postaci listy krawędzi (każda krawędź jest nieskierowana)
7 kernel 1: utworzenie reprezentacji grafu z listy krawędzi otrzymanej z generatora Grafu Kroneckera kernel 2: BFS dla 64 losowo wybranych wierzchołków Grafy Kroneckera otrzymane z generatora benchmarku Graph500 dobrze symulują grafy społecznościowe [23], ponieważ posiadają wiele cech zgodnych z cechami sieci ze świata rzeczywistego np. występowanie podsieci, złożonych z grup dobrych znajomych, w których wszyscy się znają. Grafy Kroneckera tworzone są według rekurencyjnej konstrukcji opartej o produkt Kroneckara na macierzach sąsiedztwa. Sprawdziliśmy wydajność biblioteki PCJ w kontekście obliczeń grafowych. Zaimplementowaliśmy tworzenie reprezentacji grafu w postaci CSR z listy krawędzi otrzymanej z generatora Grafu Kroneckara benchmarku Graph500. Testy przeprowadziliśmy na losowym Grafie Kroneckara rozmiaru SCALE 21 (logarytm o podstawie dwa z liczby wierzchołków grafu). Wykres 2 przedstawia czas obliczeń (wraz z czasem zbierania danych) potrzebny do utworzenia reprezentacji CSR z listy krawędzi. Skalowalność PCJ dla wątków od 1 do 4 jest obiecująca. Przy ośmiu wątkach czas wykonania rośnie. Należałoby, więc powtórzyć badania dla większego grafu, a także porównać wydajność biblioteki PCJ z implementacjami w OpenMP oraz MPI. Wykres 2. CSR - czas obliczeń i zbierania danych dla Grafu Kroneckera SCALE Uwagi końcowe i dalsze prace Wykonane testy wskazują, że nasze rozwiązanie jest obiecujące pod względem wydajności, pod niektórymi względami dorównując uznanym i długo rozwijanym rozwiązaniom (por. FFTW). Więcej informacji o wydajności dostępnych będzie też w pracy [28]. Oprócz wskazanych w toku testów planów na przyszłość, aktualnie prowadzone są też prace związane z implementacją pozostałych testów HPC Benchmark i kerneli obliczeniowych Graph 500.
8 Bibliografia [1] T. Rauber, G. Rünger, Parallel Programming: for Multicore and Cluster Systems, Berlin Londyn 2010 [2] X10 - strona główna, [Online]. Available: [Data uzyskania dostępu: ]. [3] Chapel - strona główna, [Online]. Available: [Data uzyskania dostępu: ]. [4] J. Reid, Coarrays in the next Fortran Standard, [Online]. Available: ftp://ftp.nag.co.uk/sc22wg5/n1801-n1850. [Data uzyskania dostępu: ]. [5] Coarray Fortran strona główna, Rice university, [Online]. Available: [Data uzyskania dostępu: ]. [6] UPC - strona główna, [Online]. Available: [Data uzyskania dostępu: ]. [7] J. M. Bull, I. A. Smith, I. Pottage i R. Freeman, Benchmarking Java against C and Fortran for scientific apllications, w Proceedings of the 2001 joint ACM-ISOPE conference on Java Grande, [8] A. Kaminsky, Parallel Java: A unified api for shared memory and cluster parallel programming in 100% java, w Parallel and Distributed Processing Symposium, Long Beach, [9] J. M. Bull, L. A. Smith, M. D. Westhead, D. S. Henty i R. A. Davey, A Benchmark Suite for High Performance Java, Concurrency: Practice and Experience, tom 12, pp , [10] Java Grande - strona główna, [Online]. Available: [Data uzyskania dostępu: ]. [11] P. Hilfinger, D. Bonachea, K. Datta, D. Gay, S. Graham, B. Liblit, G. Pike, J. Su i K. Yelick, Titanium Language Reference Manual, [Online]. Available: pdf. [Data uzyskania dostępu: ]. [12] D. Caromel, C. Delbe, A. D. Costanzo i M. Leyton, Proactive: an integrated platform for programming and running applications on grids and p2p systems, Computational Methods in Science and Technology, tom 12, [13] [Online]. Available: [Data uzyskania dostępu: ]. [14] M. Nowicki i P. Bała, New Approach for Parallel Computation in Java, Lecture Notes in Computer Science, tom 7782, pp , [15] M. Nowicki i P. Bała, Parallel computations in Java with PCJ library, w High Performance Computing and Simulation (HPCS), Madryt, [16] M. Nowicki i P. Bała, PCJ manual, [Online]. Available: [Data uzyskania dostępu: ].
9 [17] HPC Challenge - strona główna, [Online]. Available: [Data uzyskania dostępu: ]. [18] FFTW - strona główna, [Online]. Available: [Data uzyskania dostępu: ]. [19] PL-Grid - strona główna, [Online]. Available: [Data uzyskania dostępu: ]. [20] D. Takahashi i Y. Kanada, High-performance radix-2, 3 and 5 parallel 1-d complex FFT algorithm for distributed-memory parallel computers, The Journal of Supercomputing, tom 15, nr 2, pp , [21] J. Mellor-Crummey, L. Adhianto, G. Jin, M. Krentel, K. Murthy, W. Scherer i C. Yang, Class II Submission to the HPC Challenge Award Competition. Coarray Fortran 2.0, [Online]. Available: [Data uzyskania dostępu: ]. [22] P. Manninem i H. Richardson, First experiences on collective operations with Fortran coarrays on the Cray XC30, w 7th International Conference on Pgas Programming Models, Edinburgh, [23] J. Leskovec, D. Chakrabarti, J. Kleinberg, Ch. Faloutsos, Z. Ghahramani Kronecker Graphs: An Approach to Modeling Networks, The Journal of Machine Learning Research archive, Volume 11, 3/1/2010, Pages [24] A.Yoo and I.Kaplan, Evaluating Use of Data Flow Systems for Large Graph Analysis, Proceedings of the 2nd Workshop on Many-Task Computing on Grids and Supercomputers, Article No. 5, ACM New York, USA, 2009 [25] The Graph500 Specification, [Online] [26] The Graph500 List, [Online] [27] PCJ - strona główna, [Online] [28] M.Nowicki,Ł.Górski, P. Grabarczyk, P. Bała. PCJ Java library for high performance computing in PGAS model. HPCS 2014 (w druku) [29] M.Ryczkowska. Evaluating PCJ Library for Graph Problems Graph500 in PCJ (w druku)
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ółowoAlgorytmy 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ółowoRECENZJA ROZPRAWY DOKTORSKIEJ DLA INSTYTUTU PODSTAW INFORMATYKI POLSKIEJ AKADEMII NAUK
dr hab. inż. Paweł Czarnul Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechnika Gdańska Gdańsk, 17 lipca 2017 RECENZJA ROZPRAWY DOKTORSKIEJ DLA INSTYTUTU
Bardziej szczegółowoNowoczesne technologie przetwarzania informacji
Projekt Nowe metody nauczania w matematyce Nr POKL.09.04.00-14-133/11 Nowoczesne technologie przetwarzania informacji Mgr Maciej Cytowski (ICM UW) Lekcja 2: Podstawowe mechanizmy programowania równoległego
Bardziej szczegółowoObliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz
Obliczenia równoległe i rozproszone Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz 15 czerwca 2001 Spis treści Przedmowa............................................
Bardziej szczegółowoOpracowanie w modelu PGAS wybranych, równoległych algorytmów grafowych
Opracowanie w modelu PGAS wybranych, równoległych algorytmów grafowych i ich implementacja przy użyciu języka Java Wydział Matematyki i Informatyki Uniwersytet Mikołaja Kopernika Chopina 12/18, 87-100
Bardziej szczegółowoProgramowanie 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ółowoTworzenie 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ółowoTworzenie 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ółowoPrzetwarzanie Równoległe i Rozproszone
POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI I TECHNOLOGII INFORMACYJNYCH Przetwarzanie Równoległe i Rozproszone www.pk.edu.pl/~zk/prir_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl
Bardziej szczegółowoWspół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ółowoRECENZJA ROZPRAWY DOKTORSKIEJ
Częstochowa, dn. 5.08.2018 Prof. dr hab. inż. Roman Wyrzykowski Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska ul. Dąbrowskiego 69 42-201 Częstochowa RECENZJA ROZPRAWY DOKTORSKIEJ
Bardziej szczegółowoPoró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ółowoTworzenie 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ółowoCzym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa
1 Java Wprowadzenie 2 Czym jest Java? Język programowania prosty zorientowany obiektowo rozproszony interpretowany wydajny Platforma bezpieczny wielowątkowy przenaszalny dynamiczny Rozumiana jako środowisko
Bardziej szczegółowoAutor: 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ółowoProgramowanie w modelu równoległości danych oraz dzielonej globalnej pamięci wspólnej. Krzysztof Banaś Obliczenia równoległe 1
Programowanie w modelu równoległości danych oraz dzielonej globalnej pamięci wspólnej Krzysztof Banaś Obliczenia równoległe 1 Model równoległości danych Model SPMD (pierwotnie dla maszyn SIMD) Zrównoleglenie
Bardziej szczegółowoProcesy 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ółowoProgramowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.
Bardziej szczegółowoHPC na biurku. Wojciech De bski
na biurku Wojciech De bski 22.01.2015 - co to jest? High Performance Computing most generally refers to the practice of aggregating computing power in a way that delivers much higher performance than one
Bardziej szczegółowoZadanie 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ółowoProgramowanie procesorów graficznych GPGPU
Programowanie procesorów graficznych GPGPU 1 GPGPU Historia: lata 80 te popularyzacja systemów i programów z graficznym interfejsem specjalistyczne układy do przetwarzania grafiki 2D lata 90 te standaryzacja
Bardziej szczegółowoDariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Język programowania prosty bezpieczny zorientowany obiektowo wielowątkowy rozproszony przenaszalny interpretowany dynamiczny wydajny Platforma
Bardziej szczegółowo61 Topologie wirtualne
61 Topologie wirtualne pozwalają opisać dystrybucję procesów w przestrzeni z uwzględnieniem struktury komunikowania się procesów aplikacji między sobą, umożliwiają łatwą odpowiedź na pytanie: kto jest
Bardziej szczegółowoJava - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński
Java - wprowadzenie Programowanie Obiektowe Mateusz Cicheński O języku Czym jest Java Cechy charakterystyczne języka Przykładowe zastosowania Składnia języka Podstawowe typy Wybrane słowa kluczowe Plan
Bardziej szczegółowoTworzenie aplikacji w języku Java
Tworzenie aplikacji w języku Java Wykład 1 Piotr Czapiewski Wydział Informatyki ZUT 2 października 2009 Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009
Bardziej szczegółowoSzablony 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ółowoOpracowanie nowych metod programowania równoległego w Javie w oparciu o paradygmat PGAS (Partitioned Global Address Space)
Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki mgr Marek Nowicki Opracowanie nowych metod programowania równoległego w Javie w oparciu o paradygmat PGAS (Partitioned Global Address
Bardziej szczegółowoUML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.
UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do
Bardziej szczegółowoWą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ółowoTworzenie 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ółowoTechnologie i usługi internetowe cz. 2
Technologie i usługi internetowe cz. 2 Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 15 luty 2014 r. 1 Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania,
Bardziej szczegółowoBiblioteka PCJ do naukowych obliczeń równoległych
Biblioteka PCJ do naukowych obliczeń równoległych Zakład Obliczeń Równoległych i Rozproszonych Wydział Matematyki i Informatyki Uniwersytet Mikołaja Kopernika Chopina 12/18, 87-100 Toruń faramir@mat.umk.pl
Bardziej szczegółowoXQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery
http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod
Bardziej szczegółowoWsparcie dla OpenMP w kompilatorze GNU GCC Krzysztof Lamorski Katedra Informatyki, PWSZ Chełm
Wsparcie dla OpenMP w kompilatorze GNU GCC Krzysztof Lamorski Katedra Informatyki, PWSZ Chełm Streszczenie Tematem pracy jest standard OpenMP pozwalający na programowanie współbieŝne w systemach komputerowych
Bardziej szczegółowoObliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003
Obliczenia równoległe i rozproszone w JAVIE Michał Kozłowski 30 listopada 2003 Wątki w JAVIE Reprezentacja wątków jako obiektów Uruchamianie i zatrzymywanie wątków Realizacja wątków Ograniczenia Mechanizmy
Bardziej szczegółowoPRZEWODNIK PO PRZEDMIOCIE
Nazwa przedmiotu: PROGRAMOWANIE WSPÓŁBIEŻNE I ROZPROSZONE I KARTA PRZEDMIOTU CEL PRZEDMIOTU PRZEWODNIK PO PRZEDMIOCIE C1. Uzyskanie przez studentów wiedzy na temat architektur systemów równoległych i rozproszonych,
Bardziej szczegółowoCUDA 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ółowoIMPLEMENTACJA I PORÓWNANIE WYDAJNOŚCI WYBRANYCH ALGORYTMÓW GRAFOWYCH W WARUNKACH OBLICZEŃ RÓWNOLEGŁYCH
IMPLEMENTACJA I PORÓWNANIE WYDAJNOŚCI WYBRANYCH ALGORYTMÓW GRAFOWYCH W WARUNKACH OBLICZEŃ RÓWNOLEGŁYCH Michał Podstawski Praca dyplomowa napisana pod kierunkiem Prof. WSTI dr hab. inż. Jarosława Śmiei
Bardziej szczegółowoProgramowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie
Bardziej szczegółowoAplikacje 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ółowoJava. 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ółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć
Bardziej szczegółowoUSŁUGI HIGH PERFORMANCE COMPUTING (HPC) DLA FIRM. Juliusz Pukacki,PCSS
USŁUGI HIGH PERFORMANCE COMPUTING (HPC) DLA FIRM Juliusz Pukacki,PCSS Co to jest HPC (High Preformance Computing)? Agregowanie dużych zasobów obliczeniowych w sposób umożliwiający wykonywanie obliczeń
Bardziej szczegółowoMoc płynąca z kart graficznych
Moc płynąca z kart graficznych Cuda za darmo! Czyli programowanie generalnego przeznaczenia na kartach graficznych (GPGPU) 22 października 2013 Paweł Napieracz /20 Poruszane aspekty Przetwarzanie równoległe
Bardziej szczegółowo1 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ółowoObiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1
Obiektowe programowanie rozproszone Java RMI Krzysztof Banaś Systemy rozproszone 1 Java RMI Mechanizm zdalnego wywołania metod Javy (RMI Remote Method Invocation) posiada kilka charakterystycznych cech,
Bardziej szczegółowoLaboratorium 03: Podstawowe konstrukcje w języku Java [2h]
1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie
Bardziej szczegółowo5. Model komunikujących się procesów, komunikaty
Jędrzej Ułasiewicz str. 1 5. Model komunikujących się procesów, komunikaty Obecnie stosuje się następujące modele przetwarzania: Model procesów i komunikatów Model procesów komunikujących się poprzez pamięć
Bardziej szczegółowoDostęp do europejskich systemów obliczeniowych Tier-0 w ramach PRACE
Dostęp do europejskich systemów obliczeniowych Tier-0 w ramach PRACE KONFERENCJA UŻYTKOWNIKÓW KDM 2016 W kierunku obliczeń Exaskalowych Mirosław Kupczyk, PCSS 28.06.2016 Misja PRACE HPC Dla Przemysłu Zagwarantowanie
Bardziej szczegółowoCzęstochowa, dn
Częstochowa, dn. 19.10.2017 Prof. dr hab. inż. Roman Wyrzykowski Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska ul. Dąbrowskiego 69 42-201 Częstochowa RECENZJA ROZPRAWY DOKTORSKIEJ
Bardziej szczegółowoPodstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Bardziej szczegółowoPodstawy Programowania Obiektowego
Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja
Bardziej szczegółowoLiteratura. 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Ćwiczenie nr: 9 Obliczenia rozproszone MPI
Ćwiczenie nr: 9 Temat: Obliczenia rozproszone MPI 1. Informacje ogólne MPI (Message Passing Interface) nazwa standardu biblioteki przesyłania komunikatów dla potrzeb programowania równoległego w sieciach
Bardziej szczegółowoProgramowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.
Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to
Bardziej szczegółowoMetody 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ółowoProgramowanie obiektowe zastosowanie języka Java SE
Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z
Bardziej szczegółowoJAVA W SUPER EXPRESOWEJ PIGUŁCE
JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie
Bardziej szczegółowoWykład 7: Pakiety i Interfejsy
Wykład 7: Pakiety i Interfejsy Plik Źródłowy w Javie Składa się z: instrukcji pakietu (pojedyncza, opcjonalna) instrukcji importujących (wielokrotne, opcjonalne) deklaracji klasy publicznej (pojedyncza,
Bardziej szczegółowoProgramowanie 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ółowoDokumentacja do API Javy.
Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu
Bardziej szczegółowoWSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy
WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy Pojęcie klasy Program napisany w języku Java składa się ze zbioru klas. Każda klasa zawiera
Bardziej szczegółowoAplikacje w środowisku Java
Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Klasa zbiór pól i metod Obiekt
Bardziej szczegółowoProgramowanie w modelu równoległości danych oraz dzielonej globalnej pamięci wspólnej. Krzysztof Banaś Obliczenia równoległe 1
Programowanie w modelu równoległości danych oraz dzielonej globalnej pamięci wspólnej Krzysztof Banaś Obliczenia równoległe 1 Model równoległości danych Model SPMD (pierwotnie dla maszyn SIMD) Zrównoleglenie
Bardziej szczegółowoProgramowanie Komponentowe WebAPI
Programowanie Komponentowe WebAPI dr inż. Ireneusz Szcześniak jesień 2016 roku WebAPI - interfejs webowy WebAPI to interfejs aplikacji (usługi, komponentu, serwisu) dostępnej najczęściej przez Internet,
Bardziej szczegółowoPODSTAWOWE ZASADY PROGRAMOWANIA OBIEKTOWEGO NA BAZIE PAKIETU ROOT
PODSTAWOWE ZASADY PROGRAMOWANIA OBIEKTOWEGO NA BAZIE PAKIETU ROOT Grzegorz Stefanek Jan Kochanowski University 1 Programowanie proceduralne 2 Programowanie proceduralne Programowanie proceduralne, choć
Bardziej szczegółowo10/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ółowoProf. dr hab. inż. Zbigniew J. Czech Gliwice 25 lipiec 2018 r. Politechnika Śląska Instytut Informatyki
Prof. dr hab. inż. Zbigniew J. Czech Gliwice 25 lipiec 2018 r. Politechnika Śląska Instytut Informatyki e-mail: zczech@polsl.pl RECENZJA ROZPRAWY DOKTORSKIEJ DLA RADY NAUKOWEJ INSTYTUTU PODSTAW INFORMATYKI
Bardziej szczegółowoMarcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych
Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych mluckner@mini.pw.edu.pl http://www.mini.pw.edu.pl/~lucknerm Programy w Javie składają się z pakietów Pakiety zawierają definicje
Bardziej szczegółowoTEMAT : KLASY DZIEDZICZENIE
TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą
Bardziej szczegółowoĆwiczenie nr: 9 Obliczenia rozproszone MPI
Ćwiczenie nr: 9 Temat: Obliczenia rozproszone MPI 1. Informacje ogólne MPI (Message Passing Interface) nazwa standardu biblioteki przesyłania komunikatów dla potrzeb programowania równoległego w sieciach
Bardziej szczegółowo2 WRZEŚNIA S t r o n a WROCŁAW
2 WRZEŚNIA 2016 1 S t r o n a WROCŁAW Materiały konferencyjne Innowacyjne Projekty Badawcze Wrocław 2 września 2016 2 S t r o n a Skład i łamanie tekstu mgr inż. Anna Okniańska Projekt okładki inż. Magdalena
Bardziej szczegółowoProgramowanie obiektowe - 1.
Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która
Bardziej szczegółowomsgbox("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ółowoZaawansowane programowanie w języku C++
Kod szkolenia: Tytuł szkolenia: C/ADV Zaawansowane programowanie w języku C++ Dni: 3 Opis: Uczestnicy szkolenia zapoznają się z metodami wytwarzania oprogramowania z użyciem zaawansowanych mechanizmów
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych
Bardziej szczegółowoProgramowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 03 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas abstrakcyjnych i interfejsów. Wprowadzenie
Bardziej szczegółowoZagadnienia egzaminacyjne INFORMATYKA. Stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ
(INT) Inżynieria internetowa 1. Tryby komunikacji między procesami w standardzie Message Passing Interface 2. HTML DOM i XHTML cel i charakterystyka 3. Asynchroniczna komunikacja serwerem HTTP w technologii
Bardziej szczegółowoRaport 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ółowoTryby komunikacji między procesami w standardzie Message Passing Interface. Piotr Stasiak Krzysztof Materla
Tryby komunikacji między procesami w standardzie Message Passing Interface Piotr Stasiak 171011 Krzysztof Materla 171065 Wstęp MPI to standard przesyłania wiadomości (komunikatów) pomiędzy procesami programów
Bardziej szczegółowoPRZETWARZANIE 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ółowoPrzykł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ółowoInterfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej
Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,
Bardziej szczegółowoProgramowanie obiektowe
Laboratorium z przedmiotu - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia. Wprowadzenie teoretyczne.
Bardziej szczegółowoO superkomputerach. Marek Grabowski
O superkomputerach Marek Grabowski Superkomputery dziś Klastry obliczeniowe Szafy (od zawsze) Bo komputery są duże Półki i blade'y (od pewnego czasu) Większe upakowanie mocy obliczeniowej na m^2 Łatwiejsze
Bardziej szczegółowoProgramowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1
Programowanie procesorów graficznych GPGPU Krzysztof Banaś Obliczenia równoległe 1 OpenCL projektowanie kerneli Przypomnienie: kernel program realizowany przez urządzenie OpenCL wątek (work item) rdzeń
Bardziej szczegółowoProjektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012
Projektowanie algorytmów równoległych Zbigniew Koza Wrocław 2012 Spis reści Zadniowo-kanałowy (task-channel) model algorytmów równoległych Projektowanie algorytmów równoległych metodą PACM Task-channel
Bardziej szczegółowoUwaga! Upadek! Opis zadania konkursowego
Uwaga! Upadek! Opis zadania konkursowego Zadanie Opracowanie algorytmu automatycznie rozpoznającego upadek osoby na nagraniu wideo i wdrożenie stworzonego rozwiązania jako usługi na superkomputerowej platformie
Bardziej szczegółowoAplikacje w środowisku Java
Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - dziedziczenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 W ramach poprzedniego laboratorium
Bardziej szczegółowoJęzyk JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,
Bardziej szczegółowoSpis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII
Spis treści Od autora..................................................... Obliczenia inżynierskie i naukowe.................................. X XII Ostrzeżenia...................................................XVII
Bardziej szczegółowoPodstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Tablice wielowymiarowe C umożliwia definiowanie tablic wielowymiarowych najczęściej stosowane
Bardziej szczegółowoKlient-Serwer Komunikacja przy pomocy gniazd
II Klient-Serwer Komunikacja przy pomocy gniazd Gniazda pozwalają na efektywną wymianę danych pomiędzy procesami w systemie rozproszonym. Proces klienta Proces serwera gniazdko gniazdko protokół transportu
Bardziej szczegółowoJę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ółowoModelowanie i Programowanie Obiektowe
Modelowanie i Programowanie Obiektowe Wykład I: Wstęp 20 październik 2012 Programowanie obiektowe Metodyka wytwarzania oprogramowania Metodyka Metodyka ustandaryzowane dla wybranego obszaru podejście do
Bardziej szczegółowoWIELOWĄ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ółowoPoziom kwalifikacji: I stopnia. Liczba godzin/tydzień: 2W E, 2L PRZEWODNIK PO PRZEDMIOCIE
Nazwa przedmiotu: PROGRAMOWANIE ROZPROSZONE I RÓWNOLEGŁE Distributed and parallel programming Kierunek: Forma studiów: Informatyka Stacjonarne Rodzaj przedmiotu: moduł specjalności obowiązkowy: Sieci komputerowe
Bardziej szczegółowoSUPERKOMPUTER OKEANOS BADAWCZE GRANTY OBLICZENIOWEWE
SUPERKOMPUTER OKEANOS BADAWCZE GRANTY OBLICZENIOWEWE SUPERKOMPUTER OKEANOS Z początkiem lipca 2016 roku ICM UW udostępni naukowcom superkomputer Okeanos system wielkoskalowego przetwarzania Cray XC40.
Bardziej szczegółowo