Programowanie współbieżne Wprowadzenie do programowania GPU. Rafał Skinderowicz

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

Download "Programowanie współbieżne Wprowadzenie do programowania GPU. Rafał Skinderowicz"

Transkrypt

1 Programowanie współbieżne Wprowadzenie do programowania GPU Rafał Skinderowicz

2 Literatura Sanders J., Kandrot E., CUDA w przykładach, Helion. Czech Z., Wprowadzenie do obliczeń równoległych, PWN Ben-Ari M., Podstawy programowania współbieżnego i rozproszonego, WNT. Kirk, David B., and W. Hwu Wen-mei. Programming massively parallel processors: a hands-on approach. Newnes, Scarpino, Matthew. OpenCL in Action: how to accelerate graphics and computation. Manning, Specyfikacja OpenCL. Pacheco P., Parallel Programming with MPI, Morgan Kaufmann, 1996.

3 Plan wykładu 1 Wprowadzenie 2 Historia rozwoju GPU Historia rozwoju GPU 3 Model programowania GPU Model programowania GPU 4 CUDA CUDA 5 Architektura GPU Architektura GPU 6 OpenCL OpenCL

4 Bariery technologiczne Rozwój procesorów napotyka na kilka istotnych problemów: Tranzystory nie mogą być nieskończenie małe Taktowanie tranzystorów może być zwiększane do pewnej granicy Tranzystor pracujący z większą częstotliwością generuje więcej ciepła Chłodzenie miliardów tranzystorów we współczesnych procesorach jest dużym problemem

5 GPU Procesor graficzny (ang. Graphics Procssing Unit, GPU) to specjalizowana jednostka obliczeniowa zoptymalizowana pod kątem przetwarzania grafiki

6 GPU historia Pierwsze dedykowane układy graficzne pojawiły się w latach 80 XX wieku (grafika 2D) 1992 Wydano OpenGL v1.0 (v4.5 w 2014) 1995 Microsoft wydał Direct3D (v12 w 2014) df Voodoo Graphics akcelerator tylko do grafiki 3D 1997 Riva 128 (DirectX5) 1999 GeForce 256 Nvidia popularyzuje skrót GPU 2007 Nvidia wydała CUDA v1.0 (v6.0 w 2014) 2009 Apple wydało OpenCL v1.0 (v2.0 w 2013)

7 CPU vs GPU CPU: tradycyjne CPU są bardzo złożone (bogata lista rozkazów, rozbudowana jednostka kontrolna) elastyczność programowania i spora wydajność potrzebują stosukowo dużo mocy GPU: mniej złożona jednostka kontrolna więcej jednostek do przetwarzania równoległego większa efektywność mierzona liczbą operacji / wat bardziej restrykcyjny model programowania

8 CPU vs GPU GPU Duża liczba prostych jednostek przetwarzania, zegar taktowania nie musi dorównywać CPU Większy nacisk na dużą przepustowość (ang. throughput), niż na niskie opóźnienie (ang. latency) w wykonywaniu pojedynczych instrukcji

9 Przepustowość a opóźnienie Załóżmy, że chcemy przetransportować 40 osób na odległość 1000km Mamy do wyboru 2 pojazdy: samochód (4 osoby, 140 km/h) oraz autobus (40 osób, 70 km/h)

10 Przepustowość a opóźnienie Załóżmy, że chcemy przetransportować 40 osób na odległość 1000km Mamy do wyboru 2 pojazdy: samochód (4 osoby, 140 km/h) oraz autobus (40 osób, 70 km/h) Samochód: Opóźnienie (czas podróży): 7h 10min Przepustowość: 0.56 osoby/godz.

11 Przepustowość a opóźnienie Załóżmy, że chcemy przetransportować 40 osób na odległość 1000km Mamy do wyboru 2 pojazdy: samochód (4 osoby, 140 km/h) oraz autobus (40 osób, 70 km/h) Samochód: Opóźnienie (czas podróży): 7h 10min Przepustowość: 0.56 osoby/godz. Autobus: Opóźnienie: 1000km/70km/h 14h 17min Przepustowość: 2.8 osoby/godz.

12 CPU vs GPU Rysunek : Porównanie zapotrzebowania na energię przykładowego CPU i GPU

13 CPU vs GPU Theoretical peak (GFLOP/s) GeForce 8800 GTX GeForce GTX 280 GeForce GTX 480 GeForce 7800 GTX GeForce 6800 Ultra BloomfieldSandy Bridge GeForce FX 5800 Tesla C1060 Willamette Prescott Westmere WoodcrestHarpertown Release date GeForce GTX 580 GeForce GTX TITAN GeForce GTX 680 Tesla C2075 GeForce GTX 780 TI K20X Ivy Bridge Haswell K40 NVIDIA GPU SP NVIDIA GPU DP Intel SP Intel DP Rysunek : Porównanie teoretycznej wydajności CPU vs Nvidia GPU (Autor: Michael Galloy)

14 Zastosowania GPU Ze względu na dużą wydajność w stosunku do zapotrzebowania na energię GPU są obecenie wykorzystywane w większości najszybszych superkomputerów (patrz top500.org) Tianhe-2 (nr 1 na w czerwcu 2014) złożony jest z procesorów Intel Xeon E (12 rdzeni) oraz koprocesorów Xeon Phi moc obliczeniowa 31 PFLOPS Titan (nr 2 w czerwcu 2014) zawiera procesorów AMD Opteron 6274 (16 rdzeni) oraz kart Nvidia Tesla K20X moc obliczeniowa 17,59 PFLOPS Rysunek : Tianhe 2 (źródło: phys.org)

15 Model programowania GPU Heterogeniczny - obliczenia wykonywane na CPU oraz GPU (kernele) CPU pełni rolę nadzorcy lub gospodarza (ang. host) GPU inaczej określany jest jako urządzenie (ang. device) GPU ma odrębną pamięć, stąd konieczne są operacje transferu danych i wyników obliczeń RAM GPU Programowanie GPU wymaga zastosowania dodatkowej biblioteki / języka, np. CUDA, OpenCL

16 Początki programowania GPU W 2001 roku pojawił się układ GPU z serii GeForce 3 z programowalnymi shaderami wierzchołków i pikseli Wykorzystywano udostępnianą przez DirectX, OpenGL oraz Cg możliwość tworzenia własnych shaderów, czyli krótkich programów do przetwarzania wierzchołków i pikseli Ten model pozwalał uzyskać istotne przyspieszenia w niektórych zastosowaniach

17 Shadery pikseli Jednostka cieniująca (shader) dla pikseli wyznacza kolor piksela na podstawie położenia (x, y) piksela na ekranie i dodatkowych informacji: kolorów tekstury współrzędnych teksturowych innych atrybutów przekazanych do shadera Szybko zauważono, że w miejsce kolorów można podstawić inne dane numeryczne Dane wejściowe kodowane były w teksturze, a wyniki odczytywane z kolorów poszczególnych pikseli wygenerowanej tekstury Wady: ograniczone możliwości odczytu i zapisu danych (w kolorach tekstur) ograniczone wsparcie dla liczb zmiennoprzecinkowych konieczna znajomość programowania grafiki, bibliotek OpenGL, Direct3D

18 Model programowania GPU wady Do wad należało: programista musiał posiadać wiedzę na temat programowania grafiki, w tym języka shaderów dane musiały być przekazywane w nienaturalnej postaci, tj. współrzędnych wierzchołków, pikseli tekstur API nie udostępniało możliwości swobodnego odczytu / zapisu pamięci, co istotnie ograniczało możliwe zastosowania brak obsługi obliczeń na liczbach zmiennoprzecinkowych podwójnej precyzji dodatkowo ograniczał zastosowania

19 Rozwój GPU obliczenia ogólne W 2006 r. Nvidia wyprodukowała karty graficzne (architektura G80) umożliwiające wykonywanie obliczeń ogólnego przeznaczenia Wraz z kartami graficznymi z serii G80 udostępniona została technologia CUDA (ang. Compute Unified Device Architecture) umożliwiająca stosunkowo łatwe wykorzystanie GPU do obliczeń ogólnego przeznaczenia Odpowiedzią ATI (AMD) jest AMD APP (Accelerated Parallel Processing) SDK, który wspiera standard OpenCL

20 Model programowania CUDA Programy korzystające z CUDA pisane są w językach C 1, C++ 2 oraz Fortran W modelu CUDA procesor główny CPU stanowi tzw. procesor macierzysty (ang. host) Procesor graficzny GPU nazywany jest urządzeniem (and. device) Procesor graficzny złożony jest z tzw. wieloprocesorów (ang. multiprocessors) Program uruchamiany jest na CPU, oznaczone funkcje nazywane jądrami obliczeniowymi (ang. kernel) wykonywane są przez GPU 1 Nie jest w pełni obsługiwany standard C99 2 Obsługiwany jest wybrany podzbiór C++ (host ISO14882:2003, na urządzeniu podzbiór)

21 CUDA kompilacja programu Kod źródłowy programu Kompilator NVCC Kod hosta Preprocesor, kompilator, linker Kod urządzenia (PTX) Kompilator just-in-time urządzenia Heterogeniczna platforma obliczeniowa z CPU i GPU

22 CUDA schemat wykonania programu CPU - kod sekwencyjny Kod równoległy na GPU KernelA<<<nBIK, ntid>>>(args)... CPU - kod sekwencyjny Kod równoległy na GPU KernelA<<<nBIK, ntid>>>(args)...

23 Schemat wykonania typowego programu dla GPU CPU alokuje pamięć na GPU CPU kopiuje dane wejściowe z RAM do pamięci GPU CPU uruchamia program (kernel) na GPU CPU kopiuje wynik z pamięci GPU do RAM

24 CUDA podział pracy Kernel w modelu CUDA wykonywany jest równolegle przez wiele wątków (ang. thread) Wszystkie wątki kernela należą do jednej kraty (ang. grid) Wątki wewnątrz kraty podzielone są na bloki

25 CUDA podział pracy Podział na bloki wynika z architektury GPU Wątki w bloku wykonywane są na tym samym wieloprocesorze strumieniowym (SM) Wątek ma unikalny ID wewnątrz bloku Blok ma unikalne ID wewnątrz kraty Host Kernel 1 Kernel 2 Block (1, 1) Thread (0, 0) Device Thread (1, 0) Grid 1 Block (0, 0) Block (0, 1) Grid 2 Thread (2, 0) Block (1, 0) Block (1, 1) Thread (3, 0) Thread (4, 0) Block (2, 0) Block (2, 1) Thread (0, 1) Thread (0, 2) Thread (1, 1) Thread (1, 2) Thread (2, 1) Thread (2, 2) Thread (3, 1) Thread (3, 2) Thread (4, 1) Thread (4, 2) 9

26 CUDA wątek Wątek to niezależny przepływ sterowania, ma: identyfikator (ang. thread ID) unikalny wewnątrz bloku wskaźnik instrukcji (ang. program counter) wartości rejestrów lokalną, prywatną pamięć dane wejściowe i wyniki obliczeń

27 CUDA blok Wątki w bloku wykonywane są na tym samym procesorze (SM) Wątki w ramach bloku mają dostęp do współdzielonej pamięci możliwa bezpośrednia komunikacja Mogą być synchronizowane za pomocą lokalnych blokad Wątki w ramach bloku dzielone są na tzw. osnowy (ang. warp) Blok watków Lokalna pamięć bloku

28 CUDA SIMT Wątki w ramach bloku CUDA wykonywane są w modelu SIMT (ang. single instruction multiple thread) odpowiednik modelu SIMD znanego z klasycznych procesorów Wszystkie wątki w ramach warpu wykonują tę samą instrukcję, ale dla różnych danych SISD a b a 1 a 2 b 1 b SIMD szer = 2 c c 1 c 2

29 CUDA SIMT SIMT powoduje, że każde rozgałęzienie w kodzie skutkuje bezczynnością części wątków W celu zapewnienia dobrej wydajności należy eliminować rozgałęzienia w ramach warpu (32 wątki), ale niekoniecznie w ramach bloku n =... Branch if (n>0) Path B Ścieżka B Path A Ścieżka A

30 CUDA kraty Krata złożona jest z bloków, wykonujących ten sam kernel Bloki w kracie mają dostęp do pamięci globalnej zmiany widoczne po synchronizacji Bloki wewnątrz kraty muszą być niezależne - dowolna kolejność wykonania bloków, również sekwencyjnie Niezależność wykonania bloków poprawia skalowalność Możliwa jest komunikacja między blokami, ale nie synchronizacja Krata 0 Krata 1 Pamięć globalna

31 Architektura GPU na przykładzie Nvidia Rozwój technologiczny powoduje, że architektury programowalnych kart graficznych podlegają częstym zmianom Lista architektur GPU Nvidia obejmuje (od najstarszej): Tesla (2007) Fermi (2010) Kepler (2012) Maxwell (2014)

32 Architektura GPU na przykładzie Nvidia Fermi Rysunek : Schemat GPU w architekturze Nvidia Fermi

33 Architektura GPU na przykładzie Nvidia Fermi 3 miliardy tranzystorów 16 multiprocesorów (SM) x 32 rdzeni CUDA = GB pamięci RAM (GDDR5) 384 bitowa szyna pamięci Połączenie CPU GPU za pomocą PCI-Express Moduł GigaThread pełni rolę planisty przydzielającego bloki wątków do poszczególnych SM

34 Nvidia Fermi multiprocesor strumieniowy Multiprocesor strumieniowy zawiera 32 rdzenie CUDA Każdy zawiera jednostę ALU oraz FPU (ang. Floating Point Unit) W pojedynczym cyklu zegara wykonywane są operacje arytmetyczne na liczbach całkowitych 32-bitowych oraz zmiennoprzecinkowych pojedynczej precyzji W poprzedniej generacji mnożenie l. całk. miało tylko 24 bitową precyzję (w jednym cyklu)

35 Nvidia Fermi multiprocesor strumieniowy LD/ST jednostki odczytu / zapisu danych dla poszczególnych wątków (DRAM, cache) SFU jednostki do obliczania funkcji takich jak sin, cos, odwrotność, pierw. kwadratowy łącznie 4 instr. cykl, 8 cykli na warp jeden SM może wykonać 16 operacji zmiennoprzecinkowych podwójnej precyzji / cykl

36 Nvidia Fermi planista SM SM wyposażony jest w 2 planistów (ang. warp scheduler) SM może jednocześnie wykonywać 2 grupy (osnowy, ang. warp) po 32 wątków Instrukcje z obu warpów są przydzielane do odpowiednich jednostek ALU/FPU (po 16) oraz SFU i LD/ST Operacje na liczbach podwójnej precyzji z jednej osnowy nie mogą być wykonywane jednocześnie z instrukcją drugiej osnowy

37 Nvidia Fermi pamięć SM SM wyposażony jest w 64kB konfigurowalnej pamięci 16kB pamięci współdzielonej + 48kB pamięci podręcznej 1 poziomu (L1) 48kB pamięci współdzielonej + 16kB pamięci podręcznej 1 poziomu Pamięć podręczna ma na celu wyeliminowanie opóźnień wynikających z konieczności transferu danych z pamięci głównej urządzenia oraz hosta Wątki wykonywane na SM mogą się efektywnie komunikować za pomocą pamięci współdzielonej Opóźnienie pamięci współdzielonej to średnio cykli Przepustowość 1600 GB/s Karta wyposażona jest również w pamięć podręczną drugiego poziomu 768kB opóźnienie cykli

38 Nvidia Fermi porównanie architektur GPU G80 GT200 Fermi Tranzystory 681 mln 1.4 mld 3 mld CUDA cores DFLOPS - 30 op. / cykl 256 op. / cykl SFLOPS 128 op./cykl 240 op./cykl 512 op./cykl SFU Planiści na SM Pamięć współdzielona SM 16 kb 16 kb 16 kb / 48 kb L1 cache kb / 48 kb L2 cache kb Pamięć z ECC Nie Nie Tak Adresowanie 32-bitowe 32-bitowe 64-bitowe

39 Wprowadzenie Historia rozwoju GPU Model programowania GPU CUDA Architektura GPU OpenCL Nvidia Kepler 7,1 mld tranzystorów 1 Tflop operacji na liczbach zmiennoprzecinkowych podwójnej precyzji (Kepler GK110) Większa efektywność energetyczna, tj. stosunek liczby operacji na wat (ok 3 razy w stosunku do Fermi) Rysunek : Nvidia Kepler GK110 GPU

40 Wprowadzenie Historia rozwoju GPU Model programowania GPU CUDA Nvidia Kepler Rysunek : Schemat procesora GK110 Architektura GPU OpenCL

41 Nvidia Kepler multiprocesor strumieniowy 192 rdzenie CUDA (6x więcej od Fermi) 64 jednostki zmiennoprzecinkowe podwójnej precyzji 32 SFU 32 jednostki adresowe (LD/ST) 4x planista umożliwiający jednoczene wykonywanie do 4 warpów (po 32 wątki) Instrukcje na liczbach podówjnej precyzji mogą być wykonywane jednocześnie z innymi Liczba rejestrów na wątek zwiększona do 255 (4x więcej od Fermi) Pamięć podręczna L2 1536KB (2 x więcej od Fermi) Pamięć podręczna i współdzielona w przeliczeniu na rdzenie uległa zmniejszeniu Rysunek : Multiprocesor strumieniowy (SMX) w GPU Kepler

42 Nvidia Kepler vs Fermi Fermi GF104 Kepler GK110 L. warpów na SM L. wątków na SM L. bloków wątków na SM 8 16 Rejestry 32-bitowe Rejestry / wątek Wątki na blok Pamięć współdzielona 16K/48K 16K/32K/64K Maks. wymiar kraty 2ˆ16-1 2ˆ32-1

43 Wydajność maksymalna a praktyczna GPU cechują się bardzo dużą wydajnością teoretyczną mierzoną FLOPS W praktyce jednak wydajność jest mniejsza od teoretycznej, co wynika z bardzo wielu czynników, m.in. Stopnia równoległości obliczeń w programie Rodzaju obliczeń, w tym stopnia heterogeniczności, liczby rozgałęzień Opóźnień wynikających z transferu danych we / wy Przykładowo, dla problemu mnożenia macierzy i ręcznie optymalizowanego kodu assemblerowego osiągnięto wydajność ok. 77.3% teoretycznej na GPU Kepler GK Lai, Junjie, and Andre Seznec. Performance upper bound analysis and optimization of sgemm on fermi and kepler gpus. Code Generation and Optimization (CGO), 2013 IEEE/ACM International Symposium on. IEEE, 2013.

44 Nvidia Compute Capability Każda karta Nvidii ma określony tzw. Compute Capability w postaci numeru wersji, np. 2.1 Jest to specyfikacja określająca architekturę karty, m.in. liczbę rdzeni na SM, maks. liczbę wątków, bloków, rejestrów Compute Capability może być stosowany przez programy do sprawdzenia możliwości obliczeniowych dostępnych kart graficznych w sposób usystematyzowany

45 OpenCL OpenCL to: Platforma programistyczna do tworzenia aplikacji działających na platformach sprzętowych złożonych z procesorów (CPU), kart graficznych (GPU) Architektura podobna do CUDA w większości przypadków istnieją bezpośrednie odpowiedniki dla poszczególnych metod, typów danych itp.

46 OpenCL historia Autorem OpenCL jest Apple, które posiada prawa do nazwy Apple przesłało propozycję przekształcenia OpenCL w otwarty standard do konsorcjum Khronos Group Do grupy pracującej nad OpenCL należą m.in. Nvidia, AMD, Intel, IBM Specyfikacja dla OpenCL 1.0 została udostępniona w 2008 roku Wersja OpenCL 1.1 została udostępniona w 2010 r. Wersja OpenCL 1.2 została udostępniona w 2011 r. W 2013 roku wydano OpenCL 2.0

47 WebCL W 2014 roku udostępniono wersję 1.0 nowej specyfikacji WebCL, która rozszerza HTML5 o możliwość wykonywania kosztownych obliczeniowo zadań za pomocą GPU i innych urządzeń wspierających OpenCL Definiuje sposób wykorzystania OpenCL z poziomu JavaScript W ramach OpenCL 1.0 udostępniono translator umożliwiający konwersję kodu OpenCL do WebCL Standard wspierany jest m.in. przez Adobe, AMD, Aptina, ARM, Google, Imagination Technologies, Mozilla, Intel, Nokia, NVIDIA, Opera Software, Samsung, and Qualcomm

48 OpenCL OpenCL umożliwia tworzenie oprogramowania działającego na platformach wyposażonywch w heterogeniczne jednostki obliczeniowe, takie jak: procesory ogólnego przeznaczenia (ang. Central Processing Unit, CPU) karty graficzne (ang. Graphic Processing Units, GPU) procesory sygnałowe (DSP) układy FPGA (ang. Field Programmable Gate Array) - cyfrowe programowalne układy logiczne dedykowane koprocesory do obliczeń równoległych (np. Intel Xeon Phi) Rysunek : Intel Xeon Phi

49 OpenCL Parametr Nazwa urządzenia Xeon E Xeon Phi 5110P Tesla K20X Cores SMX Logical Cores 16 (HT) 240 (HT) 2,688 CUDA cores Frequency 2.60GHz 1.053GHz 735MHz GFLOPs (double) 333 1,010 1,317 SIMD width 256 Bits 512 Bits N/A Memory GB 8GB 6GB Memory B/W 51.2GB/s 320GB/s 250GB/s Threading software software hardware Tabela : Porównanie przykładowych platform sprzętowych: CPU koprocesor GPU

50 CUDA czy OpenCL CUDA jest bardziej popularna więcej dokumentacji, przykładów, programów W większości przypadków obie technologie pozwalają uzyskać podobną wydajność 4 OpenCL to otwarty standard wspierany przez wiele firm, włączając Nvidię OpenCL oferuje większą przenośność kodu pomiędzy różnymi platformami 4 Fang, Jianbin, Ana Lucia Varbanescu, and Henk Sips. A comprehensive performance comparison of CUDA and OpenCL. Parallel Processing (ICPP), 2011 International Conference on. IEEE, 2011.

51 Perspektywy Intel planuje sprzedaż procesora Xeon z zintegrowanym układem FPGA, który umożliwia przyspieszenie wybranych zadań nawet do 20x (nie zweryfikowane) Microsoft zastosował układy FPGA (Startix V) do przyspieszenia działania serwerów Bing poprawiono przepustowość fragmentu systemu odpowiedzialnego za obliczanie rangi indeksowanych dokumentów o 95% przy zwiększeniu zapotrzebowania na energię elektryczną o 10% 5 5 Putnam A. i in. (23 osoby), A Reconfigurable Fabric for Accelerating Large-Scale Datacenter Services, 41st Annual International Symposium on Computer Architecture (ISCA), 2014.

52 Trudności programowania GPU Problem z kompatybilnością kodu np. CUDA działa na kartach Nvidia, ale nie ATI Mnogość modeli kart graficznych uzyskanie najlepszej wydajności wymaga często ręcznej optymalizacji dla konkretnego modelu Programowanie dla GPU wymaga dobrej znajomości architektury i jest w pewnym sensie niskopoziomowe Trudniejsze debugowanie programów dla GPU Wykorzystanie mocy GPU wymaga odpowiednich algorytmów Rozwój standardów i bibliotek z pewnością zniweluje dużą część ww problemów

53 C++ AMP W 2012 roku Microsoft opublikował otwartą specyfikację dla C++ AMP (Accelerated Massive Parallelism) rozszerzenie dla C++ plus biblioteka programistyczna (na wzór STL) Umożliwia tworzenie programów, w których część obliczeń wykonywana jest na GPU C++ AMP wykorzystuje DirectX11 i działa na Windows 7 i nowszych 1 void AddArrays(int n, int m, int * pa, int * pb, int * psum) { 2 concurrency::array_view<int,2> a(n, m, pa), b(n, m, pb), sum(n, m, psum); 3 concurrency::parallel_for_each(sum.extent, 4 [=](concurrency::index<2> i) restrict(amp) 5 { 6 sum[i] = a[i] + b[i]; 7 }); 8 }

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 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

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

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

Bardziej szczegółowo

Programowanie 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

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

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

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

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

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

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

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

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

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

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

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

Procesory. Schemat budowy procesora

Procesory. Schemat budowy procesora Procesory Procesor jednostka centralna (CPU Central Processing Unit) to sekwencyjne urządzenie cyfrowe którego zadaniem jest wykonywanie rozkazów i sterowanie pracą wszystkich pozostałych bloków systemu

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

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

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

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

Budowa Mikrokomputera

Budowa Mikrokomputera Budowa Mikrokomputera Wykład z Podstaw Informatyki dla I roku BO Piotr Mika Podstawowe elementy komputera Procesor Pamięć Magistrala (2/16) Płyta główna (ang. mainboard, motherboard) płyta drukowana komputera,

Bardziej szczegółowo

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

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

Architektura mikroprocesorów TEO 2009/2010

Architektura mikroprocesorów TEO 2009/2010 Architektura mikroprocesorów TEO 2009/2010 Plan wykładów Wykład 1: - Wstęp. Klasyfikacje mikroprocesorów Wykład 2: - Mikrokontrolery 8-bit: AVR, PIC Wykład 3: - Mikrokontrolery 8-bit: 8051, ST7 Wykład

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

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

Architektura von Neumanna

Architektura von Neumanna Architektura von Neumanna Klasyfikacja systemów komputerowych (Flynna) SISD - Single Instruction Single Data SIMD - Single Instruction Multiple Data MISD - Multiple Instruction Single Data MIMD - Multiple

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

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

Programowanie kart graficznych. Sprzęt i obliczenia

Programowanie kart graficznych. Sprzęt i obliczenia Programowanie kart graficznych Sprzęt i obliczenia CUDA Szczegóły implementacji sprzętowej Architektura SIMT: podstawą konstrukcji urządzeń CUDA jest skalowalna macierz wielowątkowych multiprocesorów strumieniowych

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

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

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

Wprowadzenie do programowania w środowisku CUDA. Środowisko CUDA

Wprowadzenie do programowania w środowisku CUDA. Środowisko CUDA Wprowadzenie do programowania w środowisku CUDA Środowisko CUDA 1 Budowa procesora CPU i GPU Architektura GPU wymaga większej ilości tranzystorów na przetwarzanie danych Control ALU ALU ALU ALU Cache DRAM

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

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

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

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

Bardziej szczegółowo

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

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

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

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

Klasyfikacja systemów komputerowych. Architektura von Neumanna Architektura harwardzka Zmodyfikowana architektura harwardzka. dr inż.

Klasyfikacja systemów komputerowych. Architektura von Neumanna Architektura harwardzka Zmodyfikowana architektura harwardzka. dr inż. Rok akademicki 2011/2012, Wykład nr 6 2/46 Plan wykładu nr 6 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2011/2012

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 współbieżne Wykład 1. Rafał Skinderowicz

Programowanie współbieżne Wykład 1. Rafał Skinderowicz Programowanie współbieżne Wykład 1 Rafał Skinderowicz Wprowadzenie Plan wykładu Historia, znaczenie i cele współbieżności w informatyce. Podstawowe pojęcia, prawo Moore a i bariery technologiczne. Sposoby

Bardziej szczegółowo

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2011/2012 Wykład nr 6 (27.04.2012) dr inż. Jarosław Forenc Rok akademicki

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

Akceleracja sprzętowa symulacji elektromagnetycznych. graficznych (GPU)

Akceleracja sprzętowa symulacji elektromagnetycznych. graficznych (GPU) Posiedzenie Polskiego Chapteru IEEE EMC-s Wrocław, 13 czerwca 2013 Akceleracja sprzętowa symulacji elektromagnetycznych za pomocą kart graficznych (GPU) Politechnika Śląska Posiedzenie Polskiego Chapteru

Bardziej szczegółowo

XIV International PhD Workshop OWD 2012, October 2012 NOWOCZESNE TECHNIKI WYKONYWANIA ZAAWANSOWANYCH OBLICZEŃ NUMERYCZNYCH

XIV International PhD Workshop OWD 2012, October 2012 NOWOCZESNE TECHNIKI WYKONYWANIA ZAAWANSOWANYCH OBLICZEŃ NUMERYCZNYCH XIV International PhD Workshop OWD 2012, 20 23 October 2012 NOWOCZESNE TECHNIKI WYKONYWANIA ZAAWANSOWANYCH OBLICZEŃ NUMERYCZNYCH MODERN ADVANCED COMPUTATIONAL METHOD Konrad Andrzej Markowski, Warsaw University

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

Programowanie współbieżne. Iwona Kochańska

Programowanie współbieżne. Iwona Kochańska 1 Programowanie współbieżne Iwona Kochańska 2 Organizacja przedmiotu Wykład: 1 godzina tygodniowo (piątek, 10:15) 2 kolokwia w trakcie semestru Ocena końcowa: 0.5*(średnia z kolokw.)+0.5*projekt Projekt:

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

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

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

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

Budowa komputera Komputer computer computare

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

Bardziej szczegółowo

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

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

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

Algorytmy dla maszyny PRAM

Algorytmy dla maszyny PRAM Instytut Informatyki 21 listopada 2015 PRAM Podstawowym modelem służącym do badań algorytmów równoległych jest maszyna typu PRAM. Jej głównymi składnikami są globalna pamięć oraz zbiór procesorów. Do rozważań

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

Programowanie współbieżne Wykład 1. Rafał Skinderowicz

Programowanie współbieżne Wykład 1. Rafał Skinderowicz Programowanie współbieżne Wykład 1 Rafał Skinderowicz Plan wykładu Historia, znaczenie i cele współbieżności w informatyce. Podstawowe pojęcia, prawo Moore a i bariery technologiczne. Sposoby realizacji

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

Komputer IBM PC niezależnie od modelu składa się z: Jednostki centralnej czyli właściwego komputera Monitora Klawiatury

Komputer IBM PC niezależnie od modelu składa się z: Jednostki centralnej czyli właściwego komputera Monitora Klawiatury 1976 r. Apple PC Personal Computer 1981 r. pierwszy IBM PC Komputer jest wart tyle, ile wart jest człowiek, który go wykorzystuje... Hardware sprzęt Software oprogramowanie Komputer IBM PC niezależnie

Bardziej szczegółowo

4 NVIDIA CUDA jako znakomita platforma do zrównoleglenia obliczeń

4 NVIDIA CUDA jako znakomita platforma do zrównoleglenia obliczeń Spis treści Spis treści i 1 Wstęp 1 1.1 Wprowadzenie.......................... 1 1.2 Dostępne technologie, pozwalające zrównoleglić obliczenia na kartach graficznych....................... 1 1.2.1 Open

Bardziej szczegółowo

Przegląd architektury PlayStation 3

Przegląd architektury PlayStation 3 Przegląd architektury PlayStation 3 1 Your Name Your Title Your Organization (Line #1) Your Organization (Line #2) Sony PlayStation 3 Konsola siódmej generacji Premiera: listopad 2006 33,5 mln sprzedanych

Bardziej szczegółowo

Programowanie Rozproszone i Równoległe

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

Bardziej szczegółowo

POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych. Instytut Telekomunikacji Zakład Podstaw Telekomunikacji

POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych. Instytut Telekomunikacji Zakład Podstaw Telekomunikacji POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych Instytut Telekomunikacji Zakład Podstaw Telekomunikacji Kamil Krawczyk Metody optymalizacji soft-procesorów NIOS Opiekun naukowy: dr

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

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

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

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386 Budowa procesora 80386 Struktura wewnętrzna logiczna procesora 80386 Pierwszy prawdziwy procesor 32-bitowy. Zawiera wewnętrzne 32-bitowe rejestry (omówione zostaną w modułach następnych), pozwalające przetwarzać

Bardziej szczegółowo

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza dźwięku i obrazu

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza dźwięku i obrazu Synteza dźwięku i obrazu GRAFIKA KOMPUTEROWA Rozwiązania sprzętowe i programowe Przyspieszanie sprzętowe Generowanie obrazu 3D wymaga złożonych obliczeń, szczególnie jeżeli chodzi o generowanie płynnej

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

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

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system.

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system. Wstęp Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system. Przedstawienie architektur sprzętu wykorzystywanych do

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

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

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza i obróbka obrazu

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza i obróbka obrazu Synteza i obróbka obrazu GRAFIKA KOMPUTEROWA Rozwiązania sprzętowe i programowe Przyspieszanie sprzętowe Generowanie obrazu 3D wymaga złożonych obliczeń, szczególnie jeżeli chodzi o generowanie płynnej

Bardziej szczegółowo

1. Wprowadzenie Opis sytuacyjny Specyfikacja techniczna... 3

1. Wprowadzenie Opis sytuacyjny Specyfikacja techniczna... 3 dla użytkowników Działu Komputerów Dużej Mocy Wrocławskiego Centrum Sieciowo- Superkomputerowego Politechniki Wrocławskiej Załącznik nr 4 do SIWZ znak: ZP/BZP/148/2017 1. Wprowadzenie... 3 2. Opis sytuacyjny....

Bardziej szczegółowo

Karty graficzne możemy podzielić na:

Karty graficzne możemy podzielić na: KARTY GRAFICZNE Karta graficzna karta rozszerzeo odpowiedzialna generowanie sygnału graficznego dla ekranu monitora. Podstawowym zadaniem karty graficznej jest odbiór i przetwarzanie otrzymywanych od komputera

Bardziej szczegółowo

Programowanie procesorów graficznych GPGPU

Programowanie procesorów graficznych GPGPU Programowanie procesorów graficznych GPGPU 1 OpenCL projektowanie kerneli Przypomnienie: kernel program realizowany przez urządzenie OpenCL wątek (work item) rdzeń (processing element): jeden wątek wykonywany

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

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

XIII International PhD Workshop OWD 2011, October 2011 REALIZACJA OBLICZEŃ W ARCHITEKTURZE MASOWO RÓWNOLEGŁEJ W HETEROGENICZNYCH SYSTEMACH XIII International PhD Workshop OWD 2011, 22 25 October 2011 REALIZACJA OBLICZEŃ W ARCHITEKTURZE MASOWO RÓWNOLEGŁEJ W HETEROGENICZNYCH SYSTEMACH CALCULATIONS IN THE MASSIVELY PARALLEL ARCHITECTURE IN HETEROGENEOUS

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

CUDA obliczenia ogólnego przeznaczenia na mocno zrównoleglonym sprzęcie. W prezentacji wykorzystano materiały firmy NVIDIA (http://www.nvidia.

CUDA obliczenia ogólnego przeznaczenia na mocno zrównoleglonym sprzęcie. W prezentacji wykorzystano materiały firmy NVIDIA (http://www.nvidia. CUDA obliczenia ogólnego przeznaczenia na mocno zrównoleglonym sprzęcie W prezentacji wykorzystano materiały firmy NVIDIA (http://www.nvidia.com) 1 Architektura karty graficznej W porównaniu z tradycyjnym

Bardziej szczegółowo

Julia 4D - raytracing

Julia 4D - raytracing i przykładowa implementacja w asemblerze Politechnika Śląska Instytut Informatyki 27 sierpnia 2009 A teraz... 1 Fraktale Julia Przykłady Wstęp teoretyczny Rendering za pomocą śledzenia promieni 2 Implementacja

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

Mo liwoœæ zastosowania GPU do przetwarzania obrazów dla celów analizy sceny**

Mo liwoœæ zastosowania GPU do przetwarzania obrazów dla celów analizy sceny** AUTOMATYKA 2011 Tom 15 Zeszyt 3 Magdalena Szymczyk*, Piotr Szymczyk* Mo liwoœæ zastosowania GPU do przetwarzania obrazów dla celów analizy sceny** 1. Wprowadzenie Aplikacje stosowane do przetwarzania obrazu

Bardziej szczegółowo

SYSTEMY OPERACYJNE WYKŁAD 1 INTEGRACJA ZE SPRZĘTEM

SYSTEMY OPERACYJNE WYKŁAD 1 INTEGRACJA ZE SPRZĘTEM SYSTEMY OPERACYJNE WYKŁAD 1 INTEGRACJA ZE SPRZĘTEM Marcin Tomana marcin@tomana.net SKRÓT WYKŁADU Zastosowania systemów operacyjnych Architektury sprzętowe i mikroprocesory Integracja systemu operacyjnego

Bardziej szczegółowo

Klasyfikacja systemów komputerowych. Architektura von Neumanna. dr inż. Jarosław Forenc

Klasyfikacja systemów komputerowych. Architektura von Neumanna. dr inż. Jarosław Forenc Rok akademicki 2010/2011, Wykład nr 6 2/56 Plan wykładu nr 6 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 2010/2011

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Wykład 3 Jan Kazimirski 1 Podstawowe elementy komputera. Procesor (CPU) 2 Plan wykładu Podstawowe komponenty komputera Procesor CPU Cykl rozkazowy Typy instrukcji Stos Tryby adresowania

Bardziej szczegółowo

Akceleracja obliczeń algebry liniowej z wykorzystaniem masywnie równoległych, wielordzeniowych procesorów GPU Świerczewski Ł.

Akceleracja obliczeń algebry liniowej z wykorzystaniem masywnie równoległych, wielordzeniowych procesorów GPU Świerczewski Ł. Akceleracja obliczeń algebry liniowej z wykorzystaniem masywnie równoległych, wielordzeniowych procesorów GPU Świerczewski Ł. Wprowadzenie do koncepcji budowy akceleratorów graficznych Pierwsze procesory

Bardziej szczegółowo

Załącznik nr 6 do SIWZ nr postępowania II.2420.1.2014.005.13.MJ Zaoferowany. sprzęt L P. Parametry techniczne

Załącznik nr 6 do SIWZ nr postępowania II.2420.1.2014.005.13.MJ Zaoferowany. sprzęt L P. Parametry techniczne L P Załącznik nr 6 do SIWZ nr postępowania II.2420.1.2014.005.13.MJ Zaoferowany Parametry techniczne Ilość sprzęt Gwaran Cena Cena Wartość Wartość (model cja jednostk % jednostkow ogółem ogółem i parametry

Bardziej szczegółowo

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 2010/2011 Wykład nr 6 (28.03.2011) Rok akademicki 2010/2011, Wykład

Bardziej szczegółowo

która metoda jest najlepsza

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

Bardziej szczegółowo

Projektowanie. Projektowanie mikroprocesorów

Projektowanie. Projektowanie mikroprocesorów WYKŁAD Projektowanie mikroprocesorów Projektowanie układ adów w cyfrowych - podsumowanie Algebra Boole a Bramki logiczne i przerzutniki Automat skończony System binarny i reprezentacja danych Synteza logiczna

Bardziej szczegółowo

Architektura von Neumanna. Jak zbudowany jest współczesny komputer? Schemat architektury typowego PC-ta. Architektura PC wersja techniczna

Architektura von Neumanna. Jak zbudowany jest współczesny komputer? Schemat architektury typowego PC-ta. Architektura PC wersja techniczna Architektura von Neumanna CPU pamięć wejście wyjście Jak zbudowany jest współczesny komputer? magistrala systemowa CPU jednostka centralna (procesor) pamięć obszar przechowywania programu i danych wejście

Bardziej szczegółowo

Wykład 6. Mikrokontrolery z rdzeniem ARM

Wykład 6. Mikrokontrolery z rdzeniem ARM Wykład 6 Mikrokontrolery z rdzeniem ARM Plan wykładu Cortex-A9 c.d. Mikrokontrolery firmy ST Mikrokontrolery firmy NXP Mikrokontrolery firmy AnalogDevices Mikrokontrolery firmy Freescale Mikrokontrolery

Bardziej szczegółowo