XIII International PhD Workshop OWD 2011, October 2011 REALIZACJA OBLICZEŃ W ARCHITEKTURZE MASOWO RÓWNOLEGŁEJ W HETEROGENICZNYCH SYSTEMACH

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

Download "XIII International PhD Workshop OWD 2011, October 2011 REALIZACJA OBLICZEŃ W ARCHITEKTURZE MASOWO RÓWNOLEGŁEJ W HETEROGENICZNYCH SYSTEMACH"

Transkrypt

1 XIII International PhD Workshop OWD 2011, October 2011 REALIZACJA OBLICZEŃ W ARCHITEKTURZE MASOWO RÓWNOLEGŁEJ W HETEROGENICZNYCH SYSTEMACH CALCULATIONS IN THE MASSIVELY PARALLEL ARCHITECTURE IN HETEROGENEOUS SYSTEMS Tomasz Przybyła, Opole University of Technology Abstract This paper presents the possibility of the OpenCL standard and massively parallel architecture. OpenCL is a cross-vendor standard that holds tremendous potential to exploit the massiveparallelism of modern processors, embedded devices and graphics processors (GPUs). Implementation of parallel computing in OpenCL starts from defining the problem in the N- dimensional space. In the case of the linear array of data, the problem can be represented in onedimensional space, whereas the images will use the two-dimensional space and the spatial representations of data, such as 3D objects, with use the three-dimensional space. Each independent component in the index space is called a work-item. Each work-item performs the same program kernel, but for different data. OpenCL allows the grouping of work-items in the work-groups. All work-items belonging to the work-group are executed in a single device, giving it the ability to share local memory, and synchronization. To examine the potential of optimization methods on the execution time of the algorithm, a program is written for multiplication of two square matrices. The calculation was carried out on the NVidia GeForce GT540M. Details of the systems are shown in Tab 1. The measurements clearly indicate that workgroup size has a significant impact on the execution time of the algorithm (Fig. 3). To effectively use the GPGPU performance computing systems the size of the work-group should be adapted to the specifications of your task. Performance results show that OpenCL has good potential to be used to implement high performance computing so long as architectural specifics are taken into account in the algorithm design. 30 Streszczenie W artykule przedstawiono sposób realizacji obliczeń w architekturze masowo równoległej układów grafiki. Krótko omówiono dostępne technologie pozwalające programować układy GPU tak, aby mogły realizować obliczenia ogólnego przeznaczenia. Spośród dostępnych technologii wybrano OpenCL i dokonano jego charakterystyki. Wskazano na istotne aspekty związane z programowaniem układów GPU przy wykorzystaniu języka OpenCL. Obliczenia przeprowadzono na karcie NVIDIA GeForce GT540M. Uzyskane wyniki pozwoliły dokonać weryfikacji możliwości układów GPU o architekturze masowo równoległej. 1. Wstęp Dynamiczny rozwój układów GPU (ang. Graphics Processing Unit), który rozpoczął się kilka lat temu, stał się odpowiedzią na ogromne i stale rosnące zapotrzebowanie na moc obliczeniową. Układy niegdyś odpowiedzialne jedynie za generowanie obrazu, stały się w pełni programowalnymi, wielordzeniowymi jednostkami o architekturze masowo równoległej, których wydajność obliczeniowa w znacznym stopniu przewyższa wydajność obecnie produkowanych procesorów CPU (ang. Central Processing Unit) i może być wykorzystana do realizacji obliczeń ogólnego przeznaczenia [1,2]. Układy GPU zdolne do tego typu obliczeń określane są mianem GPGPU (ang. General-Purpose Computing on Graphics Processing Units) [2]. Ogromny potencjał układów o architekturze masowo równoległej wymaga odpowiedniego interfejsu programistycznego, pozwalającego w prosty i szybki sposób przeprowadzić obliczenia. Pierwszą z firm, która umożliwiła wykorzystanie układów GPU do obliczeń ogólnego przeznaczenia,

2 była NVIDIA, udostępniając platformę CUDA (ang. Compute Unified Device Architecture)[2]. Dzięki dobrej kampanii reklamowej, produkt NVIDII jest obecnie najczęściej wykorzystywanym narzędziem do programowania GPGPU. Konkurencyjnymi rozwiązaniami, co do idei nie odbiegającymi od technologii CUDA, są: AMD Stream, Microsoft DirectCompute oraz OpenCL [2]. Wszystkie z nich, poza ostatnim, posiadają pewne ograniczenia, wynikające z przywiązania do platformy sprzętowej (Stream, CUDA) lub programowej (DirectCompute), co w znaczący sposób ogranicza heterogeniczność systemów w jakich dana technologia może zostać wykorzystana. Tego ograniczenia pozbawiony jest OpenCL, który powstał właśnie z myślą, aby zunifikować przetwarzanie równoległe w heterogenicznych systemach [1, 4, 5]. 2. Charakterystyka OpenCL OpenCL jest otwartym standardem programowania równoległego dla heterogenicznych systemów [1]. Jego rozwojem zajmuje się konsorcjum Khronos, zrzeszające już ponad sto firm. Wśród nich znaleźli się najwięksi producenci kart graficznych i procesorów m.in. AMD, Intel, NVIDIA [2]. Każda z tych firm oferuje dostęp do API standardu. OpenCL umożliwia wykorzystanie wszystkich dostępnych urządzeń obliczeniowych w danym systemie. Obliczenia mogą być realizowane na wielordzeniowych procesorach CPU, układach GPU (które dodatkowo mogą występować w konfiguracji SLI lub CrossFire) lub na innych jednostkach specjalnych nazywanych akceleratorami np. procesorach sygnałowych DSP (ang. Digital Signal Processing), CELL lub układach FPGA (ang. Field Programmable Gate Array) [4, 5, 7]. OpenCL jako standard zorientowany na wysoką wydajność obliczeniową (HPC ang. Highperformance computing) daje możliwość kontroli nad każdym, istotnym aspektem, związanym ze sposobem realizacji obliczeń [1]. Obsługuje zarówno zrównoleglanie funkcjonalne (zrównoleglanie zadań) jak i zrównoleglanie danych [1, 2, 3]. Obecnie architektura masowo równoległa, produkowanych układów GPU, pozwala uzyskać najwyższą wydajność przy wykorzystaniu metody zrównoleglania danych. Język programowania OpenCL bazuje na specyfikacji C99 [1, 4]. Dodano obsługę typów wektorowych, operacji wektorowych oraz funkcji atomowych na liczbach stało i zmiennoprzecinkowych. Zagwarantowano precyzję numeryczną dla operacji zmiennoprzecinkowych w celu zapewnienia spójności danych. 2.1 Model platformy Model platformy OpenCL przedstawiono na rys. 1. Model składa się z hosta dowolnego komputera z zainstalowanym systemem operacyjnym połączonego z jednym lub wieloma urządzeniami OpenCL [1]. Urządzenie obliczeniowe zawiera jedną lub wiele jednostek obliczeniowych. Każda z jednostek posiada jeden lub więcej elementów przetwarzających [4]. Host Urządzenie obliczeniowe obliczeniowa Rys.1. Model platformy OpenCL Fig.1. OpenCL platform model Element przetwarzający obliczeniowa realizuje jeden program na dużym zbiorze danych, przy czym każdy element przetwarzający w danej jednostce wykonuje obliczenia dla różnych danych należących do zbioru. Przykładem takiego modelu przetwarzania danych może być realizacja algorytmu, w którym każdy piksel obrazu wejściowego poddany jest tej samej operacji. W takim przypadku, każdy z punktów obrazu traktowany jest jako odrębny element, dlatego otrzymane rezultaty są od siebie niezależne i nie wpływają na dalsza pracę algorytmu przetwarzania. 2.2 Model realizacji Program napisany w OpenCL składa się z dwóch elementów: kodu kernela oraz kodu hosta [4]. Kernel jest funkcją realizującą obliczenia na jednym lub wielu zarządzeniach OpenCL, natomiast program hosta, pisany w C lub C++, wykonywany jest w systemie hosta i odpowiedzialny jest za tworzenie kontekstu obliczeniowego, kolejki poleceń oraz za wymianę danych między hostem a urządzeniem obliczeniowym. Każda instancja kernela wykonywana w jednostce obliczeniowej nosi nazwę jednostki roboczej (ang. work-item). Wszystkie jednostki robocze należą do N-wymiarowej przestrzeni, definiowanej przez specyfikę danego problemu [1]. Przetwarzając liniowy układ danych, można wykorzystać jednowymiarową przestrzeń zawierającą instancje kernela. W przypadku obrazów, najlepiej zdefiniować dwuwymiarową przestrzeń, natomiast dla przestrzennej reprezentacji danych, należy wykorzystać przestrzeń trójwymiarową. Liczba 31

3 jednostek roboczych w przestrzeni określana jest przez parametr global_work_size. Przestrzeń globalna może być podzielona na lokalne obszary zwane grupami roboczymi (ang. work-groups). Każda jednostka należąca do danej grupy roboczej może korzystać ze współdzielonej pamięci globalnej oraz lokalnej [1, 2 4]. Podziału można dokonać w sposób bezpośredni lub pośredni. Wybór metody bezpośredniej pozwala programiście określić liczbę jednostek roboczych wchodzących w skład grupy, natomiast metoda pośrednia pozostawia grupowanie jednostek roboczych w gestii OpenCL. Odpowiednie ustawienie parametru local_work_size, wskazuje na wybraną metodę. Każda z grup pracuje w obrębie jednej jednostki obliczeniowej. Nie dopuszczalny jest podział jednej grupy roboczej na dwie jednostki obliczeniowe. Synchronizacja pomiędzy jednostkami roboczymi możliwa jest tylko i wyłącznie w ramach jednej grupy roboczej. Maksymalny, obsługiwany rozmiar grupy ograniczony jest przez urządzenie realizujące obliczenia. Obecnie najnowsze, produkowane procesory oraz karty graficzne zdolne są do obsługi grup roboczych zawierających 1024 jednostki robocze. Każda jednostka obliczeniowa w urządzeniu OpenCL (CPU, GPU) zawiera procesy jednostek roboczych (instancje kernela) wykonywane równolegle. Układ GPU dysponujący 32 jednostkami obliczeniowymi, może jednocześnie realizować 32 instancje kernela. W praktyce, dzięki multipleksacji, procesory graficzne umożliwiają jednoczesne przetworzenie znacznie większej liczby instancji kernela, niż wynikałoby to z ich architektury. Jedynym wymogiem, stawianym przez OpenCL jest to, aby każda grupa wykonywana była na fizycznie jednej jednostce obliczeniowej, co daje możliwość synchronizacji pomiędzy jednostkami roboczymi. 2.3 Model pamięci OpenCL definiuje cztery obszar pamięci: prywatny, lokalny, globalny i stały [1, 4]. dedykowana jest jednostkom roboczym, przy czym każda jednostka ma własną pamięć prywatną i jej zawartość nie jest dostępna dla innych jednostek roboczych. Jednostki robocze należące do tej samej grupy roboczej mogą korzystać z pamięci lokalnej [1]. globalna dostępna jest dla hosta oraz wszystkich jednostek roboczych. Pewnym obszarem pamięci globalnej jest pamięć stała, tylko do odczytu. Ten obszar pamięci, alokowana przez hosta, nie zmienia się w czasie realizacji kernela [4]. Na rys. 2 przedstawiono model pamięci standardu OpenCL. globalna Urządzenie OpenCL ~5GB/s Host obliczeniowa ~150GB/s lokalna hosta Rys.2. Model pamięci OpenCL Fig.2. OpenCL memory model lokalna W przypadku, gdy jednostka chce uzyskać dostęp do pamięci, staje się nieaktywna do momentu zakończenia procedury obsługi pamięci. W tym samym czasie pozostałe jednostki robocze, należące do jednostki obliczeniowej, są aktywne, zapewniając ciągłość realizacji zadania, co znacznie przyspiesza obliczenia. Komunikacja miedzy hostem a urządzeniem obliczeniowym (GPU) odbywa się za pośrednictwem magistrali PCIe (ang. Peripheral Component Interconnect Express). Obecnie większość produkowanych kart graficznych wykorzystuje PCIe 2.0 x16, co pozwala na przesyłanie danych z prędkością 8 GB/s w każdą stronę. Trzecia generacja PCIe pozwala na transfer danych z dwukrotnie większą prędkością, a więc 16 GB/s, co tylko w niewielkim stopniu przyspiesza operację kopiowaniem danych z/do hosta. 3. Obliczenia w architekturze masowo równoległej W większości aplikacji OpenCL obowiązuje ten sam schemat realizacji; określenie platformy, wybór urządzenia bądź urządzeń do utworzenia kontekstu, alokacja pamięci, utworzenie kolejki poleceń, transfer danych oraz realizacja obliczeń. Z racji tego, że w systemie mogą być zainstalowane różne implementacje standardu OpenCL, należy wybrać platformę docelową, na której realizowane będą obliczenia [6, 7]. Można tego dokonać, wskazując numer danej platformy z listy dostępnych platform, zwracanej przez funkcję clgetplatformid. Mimo, że OpenCL został stworzony w celu unifikacji obliczeń równoległych w heterogenicznych systemach, to jednak poszczególne implementacje, udostępnione przez AMD, Intel oraz NVIDIA, ograniczają się jedynie do obsługi oferowanych przez nie urządzeń [9]. Wybór konkretnej platformy ściśle determinuje producenta 32 ~1000GB/s

4 oraz liczbę obsługiwanych urządzeń obliczeniowych. Jedynie specyfikacja OpenCL, udostępniona przez Apple na systemach MacOS pozwala realizować procedury obliczeniowe na układzie GPU (AMD lub NVIDIA) oraz na procesorach firmy Intel. Efektywne wykorzystanie architektury masowo równoległej wymaga od programistów innego podejścia w projektowaniu aplikacji, niż ma to miejsce w programowaniu sekwencyjnym. Wykorzystując standard OpenCL do obliczeń równoległych, niezwykle ważnym aspektem jest uwzględnienie właściwości charakterystycznych architektury urządzenia obliczeniowego. Pozwoli to dostosować procedurę obliczeniową tak, aby optymalnie wykorzystać potencjał układu. W przypadku architektury masowo równoległej równie istotna jest odpowiednia dekompozycja problemu, rozbicie na podproblemy o grubej ziarnistości wykonywane niezależnie od siebie. 3.1 Prawo Amdahla Klasyfikując efektywność układów wykorzystujących przetwarzanie równoległe zdefiniowano współczynnik przyspieszenia. Do wyznaczenia przyspieszenia algorytmu równoległego, niezbędna jest wiedza na temat udziału części sekwencyjnej w danym algorytmie. Algorytm sekwencyjny poddany zrównolegleniu, będzie składał się z części podlegającej zrównolegleniu oraz z części niepodzielnej, determinującej współczynnik przyspieszenia. Wartość przyspieszenia S wyrażona jest jako stosunek wykonania zadania najlepszym algorytmem sekwencyjnym na pojedynczym procesorze do czasu realizacji tego samego zadania na N procesorach [3] i opisana jest wzorem (1). T(1) S ( n) = (1) T( n) Łatwo zauważyć, że wraz ze wzrostem liczby procesorów n, wartość przyspieszenia będzie dążyła do pożądanej wartości n. Przyspieszenie, w którym S(n) n, nazywamy idealnym. Przyjmując parametr k, wyrażający udział części sekwencyjnej, przyspieszenie można wyrazić wzorem (2). 1 S( n) = 1 k (2) k + n Zależność (2) opisuje prawo Amdahla, mówiące o tym, że przyspieszenie jest funkcja liczby procesorów oraz udziału części nie podlegającej zrównolegleniu [3]. Warto zauważyć, że prawo Amdahla w zasadniczy stopniu opiera się na istnieniu fragmentów sekwencyjnych w algorytmie, pomijając aspekty związane z wymiana danych, komunikacją czy równoważeniem obciążenia jednostek obliczeniowych. Czas wykonania części sekwencyjnej w większości przypadków jest stały i wynosi kt(1), natomiast czas realizacji części podlegającej zrównolegleniu w głównej mierze uzależniony jest od rozmiar zadania. Czas niezbędny do uzyskania wyników obliczeń niejednokrotnie determinuje sens obliczeń komputerowych. To stwierdzenie znajduje odzwierciedlenie m.in. w symulacjach procesów z czasoprzestrzenną dynamiką, w których jedynym rozsądnym rozwiązaniem jest wykorzystanie architektury masowo równoległej. 3.2 Realizacja obliczeń Współcześnie produkowane karty graficzne o architekturze masowo równoległej pozwalają przeprowadzać obliczenia ogólnego przeznaczenia. W celu weryfikacji możliwości tej architektury, napisano program, którego zadaniem jest wykonanie prostej operacji mnożenia macierzy. Algorytm powstał z wykorzystaniem standardu OpenCL. Procedurę obliczeniową modyfikowano, implementując w niej wybrane techniki optymalizacji, dostępne w OpenCL. Realizację obliczeń na procesorze CPU przeprowadzono wykorzystując platformy Intel OpenCL 1.1, a na układzie GPGPU - OpenCL 1.0 CUDA W tab. 1 zamieszczono szczegółowe dane dotyczące urządzeń obliczeniowych. Szczegółowe dane urządzeń obliczeniowych Nazwa urządzenia Nazwa platformy Liczba jednostek obliczeniowych Liczba elementów przetwarzających Częstotliwość procesora Details of computing devices Host Intel Core i7-2630qm Intel(R) OpenCL 1.1 Tab.1. GPGPU NVIDIA GT 540M OpenCL 1.0 CUDA MHz 1600 MHz Operację mnożenia macierzy zrealizowano na układzie GPU oraz CPU, dla różnych rozmiarów macierzy. W tab. 2 zawarto wyniki uzyskanych czasów realizacji algorytmu (w ms). Tab.2. Czas realizacji algorytmu na procesorze CPU i układzie GPU Execution time of the algorithm on the CPU and GPU Rozmiar CPU GPU Przyspieszenie macierzy 512x512 52,6 21,6 2, x ,8 182,2 3, x , ,1 4,72 33

5 Mimo, że wykorzystano do obliczeń układ GPU o stosunkowo niewielkiej wydajności, to jednak można zaobserwować przyspieszenie w realizacji algorytmu. Wraz ze wzrostem liczby danych do przetworzenia, przewaga GPU nad CPU staje się wyraźniejsza. Zaimplementowany algorytm mnożenia macierzy opisano na dwuwymiarowej przestrzeni indeksów w taki sposób, że każda jednostka odpowiedzialna była za obliczenie jednego elementu macierzy wyjściowej C. Dodatkowo jednostki umieszczano w grupach o różnych rozmiarach. Wszystkie dane umieszczono w pamięci globalnej. Na rys 3. przedstawiono czas realizacji algorytmu dla różnych rozmiarów grup roboczych , Auto 2x2 4x4 8x8 16x16 32x32 Rozmiar grupy Czas realizacji [ms] Rys.3. Czas realizacji algorytmu mnożenia macierzy (1024x1024) dla różnych rozmiarach grup roboczych Fig.3. Execution time of the matrix multiplication algorithm (1024x1024) for different sizes of workgroups Uzyskane wyniki obrazują jak istotne jest właściwe grupowanie jednostek roboczych. Mimo, że OpenCL może sam zarządzać grupowaniem jednostek (Auto), to jednak lepsze rezultaty otrzymano dla grup tworzonych samodzielnie. Optymalne rozmiary grup uzależnione są od specyfiki realizowanych obliczeń, dlatego właściwy ich dobór powinien wynikać z przeprowadzonych testów. Grupując jednostki należy pamiętać, aby każdy wymiar N globalnej przestrzeni indeksów był podzielny przez rozmiar lokalnej przestrzeni (grupy roboczej) i nie przekraczał maksymalnej, obsługiwanej przez urządzenie obliczeniowe wartości. Ponieważ procedura obliczeniowa (kernel) nie ma bezpośredniego dostępu do pamięci hosta, dane niezbędne do realizacji obliczeń muszą zostać przesłane do bufora w pamięci urządzenia [8, 9]. Po wykonaniu obliczeń, uzyskane dane należy przesłać do pamięci hosta, który nie ma bezpośredniego dostępu do pamięci urządzenia. Wykonanie tych operacji znacznie wydłuża czas realizacji zadania przez układ GPU, dlatego należy możliwie jak najdłużej przechowywać dane w pamięci urządzenia i wykonywać na nich wszystkie niezbędne operacje. Algorytm zmieniono tak, aby każda jednostka wykonywała obliczenia dla całego wiersza macierzy C. Sposób podziału macierzy na bloki pośrednie zamieszczono na rys Rys.4. Podziała macierzy na bloki Fig.4. The division of the matrix into blocks Wyniki uzyskanych pomiarów przedstawiono na rys. 5. Czas realizacji [ms] Rozmiar grupy pośredniej 5602 Rys.5. Czas realizacji algorytmu dla różnych rozmiarów grup pośrednich Fig.5. Execution time of the algorithm for different sizes of mediate groups Z racji tego, że urządzenie wykorzystane do realizacji obliczeń wyposażone było tylko w dwie niezależne jednostki obliczeniowe, ustawienie rozmiaru grupy na 1024 spowodowało, że druga jednostka była niewykorzystana. Rezultatem tego, jest ponad dwukrotnie dłuższy czas obliczeń. Wprowadzając kolejną zmianę w procedurze obliczeniowe, wykorzystano fakt, że przy wyznaczaniu kolejnych elementów macierzy wyjściowej C, używany jest ten sam wiersz macierzy A. Zatem do przechowywania danego wiersza macierzy A użyto pamięci prywatnej, a ponieważ każda jednostka w grupie korzysta z tej samej kolumny macierzy B, to umieszczono ją w pamięci lokalnej, która jest o rząd wielkości szybsza od pamięci globalnej. Powinno to zaowocować znacznym przyspieszeniem realizacji zadania. Zestawienie czasów wykonania procedury obliczeniowej dla wszystkich przedstawionych metod zamieszczono na rys

6 Czas realizacji [ms] , Jak wykazały przeprowadzone badania, tylko umiejętne wykorzystanie języka OpenCL oraz dobra znajomość architektury urządzeń obliczeniowych może dać wymierne korzyści. Dynamiczny rozwój układów GPU oraz standardów takich jak OpenCL, pozwala stwierdzić, że realizacja obliczeń inżynieryjnych skłania się w stronę obliczeń wykonywanych w architekturze masowo równoległej. Wersja procedury obliczeniowej Rys.6. Czas realizacji algorytmu Fig.6. Execution time of the algorithm Zastosowanie wszystkich, omówionych technik optymalizacji, pozwoliło skrócić czas realizacji algorytmu do zaledwie 182 ms. 4. Podsumowanie Standard OpenCL definiując abstrakcyjny model heterogenicznej platform obliczeniowej, udostępnił ciekawą alternatywę wobec istniejących, konkurencyjnych rozwiązań pozwalających programować układy GPU o architekturze masowo równoległej. W obliczeniach nastawionych na wysoka wydajność, zasadniczą rolę odgrywa optymalizacja kodu. W przypadku OpenCL, który pozwala na realizację obliczeń w heterogenicznych systemach, optymalizacja przewidziana dla konkretnej architektury, tylko w jej obrębie przyniesie najwięcej korzyści. Wykorzystując układu GPU do obliczeń ogólnego przeznaczenia, należy do minimum ograniczyć wymianę danych pomiędzy hostem a urządzeniem obliczeniowym. Spowodowane jest to tym, że hosta nie ma bezpośredniego dostępu do pamięci urządzenia i odwrotnie, wiec cała wymiana danych odbywa się przez stosunkowo wolną magistralę PCIe. Konsekwencją tego, w przypadku obliczeń o małej złożoności na niewielkiej liczbie danych, może być sytuacja, w której operacja przesyłania danych z /do hosta będzie wykonywana dłużej niż realizacja procedury obliczeniowej. Kolejnym elementem, którego wykorzystanie znacząco przyspiesza obliczenia, jest pamięć lokalna. Niestety implementacja jej obsługi wiąże się z koniecznością wprowadzenia znacznych zmian w procedurze obliczeniowej. Przeprowadzone badania wykazały również, że właściwy dobór parametrów global_work_size oraz local_work_size rzutuje bezpośrednio na czas realizacji zadania (rys. 3). O ile pierwszy z parametrów wynika poniekąd z natury danego problemu, o tyle drugi powinien być dobrany optymalnie do specyfiki realizowanego zadania oraz urządzenia obliczeniowego. 35 Literatura 1. AMD: AMD Accelerated Parallel Processing Programming Guide, Advanced Micro Devices, Sierpień Kirk David, Wen-Mei W. Hwu: Programming Massively Parallel Processors. A Hands-on Approach, Elsevier LTD, Oxford, NVIDIA: OpenCL Best Practices Guide Version 3.2, NVIDIA Corporation, Munshi Aaftab: The OpenCL Specification version 1.1, Khronos OpenCL Working Group, Trevett N., Zeller C.: OpenCL on the GPU, GPU Technology Conference, Wang P.: OpenCL optimizations, GPU Technology Conference, Shearer J., Wei-Chao Chen D., Wen-Mei W.: Introduction to GPU Computing with CUDA and OpenCL, University of California, Mistry P., Greeg Ch., Rubin N., Kaeli D., Hazelwood K.: Analyzing Program Flow within a Many Kernel OpenCL Application, New York, Grewe D., O'Boyle M..: A Static Task Partitioning Approach for Heterogeneous Systems Using OpenCL, University of Edinburgh, Adres służbowy Autora: Mgr inż. Tomasz Przybyła Politechnika Opolska ul. Sosnkowskiego Opole tom.info.dok@gmail.com

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

i3: internet - infrastruktury - innowacje

i3: internet - infrastruktury - innowacje i3: internet - infrastruktury - innowacje Wykorzystanie procesorów graficznych do akceleracji obliczeń w modelu geofizycznym EULAG Roman Wyrzykowski Krzysztof Rojek Łukasz Szustak [roman, krojek, lszustak]@icis.pcz.pl

Bardziej szczegółowo

Programowanie procesorów graficznych GPGPU

Programowanie 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ółowo

Przetwarzanie Równoległe i Rozproszone

Przetwarzanie 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ółowo

CUDA. cudniejsze przyk ady

CUDA. cudniejsze przyk ady CUDA cudniejsze przyk ady Agenda: CPU vs. GPU Mnożenie macierzy CPU Mnożenie macierzy - GPU Sploty Macierze CPU vs. GPU CPU: GPU: Mnożenie wykonywane w kolejnych iteracjach pętli. Przechodzimy przez pierwszy

Bardziej szczegółowo

Podsystem graficzny. W skład podsystemu graficznego wchodzą: karta graficzna monitor

Podsystem graficzny. W skład podsystemu graficznego wchodzą: karta graficzna monitor Plan wykładu 1. Pojęcie podsystemu graficznego i karty graficznej 2. Typy kart graficznych 3. Budowa karty graficznej: procesor graficzny (GPU), pamięć podręczna RAM, konwerter cyfrowo-analogowy (DAC),

Bardziej szczegółowo

Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1

Programowanie 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ółowo

Tesla. Architektura Fermi

Tesla. Architektura Fermi Tesla Architektura Fermi Tesla Tesla jest to General Purpose GPU (GPGPU), GPU ogólnego przeznaczenia Obliczenia dotychczas wykonywane na CPU przenoszone są na GPU Możliwości jakie daje GPU dla grafiki

Bardziej szczegółowo

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1 Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1 Organizacja przedmiotu Dr inż. Robert Banasiak Dr inż. Paweł Kapusta 1 2 Nasze kompetencje R n D Tomografia 3D To nie tylko statyczny obraz!

Bardziej szczegółowo

Skalowalność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Skalowalność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1 Skalowalność obliczeń równoległych Krzysztof Banaś Obliczenia Wysokiej Wydajności 1 Skalowalność Przy rozważaniu wydajności przetwarzania (obliczeń, komunikacji itp.) często pojawia się pojęcie skalowalności

Bardziej szczegółowo

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

Moc płynąca z kart graficznych

Moc 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ółowo

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

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK 1 PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK POLITECHNIKA CZĘSTOCHOWSKA 2 Część teoretyczna Informacje i wstępne wymagania Cel przedmiotu i zakres materiału Zasady wydajnego

Bardziej szczegółowo

Nowoczesne technologie przetwarzania informacji

Nowoczesne 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ółowo

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1 Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1 Wprowadzenie Procesory graficzne GPU (Graphics Processing Units) stosowane są w kartach graficznych do przetwarzania grafiki komputerowej

Bardziej szczegółowo

Algorytmy i Struktury Danych

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

Bardziej szczegółowo

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

Wykorzystanie architektury Intel MIC w obliczeniach typu stencil

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

Bardziej szczegółowo

Analiza ilościowa w przetwarzaniu równoległym

Analiza ilościowa w przetwarzaniu równoległym Komputery i Systemy Równoległe Jędrzej Ułasiewicz 1 Analiza ilościowa w przetwarzaniu równoległym 10. Analiza ilościowa w przetwarzaniu równoległym...2 10.1 Kryteria efektywności przetwarzania równoległego...2

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Architektura komputerów

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

Bardziej szczegółowo

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

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

Metody optymalizacji soft-procesorów NIOS

Metody optymalizacji soft-procesorów NIOS POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych Instytut Telekomunikacji Zakład Podstaw Telekomunikacji Kamil Krawczyk Metody optymalizacji soft-procesorów NIOS Warszawa, 27.01.2011

Bardziej szczegółowo

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

Analiza efektywności przetwarzania współbieżnego. Wykład: Przetwarzanie Równoległe Politechnika Poznańska Rafał Walkowiak Grudzień 2015

Analiza efektywności przetwarzania współbieżnego. Wykład: Przetwarzanie Równoległe Politechnika Poznańska Rafał Walkowiak Grudzień 2015 Analiza efektywności przetwarzania współbieżnego Wykład: Przetwarzanie Równoległe Politechnika Poznańska Rafał Walkowiak Grudzień 2015 Źródła kosztów przetwarzania współbieżnego interakcje między procesami

Bardziej szczegółowo

WIDMOWA I FALKOWA ANALIZA PRĄDU SILNIKA LSPMSM Z WYKORZYSTANIEM OPENCL

WIDMOWA I FALKOWA ANALIZA PRĄDU SILNIKA LSPMSM Z WYKORZYSTANIEM OPENCL POZNAN UNIVE RSITY OF TE CHNOLOGY ACADE MIC JOURNALS No 85 Electrical Engineering 06 Wojciech PIETROWSKI* Grzegorz D. WIŚNIEWSKI Konrad GÓRNY WIDMOWA I FALKOWA ANALIZA PRĄDU SILNIKA LSPMSM Z WYKORZYSTANIEM

Bardziej szczegółowo

Numeryczna algebra liniowa

Numeryczna algebra liniowa Numeryczna algebra liniowa Numeryczna algebra liniowa obejmuje szereg algorytmów dotyczących wektorów i macierzy, takich jak podstawowe operacje na wektorach i macierzach, a także rozwiązywanie układów

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

Analiza efektywności przetwarzania współbieżnego

Analiza efektywności przetwarzania współbieżnego Analiza efektywności przetwarzania współbieżnego Wykład: Przetwarzanie Równoległe Politechnika Poznańska Rafał Walkowiak 1/4/2013 Analiza efektywności 1 Źródła kosztów przetwarzania współbieżnego interakcje

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

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

Obliczenia Wysokiej Wydajności

Obliczenia Wysokiej Wydajności Obliczenia wysokiej wydajności 1 Wydajność obliczeń Wydajność jest (obok poprawności, niezawodności, bezpieczeństwa, ergonomiczności oraz łatwości stosowania i pielęgnacji) jedną z najważniejszych charakterystyk

Bardziej szczegółowo

10/14/2013 Przetwarzanie równoległe - wstęp 1. Zakres przedmiotu

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

Bardziej szczegółowo

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1 Metodologia programowania równoległego Przykłady podziałów zadania na podzadania: Podział ze względu na funkcje (functional

Bardziej szczegółowo

Systemy na Chipie. Robert Czerwiński

Systemy na Chipie. Robert Czerwiński Systemy na Chipie Robert Czerwiński Cel kursu Celem kursu jest zapoznanie słuchaczy ze współczesnymi metodami projektowania cyfrowych układów specjalizowanych, ze szczególnym uwzględnieniem układów logiki

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Wysokowydajna implementacja kodów nadmiarowych typu "erasure codes" z wykorzystaniem architektur wielordzeniowych

Wysokowydajna implementacja kodów nadmiarowych typu erasure codes z wykorzystaniem architektur wielordzeniowych Wysokowydajna implementacja kodów nadmiarowych typu "erasure codes" z wykorzystaniem architektur wielordzeniowych Ł. Kuczyński, M. Woźniak, R. Wyrzykowski Instytut Informatyki Teoretycznej i Stosowanej

Bardziej szczegółowo

Podstawy Informatyki Systemy sterowane przepływem argumentów

Podstawy Informatyki Systemy sterowane przepływem argumentów Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Komputer i jego architektura Taksonomia Flynna 2 Komputer i jego architektura Taksonomia Flynna Komputer Komputer

Bardziej szczegółowo

Architektury komputerów Architektury i wydajność. Tomasz Dziubich

Architektury komputerów Architektury i wydajność. Tomasz Dziubich Architektury komputerów Architektury i wydajność Tomasz Dziubich Przetwarzanie potokowe Przetwarzanie sekwencyjne Przetwarzanie potokowe Architektura superpotokowa W przetwarzaniu potokowym podczas niektórych

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

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

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

Bardziej szczegółowo

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

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

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

Bardziej szczegółowo

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE Nazwa przedmiotu: Jednostki obliczeniowe w zastosowaniach mechatronicznych Kierunek: Mechatronika Rodzaj przedmiotu: dla specjalności Systemy Sterowania Rodzaj zajęć: Wykład, laboratorium Computational

Bardziej szczegółowo

Programowanie aplikacji równoległych i rozproszonych

Programowanie aplikacji równoległych i rozproszonych Programowanie aplikacji równoległych i rozproszonych Dr inż. Krzysztof Rojek krojek@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Strumienie operacji na GPU Domyślne

Bardziej szczegółowo

JCuda Czy Java i CUDA mogą się polubić? Konrad Szałkowski

JCuda Czy Java i CUDA mogą się polubić? Konrad Szałkowski JCuda Czy Java i CUDA mogą się polubić? Konrad Szałkowski Agenda GPU Dlaczego warto używać GPU Budowa GPU CUDA JCuda Przykładowa implementacja Co to jest? GPU GPU Graphical GPU Graphical Processing GPU

Bardziej szczegółowo

Praca dyplomowa magisterska

Praca dyplomowa magisterska Praca dyplomowa magisterska Implementacja algorytmów filtracji adaptacyjnej o strukturze transwersalnej na platformie CUDA Dyplomant: Jakub Kołakowski Opiekun pracy: dr inż. Michał Meller Plan prezentacji

Bardziej szczegółowo

Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012

Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012 Projektowanie algorytmów równoległych Zbigniew Koza Wrocław 2012 Spis reści Zadniowo-kanałowy (task-channel) model algorytmów równoległych Projektowanie algorytmów równoległych metodą PACM Task-channel

Bardziej szczegółowo

CZYM JEST KARTA GRAFICZNA.

CZYM JEST KARTA GRAFICZNA. Karty Graficzne CZYM JEST KARTA GRAFICZNA. Karta graficzna jest kartą rozszerzeń, umiejscawianą na płycie głównej poprzez gniazdo PCI lub AGP, która odpowiada w komputerze za obraz wyświetlany przez monitor.

Bardziej szczegółowo

Wydajność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Wydajność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1 Wydajność obliczeń równoległych Krzysztof Banaś Obliczenia Wysokiej Wydajności 1 Wydajność obliczeń równoległych Podobnie jak w obliczeniach sekwencyjnych, gdzie celem optymalizacji wydajności było maksymalne

Bardziej szczegółowo

Obliczenia Wysokiej Wydajności

Obliczenia Wysokiej Wydajności Obliczenia wysokiej wydajności 1 Wydajność obliczeń Wydajność jest (obok poprawności, niezawodności, bezpieczeństwa, ergonomiczności i łatwości stosowania i pielęgnacji) jedną z najważniejszych charakterystyk

Bardziej szczegółowo

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

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

Bardziej szczegółowo

INŻYNIERIA OPROGRAMOWANIA

INŻYNIERIA OPROGRAMOWANIA INSTYTUT INFORMATYKI STOSOWANEJ 2013 INŻYNIERIA OPROGRAMOWANIA Inżynieria Oprogramowania Proces ukierunkowany na wytworzenie oprogramowania Jak? Kto? Kiedy? Co? W jaki sposób? Metodyka Zespół Narzędzia

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

Redukcja czasu wykonania algorytmu Cannego dzięki zastosowaniu połączenia OpenMP z technologią NVIDIA CUDA

Redukcja czasu wykonania algorytmu Cannego dzięki zastosowaniu połączenia OpenMP z technologią NVIDIA CUDA Dariusz Sychel Wydział Informatyki, Zachodniopomorski Uniwersytet Technologiczny w Szczecinie 71-210 Szczecin, Żołnierska 49 Redukcja czasu wykonania algorytmu Cannego dzięki zastosowaniu połączenia OpenMP

Bardziej szczegółowo

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności. Procesory wielordzeniowe (multiprocessor on a chip) 1 Procesory wielordzeniowe 2 Procesory wielordzeniowe 3 Intel Nehalem 4 5 NVIDIA Tesla 6 ATI FireStream 7 NVIDIA Fermi 8 Sprzętowa wielowątkowość 9 Architektury

Bardziej szczegółowo

Programowanie 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 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ół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

Implementacja sieci neuronowych na karcie graficznej. Waldemar Pawlaszek

Implementacja sieci neuronowych na karcie graficznej. Waldemar Pawlaszek Implementacja sieci neuronowych na karcie graficznej Waldemar Pawlaszek Motywacja Czyli po co to wszystko? Motywacja Procesor graficzny GPU (Graphics Processing Unit) Wydajność Elastyczność i precyzja

Bardziej szczegółowo

Programowanie Współbieżne

Programowanie Współbieżne Programowanie Współbieżne Agnieszka Łupińska 5 października 2016 Hello World! helloworld.cu: #include global void helloworld(){ int thid = (blockidx.x * blockdim.x) + threadidx.x; printf("hello

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Wykład 12 Jan Kazimirski 1 Magistrale systemowe 2 Magistrale Magistrala medium łączące dwa lub więcej urządzeń Sygnał przesyłany magistralą może być odbierany przez wiele urządzeń

Bardziej szczegółowo

Programowanie kart graficznych

Programowanie kart graficznych CUDA Compute Unified Device Architecture Programowanie kart graficznych mgr inż. Kamil Szostek AGH, WGGIOŚ, KGIS Wykorzystano materiały z kursu Programowanie kart graficznych prostsze niż myślisz M. Makowski

Bardziej szczegółowo

Obliczenia równoległe na klastrze opartym na procesorze CELL/B.E.

Obliczenia równoległe na klastrze opartym na procesorze CELL/B.E. Obliczenia równoległe na klastrze opartym na procesorze CELL/B.E. Łukasz Szustak Wydział Inżynierii Mechanicznej i Informatyki Kierunek informatyka, Rok V szustak.lukasz@gmail.com Streszczenie W artykule

Bardziej szczegółowo

Wstęp do obliczeń równoległych na GPU

Wstęp do obliczeń równoległych na GPU Spis treści 1 Wstęp do obliczeń równoległych na GPU 1.1 Zadanie 1.2 Profilowanie 1.2.1 Zadanie Wstęp do obliczeń równoległych na GPU W tej części ćwiczeń stworzymy pierwszy program wykorzystujący bibliotekę

Bardziej szczegółowo

Programowanie kart graficznych

Programowanie kart graficznych Programowanie kart graficznych Sławomir Wernikowski swernikowski@wi.zut.edu.pl Wykład #1: Łagodne wprowadzenie do programowania w technologii NVIDIA CUDA Terminologia: Co to jest GPGPU? General-Purpose

Bardziej szczegółowo

Budowa i użytkowanie klastrów w opaciu o układy Cell BE oraz GPU

Budowa i użytkowanie klastrów w opaciu o układy Cell BE oraz GPU Budowa i użytkowanie klastrów w opaciu o układy Cell BE oraz GPU Daniel Kubiak Wydział Inżynierii Mechanicznej i Informatyki Kierunek informatyka, Rok V sor@czlug.icis.pcz.pl Streszczenie Celem pracy jest

Bardziej szczegółowo

Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1

Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1 Programowanie procesorów graficznych GPGPU Krzysztof Banaś Obliczenia równoległe 1 Projektowanie kerneli Zasady optymalizacji: należy maksymalizować liczbę wątków (w rozsądnych granicach, granice zależą

Bardziej szczegółowo

Przykładem jest komputer z procesorem 4 rdzeniowym dostępny w laboratorium W skład projektu wchodzi:

Przykładem jest komputer z procesorem 4 rdzeniowym dostępny w laboratorium W skład projektu wchodzi: Przetwarzanie równoległe PROJEKT OMP Temat projektu dotyczy analizy efektywności przetwarzania równoległego realizowanego w komputerze równoległym z procesorem wielordzeniowym z pamięcią współdzieloną.

Bardziej szczegółowo

Zastosowanie technologii nvidia CUDA do zrównoleglenia algorytmu genetycznego dla problemu komiwojażera

Zastosowanie technologii nvidia CUDA do zrównoleglenia algorytmu genetycznego dla problemu komiwojażera Zastosowanie technologii nvidia CUDA do zrównoleglenia algorytmu genetycznego dla problemu komiwojażera Adam Hrazdil Wydział Inżynierii Mechanicznej i Informatyki Kierunek informatyka, Rok V hrazdil@op.pl

Bardziej szczegółowo

Zadania badawcze prowadzone przez Zakład Technik Programowania:

Zadania badawcze prowadzone przez Zakład Technik Programowania: Zadania badawcze prowadzone przez Zakład Technik Programowania: - Opracowanie metod zrównoleglania programów sekwencyjnych o rozszerzonym zakresie stosowalności. - Opracowanie algorytmów obliczenia tranzytywnego

Bardziej szczegółowo

ZASTOSOWANIE SZTUCZNYCH SIECI NEURONOWYCH ORAZ ARCHITEKTURY OPENCL W SPEKTRALNEJ I FALKOWEJ ANALIZIE PRĄDU SILNIKA LSPMSM

ZASTOSOWANIE SZTUCZNYCH SIECI NEURONOWYCH ORAZ ARCHITEKTURY OPENCL W SPEKTRALNEJ I FALKOWEJ ANALIZIE PRĄDU SILNIKA LSPMSM POZNAN UNIVE RSITY OF TE CHNOLOGY ACADE MIC JOURNALS No 91 Electrical Engineering 2017 DOI 10.21008/j.1897-0737.2017.91.0028 Wojciech PIETROWSKI* Grzegorz D. WIŚNIEWSKI* Konrad GÓRNY* ZASTOSOWANIE SZTUCZNYCH

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

Komputerowe wspomaganie eksperymentu 5

Komputerowe wspomaganie eksperymentu 5 Komputerowe wspomaganie eksperymentu 5 Dr Piotr Sitarek Katedra Fizyki Doświadczalnej, Politechnika Wrocławska Temat na dziś Macierze, tablice, file i/o, konwersja typów ni.com (część materiałów zaczerpnięta

Bardziej szczegółowo

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD Dr inż. Jacek WARCHULSKI Dr inż. Marcin WARCHULSKI Mgr inż. Witold BUŻANTOWICZ Wojskowa Akademia Techniczna SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD Streszczenie: W referacie przedstawiono możliwości

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

CUDA część 1. platforma GPGPU w obliczeniach naukowych. Maciej Matyka

CUDA część 1. platforma GPGPU w obliczeniach naukowych. Maciej Matyka CUDA część 1 platforma GPGPU w obliczeniach naukowych Maciej Matyka Bariery sprzętowe (procesory) ok na. 1 10 00 la raz t y Gdzie jesteśmy? a ok. 2 razy n 10 lat (ZK) Rozwój 1985-2004 i dalej? O roku ów

Bardziej szczegółowo

USŁUGI HIGH PERFORMANCE COMPUTING (HPC) DLA FIRM. Juliusz Pukacki,PCSS

USŁ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ółowo

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1 i sieci komputerowe Szymon Wilk Superkomputery 1 1. Superkomputery to komputery o bardzo dużej mocy obliczeniowej. Przeznaczone są do symulacji zjawisk fizycznych prowadzonych głównie w instytucjach badawczych:

Bardziej szczegółowo

Automatyzacja procesu tworzenia sprzętowego narzędzia służącego do rozwiązywania zagadnienia logarytmu dyskretnego na krzywych eliptycznych

Automatyzacja procesu tworzenia sprzętowego narzędzia służącego do rozwiązywania zagadnienia logarytmu dyskretnego na krzywych eliptycznych Automatyzacja procesu tworzenia sprzętowego narzędzia służącego do rozwiązywania zagadnienia logarytmu dyskretnego na krzywych eliptycznych Autor: Piotr Majkowski Pod opieką: prof. Zbigniew Kotulski Politechnika

Bardziej szczegółowo

Podstawy OpenCL część 2

Podstawy OpenCL część 2 Podstawy OpenCL część 2 1. Napisz program dokonujący mnożenia dwóch macierzy w wersji sekwencyjnej oraz OpenCL. Porównaj czasy działania obu wersji dla różnych wielkości macierzy, np. 16 16, 128 128, 1024

Bardziej szczegółowo

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Język programowania prosty bezpieczny zorientowany obiektowo wielowątkowy rozproszony przenaszalny interpretowany dynamiczny wydajny Platforma

Bardziej szczegółowo

Organizacja pamięci w procesorach graficznych

Organizacja pamięci w procesorach graficznych Organizacja pamięci w procesorach graficznych Pamięć w GPU przechowuje dane dla procesora graficznego, służące do wyświetlaniu obrazu na ekran. Pamięć przechowuje m.in. dane wektorów, pikseli, tekstury

Bardziej szczegółowo

16. Taksonomia Flynn'a.

16. Taksonomia Flynn'a. 16. Taksonomia Flynn'a. Taksonomia systemów komputerowych według Flynna jest klasyfikacją architektur komputerowych, zaproponowaną w latach sześćdziesiątych XX wieku przez Michaela Flynna, opierająca się

Bardziej szczegółowo

Adam Korzeniewski - p. 732 dr inż. Grzegorz Szwoch - p. 732 dr inż.

Adam Korzeniewski - p. 732 dr inż. Grzegorz Szwoch - p. 732 dr inż. Adam Korzeniewski - adamkorz@sound.eti.pg.gda.pl, p. 732 dr inż. Grzegorz Szwoch - greg@sound.eti.pg.gda.pl, p. 732 dr inż. Piotr Odya - piotrod@sound.eti.pg.gda.pl, p. 730 Plan przedmiotu ZPS Cele nauczania

Bardziej szczegółowo

Obliczenia 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 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ółowo

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII Spis treści Od autora..................................................... Obliczenia inżynierskie i naukowe.................................. X XII Ostrzeżenia...................................................XVII

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Tydzień 14 Procesory równoległe Klasyfikacja systemów wieloprocesorowych Luźno powiązane systemy wieloprocesorowe Każdy procesor ma własną pamięć główną i kanały wejścia-wyjścia.

Bardziej szczegółowo

PROBLEMATYKA OBLICZEŃ MASOWYCH W NAUKACH O ZIEMI. Satelitarny monitoring środowiska

PROBLEMATYKA OBLICZEŃ MASOWYCH W NAUKACH O ZIEMI. Satelitarny monitoring środowiska Satelitarny monitoring środowiska Dane satelitarne to obecnie bardzo ważne źródło informacji o powierzchni Ziemi i procesach na niej zachodzących. Obliczono, że na początku roku 2014 na orbitach okołoziemskich

Bardziej szczegółowo

Libra.cs.put.poznan.pl/mailman/listinfo/skisrkolo.

Libra.cs.put.poznan.pl/mailman/listinfo/skisrkolo. Konrad Szałkowski Libra.cs.put.poznan.pl/mailman/listinfo/skisrkolo Skisr-kolo@libra.cs.put.poznan.pl Po co? Krótka prezentacja Skąd? Dlaczego? Gdzie? Gdzie nie? Jak? CPU Pamięć DDR3-19200 19,2 GB/s Wydajność

Bardziej szczegółowo

Wybrane metodologie wspierające sprzętową akcelerację obliczeń wielkiej skali

Wybrane metodologie wspierające sprzętową akcelerację obliczeń wielkiej skali Akademia Górniczo-Hutnicza w Krakowie Wydział Elektroniki, Informatyki i Telekomunikacji Marcin Pietroń Wybrane metodologie wspierające sprzętową akcelerację obliczeń wielkiej skali Rozprawa doktorska

Bardziej szczegółowo

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności. Procesory wielordzeniowe (multiprocessor on a chip) 1 Procesory wielordzeniowe 2 Procesory wielordzeniowe 3 Konsekwencje prawa Moore'a 4 Procesory wielordzeniowe 5 Intel Nehalem 6 Architektura Intel Nehalem

Bardziej szczegółowo

8. MAGISTRALE I GNIAZDA ROZSZERZEŃ. INTERFEJSY ZEWNĘTRZNE.

8. MAGISTRALE I GNIAZDA ROZSZERZEŃ. INTERFEJSY ZEWNĘTRZNE. 8. MAGISTRALE I GNIAZDA ROZSZERZEŃ. INTERFEJSY ZEWNĘTRZNE. Magistrala (ang. bus) jest ścieżką łączącą ze sobą różne komponenty w celu wymiany informacji/danych pomiędzy nimi. Inaczej mówiąc jest to zespół

Bardziej szczegółowo

Automatyka i Robotyka studia stacjonarne drugiego stopnia

Automatyka i Robotyka studia stacjonarne drugiego stopnia #384 #380 dr inż. Mirosław Gajer Projekt i implementacja narzędzia do profilowania kodu natywnego przy wykorzystaniu narzędzi Android NDK (Project and implementation of tools for profiling native code

Bardziej szczegółowo

Klaster obliczeniowy

Klaster obliczeniowy Warsztaty promocyjne Usług kampusowych PLATON U3 Klaster obliczeniowy czerwiec 2012 Przemysław Trzeciak Centrum Komputerowe Politechniki Łódzkiej Agenda (czas: 20min) 1) Infrastruktura sprzętowa wykorzystana

Bardziej szczegółowo

Pojęcie bazy danych. Funkcje i możliwości.

Pojęcie bazy danych. Funkcje i możliwości. Pojęcie bazy danych. Funkcje i możliwości. Pojęcie bazy danych Baza danych to: zbiór informacji zapisanych według ściśle określonych reguł, w strukturach odpowiadających założonemu modelowi danych, zbiór

Bardziej szczegółowo

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Czym 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ółowo

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1 Wydajność systemów a organizacja pamięci Krzysztof Banaś, Obliczenia wysokiej wydajności. 1 Motywacja - memory wall Krzysztof Banaś, Obliczenia wysokiej wydajności. 2 Organizacja pamięci Organizacja pamięci:

Bardziej szczegółowo