Programowanie GPU jako procesora ogólnego przeznaczenia.

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

Download "Programowanie GPU jako procesora ogólnego przeznaczenia."

Transkrypt

1 Programowanie GPU jako procesora ogólnego przeznaczenia Wykład III Architektura CUDA Witold Rudnicki Łukasz Ligowski Interdyscyplinarne Centrum Modelowania Matematycznego i Komputerowego Uniwersytet Warszawski Odwrócone więzy STARE Moc jest za darmo, tranzystory kosztują JeŜeli moc jest problemem to jest to moc dynamiczna Procesory nie zawierają błędów, błędy mogą się zdarzać jedynie na połączeniach MoŜemy w nieskończoność zwiększać poziom abstrakcji i rozmiar logiczny układów Nowe pomysły mogą być testowane w postaci układów scalonych Wzrost wydajności pozwala na wzrost pasma i zmniejszenie latencji MnoŜenie jest powolne, load & store są szybkie NOWE Moc jest droga, tranzystory są za darmo Moc spoczynkowa to do 40% mocy maksymalnej. (POWER WALL) Procesory produkowane w procesie poniŝej 65 nm będą miały duŝy poziom błędów (miękkich i twardych) Opóźnienia sygnału, szumy, sprzęŝenia elektryczne i magnetyczne, niedokładność zegarów uniemoŝliwiają w praktyce dowolne zwiększanie rozmiarów układów scalonych Koszty produkcji układów < 65nm, oprogramowania, i projektowania sprawiają, Ŝe prototypy stają się zawodne Wzrost pasma jest co najmniej kwadratowy jako funkcja spadku latencji Load & store są wolne, mnoŝenie jest szybkie (MEMORY WALL) 1

2 Odwrócone więzy STARE Wzrost wydajności moŝna uzyskać przez równoległość na poziomie instrukcji (ILP) dzięki rozwojowi architektury i kompilatorów (przewidywanie rozgałęzień, wykonanie out-of-order, zgadywanie wyników instrukcji warunkowych, układy VLSI. Wydajność pojedynczego procesora podwaja się co 18 miesięcy Nie ma sensu zrównoleglać aplikacji wystarczy poczekać Zwiększanie wydajności odbywa się przez zwiększanie częstotliwości zegara Słabsze niŝ liniowe zwiększenie wydajności dzięki zrównoleglaniu jest poraŝką. NOWE Wzrost wydajności dzięki równoległości na poziomie instrukcji się wyczerpał. (ILP WALL) POWER WALL + MEMORY WALL + ILP WALL = BRICK WALL. Podwajanie się wydajności pojedynczego procesora to co najmniej 5 lat. To sobie jeszcze poczekasz Zwiększanie wydajności odbywa się przez zwiększanie równoległości. KaŜde zwiększenie wydajności dzięki zrównolegleniu jest sukcesem Jest jeszcze nadzieja Prawo Moore a obowiązuje: Setki rdzeni obliczeniowych w jednym układzie scalonym Brak latencji i duŝe pasmo dla komunikacji wewnątrz układu scalonego 2

3 Jak to GPU wykorzystuje prawo Moore a Podwajanie wydajności co 18 miesięcy. Dzięki wzrostowi liczby tranzystorów Architektura CUDA ZałoŜenia DuŜa przepustowość DuŜa moc obliczeniowa DuŜa równoległość (model data parallel) Ukrywanie latencji pamięci Skalowalność 3

4 Model Programowania Architektura CUDA Kernele obliczeniowe uruchamiane na GPU są zarządzane przez główny program uruchamiany na CPU Grid (kernel) = N Bloków Blok = K x 64 wątków Wątek = program Bloki muszą być niezaleŝne kolejność wykonywania bloków jest dowolna Ilość bloków jest (niemal) dowolna Wątki w ramach jednego bloku mogą się komunikować przy uŝyciu pamięci współdzielonej Wszystkie wątki mają dostęp do wspólnej pamięci globalnej Architektura CUDA Realizacja Sprzętowa Karta koprocesora (graficznego/obliczeniowego) połączona z CPU za pomocą szybkiego złącza o duŝej przepustowości Macierz procesorów strumieniowych (SPA) Architektura SIMT (Single Instruction Multiple Threads) Hierarchiczna budowa Karta TPC (thread processing cluster / texture processing cluster) 2 (3) x SM (Streaming Multiprocessor)» 8 x SP (Streaming Processor)» Inne jednostki wykonawcze» 8 x TF (Texture Filtering Unit) 4

5 Architektura CUDA G80 Streaming Processor Array TPC TPC TPC TPC TPC TPC Texture Processor Cluster SM Streaming Multiprocessor Instruction L1 Data L1 Instruction Fetch/Dispatch TEX SP Shared Memory SP SM SP SP SFU SP SP SFU Zródlo: David Kirk/NVIDIA and Wen-mei W.Hwu, 2007 ECE 498AL, University of Illinois, Urbana-Champaign SP SP Architektura CUDA SM (Streaming Multiprocessor) Instruction Issuing Unit 8 x SP (Streaming Processor) 2 x SFU (Special Function Unit) 1 x DPALU 16 kb pamięci współdzielonej 8 x Texture Filtering Unit Instruction & Data cache Texture & Constant memory cache 5

6 Architektura CUDA gtx 200 (procesowanie grafiki) TPC texture processing cluster SM streaming multiprocessor SP streaming processor Architektura CUDA GTX 200 obliczenia 6

7 Specyfikacja CUDA TPC texture processing cluster SM streaming multiprocessor SP streaming processor TF texture filtering Specyfikacja CUDA TPC texture processing cluster SM streaming multiprocessor SP streaming processor 7

8 Streaming Multiprocessor (SM) Streaming Multiprocessor (SM) 8 Streaming Processors (SP) 2 Super Function Units (SFU) Wielowątkowe wykonywanie rozkazów dla 1 do 1024 (768) jednocześnie aktywnych wątków Wspólne pobieranie instrukcji dla 32 wątków tworzących osnowę (warp) Wspólne dla wszystkich aktywnych wątków zasoby multiprocesora (8192) rejestry 16 KB shared memory (4K zmiennych typu float lub int) w 16 bankach Osnowa (warp) składa się z 32 wątków Cache dla constant memory 8 KB na multiprocesor Cache dla texture memory 6-8 KB na multiprocesor Max 8 aktywnych bloków na multiprocesor Max 32 (24) aktywne osnowy Dla compute capabilitiy 1.2 wsparcie dla głosowania wątków Operacje atomowe na bitowych zmiennych w pamięci globalnej Architektura CUDA a nowy paradygmat projektowania sprzętu Równoległość jest efektywną energetycznie formą zwiększania wydajności. Wiele małych rdzeni daje większą wydajność na powierzchnię chipu dla kodów równoległych DuŜo małych rdzeni pozwala na elastyczną politykę zarządzania energią Defekty w małych rdzeniach mało kosztują (układy z wadami w pojedynczych rdzeniach są nadal funkcjonalne SP3 uŝywa 7 z 8 rdzeni procesora Cell) Małe rdzenie jest łatwiej zaprojektować, zweryfikować i przetestować a ich charakterystyka elektryczna jest łatwiejsza do przewidywania 8

9 Hierarchia wykonywania programu Wątek Half warp (16 wątków) Warp (32 wątki) Block ( wątków) Grid max 64Kx64Kx64K bloków Hierarchia wątków Pół osnowa (half warp) 16 wątków Zarządzanie dostępem do pamięci Osnowa (warp) Blok Wspólne wykonywanie instrukcji (4 cykle na osnowę) Grupa wątków wykonująca ten sam kod, mająca dostęp do wspólnej pamięci współdzielonej Grid Program składający się z wielu bloków (im więcej tym lepsza skalowalność kodu) 9

10 Specyfikacja CUDA TPC texture processing cluster SM streaming multiprocessor SP streaming processor Memory Wall Problemy - Pasmo - Opóźnienia - Pojemność CUDA nie ma na to wpływu Pasmo częstotliwość x szerokość szyny Architektura CUDA oparta jest na bardzo szerokiej szynie danych 384 bity w poprzedniej generacji 512 bitów w najnowszej generacji Opóźnienia ukrywanie opóźnień dzięki duŝej ilości niezaleŝnych wątków 10

11 Architektura pamięci Rodzaje pamięci Pamięć globalna Pamięć lokalna Pamięć współdzielona Pamięć stała Pamięć tekstur Pliki rejestrów Hierarchia pamięci 11

12 Hierarchia pamięci Pamięć lokalna prywatna dla wątku, wydzielony obszar pamięci RAM karty Pamięć współdzielona widoczna dla wszystkich wątków w bloku pamięć wewnętrzna procesora Plik rejestrów prywatna dla wątku ograniczona. Ilość rejestrów przypadających na jeden wątek zaleŝy od ilości wątków. Pamięć globalna On device Widoczna dla wszystkich wątków Opóźnienie dostępu rzędu 200 cykli zegara Nie ma cache a Dostęp RW Widoczna dla hosta 12

13 Pamięć lokalna On device Prywatna dla jednego wątku Opóźnienie dostępu rzędu 200 cykli zegara Nie ma cache a Dostęp RW niewidoczna dla hosta Pamięć tekstur On device Wszystkie wątki Cache Dostęp ReadOnly Jedynie host moŝe do niej pisać 13

14 Pamięć stała On device Wszystkie wątki Cache Dostęp ReadOnly Jedynie host moŝe do niej pisać On chip Pamięć współdzielona Wszystkie wątki w bloku Dostęp RW Niewidoczna dla hosta Dzielona między wszystkie jednocześnie aktywne bloki 14

15 On chip Plik rejestrów Prywatne dla jednego wątku w bloku Dostęp RW Niewidoczna dla hosta Dzielona między wszystkie jednocześnie aktywne bloki Efektywne kodowanie Jednoczesna optymalizacja zuŝycia wielu zasobów Minimalizacja dostępu do pamięci globalnej Maksymalizacja liczby wątków 15

16 Optymalizacja dostępu do pamięci Latencja dostępu do pamięci głównej i lokalnej ~200 cykli zegara Czas wykonania jednej instrukcji dla jednej osnowy (warp) 4 cykle (32 / 8) kolejne osnowy na jednym multiprocesorze powinny wykonać 50 instrukcji zanim bieŝąca będzie otrzyma dane z pamięci globalnej. Dla prostych kodów maksymalizacja liczby wątków umoŝliwia chowanie latencji JeŜeli kod jest gęsty obliczeniowo, lub operacje są bardziej kosztowne optymalna ilość wątków będzie mniejsza Optymalizacja dostępu do pamięci Teoretyczna wydajność obliczeniowa karty GTX 280 wynosi 933 GFlops Operacja polegająca na wzięciu trzech argumentów z pamięci wykonaniu na nich mnoŝenia i zapisaniu wyniku wykorzystuje maksymalnie moc obliczeniową (MULADD + MUL) A=k*(A+C*D) JeŜeli operacje odbywałyby się na zmiennych pobieranych z pamięci głównej i zapisywane do pamięci głównej wymagane pasmo wynosi: 4 (Operacje RW/ Cykl) *4B (Sizeof(float)) *311G (cykli /s) = 4976 GB/s Dostępne pasmo wynosi ~140 GB/s 16

17 Uwaga na marginesie Teoretyczna wydajność obliczeniowa karty GTX 280 wynosi 933 GFlops Ta wydajność jest moŝliwa do osiągnięcia tylko dla kodu, który ma właściwą proporcję operacji elementarnych ALU moŝe wykonać jednocześnie MULADD MUL A zatem wymagane są obliczenia w których występuje odpowiednia proporcja operacji typu MULADD i MUL Jeśli obliczenia składają się np. głównie z dodawania, to wydajność będzie mniejsza Dla oszacowania teoretycznej wydajności swojego kodu trzeba zanalizować wewnętrzną pętlę i policzyć elementarne operacje arytmetyczne, sprawdzić ile z nich da się pogrupować w trójki realizowane jako MULADD + MUL Policzyć przewidywaną ilość instrukcji procesora Optymalizacja dostępu do pamięci NaleŜy minimalizować odwołania do pamięci głównej! Wczytaj często uŝywane dane do pamięci współdzielonej Wykonaj obliczenia Zapisz wyniki do pamięci głównej Ograniczenia Niewielka ilość pamięci współdzielonej (16 KB na multiprocesor) 17

18 Optymalizacja dostępu do pamięci Dodatkowe optymalizacje dostępu do pamięci Dostęp odbywa się dla pół-osnowy (half-warp) jednocześnie w jednej transakcji dostępu do pamięci Zasada ogólna: Dostęp jest optymalny, gdy kolejne wątki odwołują się do kolejnych lokalizacji w pamięci, tak Ŝeby transakcja odwoływała się do ciągłego obszaru, zaczynającego się na granicy banku pamięci. Optymalizacja dostępu do pamięci Odczyt z pamięci odbywa się za pomocą operacji 32, 64 i 128 bitowych (4, 8 i 16 bajtowych). Instrukcje dla kolejnych wątków mogą być sklejane dla uzyskania efektywnych transakcji z pamięcią. Najbardziej efektywny dostęp jest jeŝeli uda się skleić odwołania pochodzące z kolejnych wątków w 32, 64 lub 128 bajtowe transakcje z pamięcią. Transakcje 32-bajtowe są uŝywane przez urządzenia z compute capability 1.2 i więcej 18

19 Optymalizacja dostępu do pamięci Compute capability 1.0 i 1.1 Aby sklejanie mogło się powieść wątki muszą uŝywać zmiennych: 32-bitowych (transakcja 64 bajtowa), 64-bitowych (transakcja 128 bajtowa), 128-bitowych (dwie transakcje 128 bajtowe); Wszystkie 16 zmiennych musi znajdować się w tym samym segmencie pamięci o wielkości odpowiadającej wielkości transakcji (podwójnej dla zmiennych 128 bitowych); Kolejność zmiennych musi odpowiadać kolejności wątków k-ty wątek w półosnowie musi odwoływać się do k-tej zmiennej. Dobrze 1 transakcja Optymalizacja dostępu do pamięci 19

20 Compute capability 1.0 & 1.1 Źle - 16 oddzielnych transakcji Optymalizacja dostępu do pamięci Optymalizacja dostępu do pamięci Compute capability 1.2 i więcej Aby sklejanie mogło się powieść wszystkie 16 zmiennych musi znajdować się w tym samym segmencie o wielkości: 32 bajty (zmienne 8-bitowe), 64 bajty (zmienne 16-bitowe), 128 bajtów (zmienne 32 i 64 bitowe); Restrykcje dotyczące kolejności wątków zostały zniesione Restrykcje dotyczące granic segmentów zostały częściowo zniesione 20

21 Optymalizacja dostępu do pamięci compute capability 1.2 Dwie transakcje Jedna transakcja Optymalizacja dostępu do pamięci Pamięć lokalna Zmienne automatyczne, dla których nie ma miejsca w rejestrach Umieszczana w pamięci karty Nie jest buforowana w cache u, Problemy z wydajnością Odwołania są zawsze sklejone (dba o to kompilator). UNIKAĆ!! 21

22 Optymalizacja dostępu do pamięci Pamięć stała Umieszczana w pamięci karty Jest buforowana w cache u, Wszystkie wątki w półosnowie (hal-warp) powinny czytać z tego samego adresu wtedy szybkość odczytu z cache a jest równa szybkości korzystania z rejestrów Zalecane jest by wszystkie wątki z całej osnowy czytały z tego samego adresu. Miejsce na przechowywanie stałych Optymalizacja dostępu do pamięci Pamięć tekstur Umieszczana w pamięci karty Jest buforowana w cache u, Nie zmniejsza latencji (ale lepsze ukrywanie latencji) Hit zmniejsza uŝycie szyny pamięci moŝe zwiększyć przepustowość innych obliczeń Nie ma ograniczeń dotyczących adresów, z których moŝna czytać (przydatne dla dostępu w losowej kolejności) Zalecane jest by wątki z tej samej osnowy (warp) czytały z bliskich adresów. 22

23 Optymalizacja uwagi ogólne Moc obliczeniowa wielokrotnie większa niŝ dostępne pasmo Optymalizacja to przede wszystkim algorytmy optymalnie wykorzystujące pamięć Jednoczesne Ŝonglowanie wieloma parametrami Optymalizacja uwagi ogólne Zwiększanie ilości wątków Pomaga ukryć latencję pamięci głównej ALE Zwiększa zuŝycie cennych lokalnych zasobów Rejestrów Pamięci współdzielonej Pamięć współdzielona jest mała i dzielona przez bardzo duŝą liczbę wątków Rejestry mogą być ograniczeniem przy bardziej wymagających kodach Warto pamiętać o pamięci constant i pamięci tekstur 23

24 Architektura CUDA a wymarzony model ManyCore computing CUDA vs C for CUDA 24

25 Modele programowania Zorientowane na sprzęt Efektywność Mała przenośność Trudne programowanie Zorientowane na aplikacje Łatwość tworzenia kodów specyficznych dla danej domeny Stosunkowo niska wydajność Słabe wsparcie dla równoległości Zorientowane na poprawność formalną Zmniejszanie szans popełnienia błędu Modele programowania Brak powiązań z psychologią Jakie zadania są łatwe Jakie zadania są trudne Gdzie łatwo popełnić błędy Pamięć transakcyjna przykład modelu pomagającego w trudnych zadaniach 25

26 Modele programowania Wymagania wobec nowych modeli programistycznych NiezaleŜne od liczby procesorów ~OK Wspieranie bogatego zestawu rodzajów i wielkości danych NIE 1 bit (Boolowskie) 8 bit (ASCI, Integer) 16 bit (Integer, DSP fixed point, Unicode) 32 bit (Integer, SP FP, Unicode) 64 bit (Integer, DP FP) 128 bit (Integer, QP FP) > 128 bit (crypto) Miary sukcesu Maksymalizacja produktywności programisty (time to running code) Maksymalizacja wydajności aplikacji (time to solution) 26

27 Krasnale - podsumowanie Krasnale - podsumowanie 27

28 Krasnale - podsumowanie Krasnale - podsumowanie 28

29 Wykonanie programu Specyfikacja CUDA Specifications for Compute Capability 1.0 The maximum number of threads per block is 512; The maximum sizes of the x-, y-, and z-dimension of a thread block are 512, 512, and 64, respectively; The maximum size of each dimension of a grid of thread blocks is 65535; The warp size is 32 threads; The number of registers per multiprocessor is 8192; The amount of shared memory available per multiprocessor is 16 KB organized into 16 banks (see Section ); The total amount of constant memory is 64 KB; The cache working set for constant memory is 8 KB per multiprocessor; The cache working set for texture memory varies between 6 and 8 KB per multiprocessor; The maximum number of active blocks per multiprocessor is 8; The maximum number of active warps per multiprocessor is 24; The maximum number of active threads per multiprocessor is 768; For a texture reference bound to a one-dimensional CUDA array, the maximum width is 213; For a texture reference bound to a two-dimensional CUDA array, the maximum width is 216 and the maximum height is 215; For a texture reference bound to a three-dimensional CUDA array, the maximum width is 211, the maximum height is 211, and the maximum depth is 211; For a texture reference bound to linear memory, the maximum width is 227; The limit on kernel size is 2 million ptx instructions; Each multiprocessor is composed of eight processors, so that a multiprocessor is able to process the 32 threads of a warp in four clock cycles. 29

30 Specyfikacja CUDA Specifications for Compute Capability 1.1 Support for atomic functions operating on 32-bit words in global memory (see Section 4.4.4). Specifications for Compute Capability 1.2 Support for atomic functions operating in shared memory and atomic functions operating on 64-bit words in global memory (see Section 4.4.4); Support for warp vote functions (see Section 4.4.5); The number of registers per multiprocessor is 16384; The maximum number of active warps per multiprocessor is 32; The maximum number of active threads per multiprocessor is Specifications for Compute Capability 1.3 Support for double-precision floating-point numbers. Specyfikacja CUDA SIMT Architecture NVIDIA s unified shading and compute architecture uses two different processing models. For execution across the TPCs, the architecture is MIMD (multiple instruction, multiple data). For execution across each SM, the architecture is SIMT (single instruction, multiple thread). SIMT improves upon pure SIMD (single instruction, multiple data) designs in both performance and ease of programmability. Being scalar, SIMT has no set vector width and therefore performs at full speed irrespective of vector sizes. In contrast, SIMD machines operate at a reduced capacity if the input is smaller than the MIMD or SIMD width. SIMT ensures the processing cores are fully utilized at all times. From the programmer s perspective, SIMT also allows each thread to take on its own TPC path. Since texture branching processing is handled by the cluster hardware, there is no need to manually manage branching within the vector width. SM streaming multiprocessor SP streaming processor 30

31 Specyfikacja CUDA Improved Dual Issue Special function units (SFUs) in the SMs compute transcendental math, attribute interpolation (interpreting pixel attributes from a primitive s vertex attributes), and perform floating-point MUL instructions. The individual streaming processing cores of GeForce GTX 200 GPUs can now perform near full-speed dual-issue of multiply-add operations (MADs) and MULs (3 flops/sp) by using the SP s MAD unit to perform a MUL and ADD per clock, and using the SFU to perform another MUL in the same clock. Optimized and directed tests can measure around 93-94% efficiency. The entire GeForce GTX 200 GPU SPA delivers nearly one teraflop of peak, singleprecision, IEEE 754, floating-point performance. Double Precision Support A very important new addition to the GeForce GTX 200 GPU architecture is doubleprecision, 64-bit floating point computation support. This benefits various high-end scientific, engineering, and financial computing applications or any computational task requiring very high accuracy of results. Each SM incorporates a double-precision 64- bit floating math unit, for a total of 30 double-precision 64-bit processing cores. The double-precision unit performs a fused MAD, which is a high-precision implementation of a MAD instruction that is also fully IEEE 754R floating-point specification compliant. The overall double-precision performance of all 10 TPCs of a GeForce GTX 280 GPU is roughly equivalent to an eight-core Xeon CPU, yielding up to 78 gigaflops. Obszary aplikacji równoległych Metafora Siedmiu krasnali (Seven Dwarfs). Algorytmy o podobnej strukturze komunikacji i organizacji danych zostały pogrupowane w klasy równowaŝności nazwane przez autorów krasnalami. Programy mogą składać się z wielu problemów kaŝdy z nich moŝe być rozwiązywany przy pomocy innego krasnala. 31

32 Specyfikacja CUDA 512-bit Memory Interface Maximum memory interface width is expanded from 384 bits in previous-generation GPUs to 512 bits in GeForce GTX 200 GPUs, using eight 64-bitwide frame buffer interface units. Memory bandwidth has been significantly increased. 32

33 Thread Batching: Grids and Blocks Host Device A kernel is executed as a grid of thread blocks All threads share data memory space A thread block is a batch of threads that can cooperate with each other by: Synchronizing their execution For hazard-free shared memory accesses Efficiently sharing data through a low latency shared memory Two threads from two different blocks cannot cooperate Kernel 1 Kernel 2 Block (1, 1) Thread (0, 0) Thread (0, 1) Thread (0, 2) Thread (1, 0) Thread (1, 1) Thread (1, 2) Grid 1 Block (0, 0) Block (0, 1) Grid 2 Thread (2, 0) Thread (2, 1) Thread (2, 2) Block (1, 0) Block (1, 1) Thread (3, 0) Thread (3, 1) Thread (3, 2) Courtesy: NDVIA Thread (4, 0) Thread (4, 1) Thread (4, 2) Block (2, 0) Block (2, 1) Each thread can: Programming Model: Memory Spaces Read/write per-thread registers Read/write per-thread local memory Read/write per-block shared memory Read/write per-grid global memory Read only per-grid constant memory Read only per-grid texture memory Grid Block (0, 0) Registers Shared Memory Thread (0, 0) Local Memory Registers Thread (1, 0) Local Memory Block (1, 0) Registers Shared Memory Thread (0, 0) Local Memory Registers Thread (1, 0) Local Memory The host can read/write global, constant, and texture memory Host Global Memory Constant Memory Texture Memory 33

34 CUDA Device Memory Space Overview Each thread can: R/W per-thread registers R/W per-thread local memory R/W per-block shared memory R/W per-grid global memory Read only per-grid constant memory Read only per-grid texture memory (Device) Grid Block (0, 0) Registers Shared Memory Thread (0, 0) Registers Thread (1, 0) Block (1, 0) Registers Shared Memory Thread (0, 0) Registers Thread (1, 0) The host can R/W global, constant, and texture memories Host Local Memory Global Memory Constant Memory Local Memory Local Memory Local Memory Texture Memory Programmer View of Register File There are 8192 registers in each SM in G80 This is an implementation decision, not part of CUDA Registers are dynamically partitioned across all Blocks assigned to the SM Once assigned to a Block, the register is NOT accessible by threads in other Blocks Each thread in the same Block only access registers assigned to itself 4 blocks 3 blocks 34

35 Shared Memory Each SM has 16 KB of Shared Memory 16 banks of 32bit words CUDA uses Shared Memory as shared storage visible to all threads in a thread block read and write access Not used explicitly for pixel shader programs we dislike pixels talking to each other I$ L1 Multithreaded Instruction Buffer R F C$ L1 Operand Select MAD Shared Mem SFU Thread Scheduling/Execution Each Thread Blocks is divided in 32- thread Warps This is an implementation decision, not part of the CUDA programming model Warps are scheduling units in SM If 3 blocks are assigned to an SM and each Block has 256 threads, how many Warps are there in an SM? Each Block is divided into 256/32 = 8 Warps There are 8 * 3 = 24 Warps At any point in time, only one of the 24 Warps will be selected for instruction fetch and execution. Block 1 Warps t0 t1 t2 t31 Block 2 Warps t0 t1 t2 t31 Streaming Multiprocessor Instruction L1 SP SP SP SP Instruction Fetch/Dispatch Shared Memory SFU Data L1 SP SP SP SP SFU 35

36 SM Executes Blocks t0 t1 t2 tm SM 0 SM 1 t0 t1 t2 tm MT IU SP MT IU SP Blocks Blocks Shared Memory TF Shared Memory Texture L1 Memory L2 Threads are assigned to SMs in Block granularity Up to 8 Blocks to each SM as resource allows SM in G80 can take up to 768 threads Could be 256 (threads/block) * 3 blocks Or 128 (threads/block) * 6 blocks, etc. Threads run concurrently SM assigns/maintains thread id #s SM manages/schedules thread execution CUDA Thread Block: Review Programmer declares (Thread) Block: Block size 1 to 512 concurrent threads Block shape 1D, 2D, or 3D Block dimensions in threads All threads in a Block execute the same thread program Threads have thread id numbers within Block Threads share data and synchronize while doing their share of the work Thread program uses thread id to select work and address shared data CUDA Thread Block Thread Id #: m Thread program Courtesy: John Nickolls, NVIDIA 36

37 CUDA Processor Terminology SPA Streaming Processor Array (variable across GeForce 8- series, 8 in GeForce8800) TPC Texture Processor Cluster (2 SM + TEX) SM Streaming Multiprocessor (8 SP) Multi-threaded processor core Fundamental processing unit for CUDA thread block SP Streaming Processor Scalar ALU for a single CUDA thread Matrix Multiplication Example If each Block has 16X16 threads and each thread uses 10 registers, how many thread can run on each SM? Each Block requires 10*256 = 2560 registers 8192 = 3 * change So, three blocks can run on an SM as far as registers are concerned How about if each thread increases the use of registers by 1? Each Block now requires 11*256 = 2816 registers 8192 < 2816 *3 Only two Blocks can run on an SM, 1/3 reduction of parallelism!!! 37

38 GeForce 8800 Series Technical Specs Maximum number of threads per block: 512 Maximum size of each dimension of a grid: 65,535 Number of streaming multiprocessors (SM): GeForce 8800 GTX: 675 MHz GeForce 8800 GTS: 600 MHz Device memory: GeForce 8800 GTX: 768 MB GeForce 8800 GTS: 640 MB Shared memory per multiprocessor: 16KB divided in 16 banks Constant memory: 64 KB Warp size: 32 threads (16 Warps/Block) What is the GPU Good at? The GPU is good at data-parallel processing The same computation executed on many data elements in parallel low control flow overhead with high SP floating point arithmetic intensity Many calculations per memory access Currently also need high floating point to integer ratio High floating-point arithmetic intensity and many data elements mean that memory access latency can be hidden with calculations instead of big data caches Still need to avoid bandwidth saturation! 38

39 More Terminology Review device = GPU = set of multiprocessors Multiprocessor = set of processors & shared memory Kernel = GPU program Grid = array of thread blocks that execute a kernel Thread block = group of SIMD threads that execute a kernel and can communicate via shared memory Memory Location Cached Access Who Local Off-chip No Read/write One thread Shared On-chip N/A - resident Read/write All threads in a block Global Off-chip No Read/write All threads + host Constant Off-chip Yes Read All threads + host Texture Off-chip Yes Read All threads + host 39

40 CUDA Programming Model: A Highly Multithreaded Coprocessor The GPU is viewed as a compute device that: Is a coprocessor to the CPU or host Has its own DRAM (device memory) Runs many threads in parallel Data-parallel portions of an application are executed on the device as kernels which run in parallel on many threads Differences between GPU and CPU threads GPU threads are extremely lightweight Very little creation overhead GPU needs 1000s of threads for full efficiency Multi-core CPU needs only a few 40

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

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

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

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

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

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

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

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

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

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

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

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

Wstęp. Przetwarzanie współbieżne, równoległe i rozproszone

Wstęp. Przetwarzanie współbieżne, równoległe i rozproszone Wstęp. 1 Cel zajęć Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów równoległych Przedstawienie sprzętu wykorzystywanego do obliczeń równoległych Nauczenie sposobów

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

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

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

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

Procesory rodziny x86. Dariusz Chaberski

Procesory rodziny x86. Dariusz Chaberski Procesory rodziny x86 Dariusz Chaberski 8086 produkowany od 1978 magistrala adresowa - 20 bitów (1 MB) magistrala danych - 16 bitów wielkość instrukcji - od 1 do 6 bajtów częstotliwośc pracy od 5 MHz (IBM

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

Wstęp. Przetwarzanie równoległe. Krzysztof Banaś Obliczenia równoległe 1

Wstęp. Przetwarzanie równoległe. Krzysztof Banaś Obliczenia równoległe 1 Wstęp. Przetwarzanie równoległe. Krzysztof Banaś Obliczenia równoległe 1 Historia i pojęcia wstępne Obliczenia równoległe: dwa lub więcej procesów (wątków) jednocześnie współpracuje (komunikując się wzajemnie)

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

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

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

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O Budowa komputera Magistrala Procesor Pamięć Układy I/O 1 Procesor to CPU (Central Processing Unit) centralny układ elektroniczny realizujący przetwarzanie informacji Zmiana stanu tranzystorów wewnątrz

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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 Wydajność obliczeń Dla wielu programów wydajność obliczeń można traktować jako wydajność pobierania z pamięci

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

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

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

Technologia Informacyjna Wykład II Jak wygląda komputer?

Technologia Informacyjna Wykład II Jak wygląda komputer? Technologia Informacyjna Wykład II Jak wygląda komputer? A. Matuszak 18 października 2010 A. Matuszak Technologia Informacyjna Wykład II Jak wygląda komputer? A. Matuszak (2) Technologia Informacyjna Wykład

Bardziej szczegółowo

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

Programowanie współbieżne Wprowadzenie do programowania GPU. Rafał Skinderowicz Programowanie współbieżne Wprowadzenie do programowania GPU Rafał Skinderowicz Literatura Sanders J., Kandrot E., CUDA w przykładach, Helion. Czech Z., Wprowadzenie do obliczeń równoległych, PWN Ben-Ari

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

Systemy wbudowane. Poziomy abstrakcji projektowania systemów HW/SW. Wykład 9: SystemC modelowanie na różnych poziomach abstrakcji

Systemy wbudowane. Poziomy abstrakcji projektowania systemów HW/SW. Wykład 9: SystemC modelowanie na różnych poziomach abstrakcji Systemy wbudowane Wykład 9: SystemC modelowanie na różnych poziomach abstrakcji Poziomy abstrakcji projektowania systemów HW/SW 12/17/2011 S.Deniziak:Systemy wbudowane 2 1 Model czasu 12/17/2011 S.Deniziak:Systemy

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

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

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

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

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

Instruction Set Instruction Set Extensions Embedded Options Available. Recommended Customer Price TRAY: $999.00

Instruction Set Instruction Set Extensions Embedded Options Available. Recommended Customer Price TRAY: $999.00 Processor Number i7-3960x # of Cores 6 # of Threads 12 Clock Speed 3.3 GHz Max Turbo Frequency 3.9 GHz Intel Smart Cache 15 MB Bus/Core Ratio 33 DMI 5 GT/s Instruction Set 64-bit Instruction Set Extensions

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 Wydajność obliczeń Dla wielu programów wydajność obliczeń można traktować jako wydajność pobierania z pamięci

Bardziej szczegółowo

Podstawy Techniki Mikroprocesorowej wykład 13: MIMD. Dr inż. Jacek Mazurkiewicz Katedra Informatyki Technicznej

Podstawy Techniki Mikroprocesorowej wykład 13: MIMD. Dr inż. Jacek Mazurkiewicz Katedra Informatyki Technicznej Podstawy Techniki Mikroprocesorowej wykład 13: MIMD Dr inż. Jacek Mazurkiewicz Katedra Informatyki Technicznej e-mail: Jacek.Mazurkiewicz@pwr.edu.pl Kompjuter eta jest i klasyfikacja jednostka centralna

Bardziej szczegółowo

Machine Learning for Data Science (CS4786) Lecture11. Random Projections & Canonical Correlation Analysis

Machine Learning for Data Science (CS4786) Lecture11. Random Projections & Canonical Correlation Analysis Machine Learning for Data Science (CS4786) Lecture11 5 Random Projections & Canonical Correlation Analysis The Tall, THE FAT AND THE UGLY n X d The Tall, THE FAT AND THE UGLY d X > n X d n = n d d The

Bardziej szczegółowo

SSW1.1, HFW Fry #20, Zeno #25 Benchmark: Qtr.1. Fry #65, Zeno #67. like

SSW1.1, HFW Fry #20, Zeno #25 Benchmark: Qtr.1. Fry #65, Zeno #67. like SSW1.1, HFW Fry #20, Zeno #25 Benchmark: Qtr.1 I SSW1.1, HFW Fry #65, Zeno #67 Benchmark: Qtr.1 like SSW1.2, HFW Fry #47, Zeno #59 Benchmark: Qtr.1 do SSW1.2, HFW Fry #5, Zeno #4 Benchmark: Qtr.1 to SSW1.2,

Bardziej szczegółowo

Zarządzanie sieciami telekomunikacyjnymi

Zarządzanie sieciami telekomunikacyjnymi SNMP Protocol The Simple Network Management Protocol (SNMP) is an application layer protocol that facilitates the exchange of management information between network devices. It is part of the Transmission

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

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

Rozpoznawanie twarzy metodą PCA Michał Bereta 1. Testowanie statystycznej istotności różnic między jakością klasyfikatorów

Rozpoznawanie twarzy metodą PCA Michał Bereta   1. Testowanie statystycznej istotności różnic między jakością klasyfikatorów Rozpoznawanie twarzy metodą PCA Michał Bereta www.michalbereta.pl 1. Testowanie statystycznej istotności różnic między jakością klasyfikatorów Wiemy, że możemy porównywad klasyfikatory np. za pomocą kroswalidacji.

Bardziej szczegółowo

Maciej Sypniewski. lato 2014, Politechnika Warszawska, Wydział Elektroniki i Technik Informacyjnych

Maciej Sypniewski. lato 2014, Politechnika Warszawska, Wydział Elektroniki i Technik Informacyjnych lato 2014,, Wydział Elektroniki i Technik Informacyjnych SSE, SSE2, SSE3, SSE4, AVX, C++11 threads OpenMP, OpenACC CUDA, OpenCL, C++ AMP 2 Prawo Amdahla Prawo Gustafsona Czy warto zajmować się obliczeniami

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

Przetwarzanie potokowe pipelining

Przetwarzanie potokowe pipelining Przetwarzanie potokowe pipelining (część A) Przypomnienie - implementacja jednocyklowa 4 Add Add PC Address memory ister # isters Address ister # ister # memory Wstęp W implementacjach prezentowanych tydzień

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

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

MS Visual Studio 2005 Team Suite - Performance Tool

MS Visual Studio 2005 Team Suite - Performance Tool MS Visual Studio 2005 Team Suite - Performance Tool przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A 15-351 Białystok Streszczenie: Dokument

Bardziej szczegółowo

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy Wstęp do informatyki Architektura komputera Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki System komputerowy systemowa (System Bus) Pamięć operacyjna ROM,

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

Oprogramowanie na miarę z13

Oprogramowanie na miarę z13 Oprogramowanie na miarę z13 Sebastian Milej, Zespół Oprogramowania Mainframe 11 lutego 2015 IBM z Systems to rozwiązanie kompletne Analytics Clo ud Securit y Mobile Socia l Technologia półprzewodników

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

LCD (Liquid Crystal Display)

LCD (Liquid Crystal Display) LCD (Liquid Crystal Display) Polarizing filter. Thin film with a vertical ais. Liquid crystal Polarizing filter. Thin film with a horizontal ais. Polarizing filter. Thin film with a horizontal ais. Polarizing

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

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

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

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 2010/2011 Wykład nr 6 (06.05.2011) Rok akademicki 2010/2011, Wykład

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

Magistrala systemowa (System Bus)

Magistrala systemowa (System Bus) Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki systemowa (System Bus) Pamięć operacyjna ROM, RAM Jednostka centralna Układy we/wy In/Out Wstęp do Informatyki

Bardziej szczegółowo

Architektura komputerów, Informatyka, sem.iii. Rozwiązywanie konfliktów danych i sterowania w architekturze potokowej

Architektura komputerów, Informatyka, sem.iii. Rozwiązywanie konfliktów danych i sterowania w architekturze potokowej Rozwiązywanie konfliktów danych i sterowania w architekturze potokowej Konflikty w przetwarzaniu potokowym Konflikt danych Data Hazard Wstrzymywanie kolejki Pipeline Stall Optymalizacja kodu (metody programowe)

Bardziej szczegółowo

Procesory kart graficznych i CUDA wer 1.2 6.05.2015

Procesory kart graficznych i CUDA wer 1.2 6.05.2015 wer 1.2 6.05.2015 Litreratura: CUDA textbook by David Kirk from NVIDIA and Prof. Wen-mei Hwu from UIUC. CUDA w przykładach. Wprowadzenie do ogólnego programowania procesorów GP, J.Sanders, E.Kandrot, Helion

Bardziej szczegółowo

System obliczeniowy laboratorium oraz. mnożenia macierzy

System obliczeniowy laboratorium oraz. mnożenia macierzy System obliczeniowy laboratorium.7. oraz przykładowe wyniki efektywności mnożenia macierzy opracował: Rafał Walkowiak Materiały dla studentów informatyki studia niestacjonarne październik 1 SYSTEMY DLA

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

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

ERASMUS + : Trail of extinct and active volcanoes, earthquakes through Europe. SURVEY TO STUDENTS.

ERASMUS + : Trail of extinct and active volcanoes, earthquakes through Europe. SURVEY TO STUDENTS. ERASMUS + : Trail of extinct and active volcanoes, earthquakes through Europe. SURVEY TO STUDENTS. Strona 1 1. Please give one answer. I am: Students involved in project 69% 18 Student not involved in

Bardziej szczegółowo

3.Przeglądarchitektur

3.Przeglądarchitektur Materiały do wykładu 3.Przeglądarchitektur Marcin Peczarski Instytut Informatyki Uniwersytet Warszawski 24 stycznia 2009 Architektura a organizacja komputera 3.1 Architektura komputera: atrybuty widzialne

Bardziej szczegółowo

Realizacja systemów wbudowanych (embeded systems) w strukturach PSoC (Programmable System on Chip)

Realizacja systemów wbudowanych (embeded systems) w strukturach PSoC (Programmable System on Chip) Realizacja systemów wbudowanych (embeded systems) w strukturach PSoC (Programmable System on Chip) Embeded systems Architektura układów PSoC (Cypress) Możliwości bloków cyfrowych i analogowych Narzędzia

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

COMPUTER ORGANIZATION AND DESIGN The Hardware/Software Interface. Wprowadzenie do systemów wieloprocesorowych

COMPUTER ORGANIZATION AND DESIGN The Hardware/Software Interface. Wprowadzenie do systemów wieloprocesorowych COMPUTER ORGANIZATION AND DESIGN The Hardware/Software Interface Wprowadzenie do systemów wieloprocesorowych Wstęp Do tej pory mówiliśmy głównie o systemach z jednym procesorem Coraz trudniej wycisnąć

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

Macierze All Flash. Czy to jest alternatywa dla macierzy klasy Enterprise? Krzysztof Jamiołkowski HP EG Storage Solutions Architect

Macierze All Flash. Czy to jest alternatywa dla macierzy klasy Enterprise? Krzysztof Jamiołkowski HP EG Storage Solutions Architect Innowacje w przetwarzaniu danych Macierze All Flash Czy to jest alternatywa dla macierzy klasy Enterprise? Krzysztof Jamiołkowski HP EG Storage Solutions Architect Definicja macierzy Enterprise Cechy charakterystyczne

Bardziej szczegółowo

Architektury Komputerów. Tomasz Dziubich p.530, konsultacje czwartek. 9-10 i 11-12, dziubich@eti.pg.gda.pl

Architektury Komputerów. Tomasz Dziubich p.530, konsultacje czwartek. 9-10 i 11-12, dziubich@eti.pg.gda.pl Architektury Komputerów Tomasz Dziubich p.530, konsultacje czwartek. 9-10 i 11-12, dziubich@eti.pg.gda.pl Urządzenia przetwarzające zwane komputerami - kiedyś EDSAC, University of Cambridge, UK, 1949 i

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

CUDA. obliczenia na kartach graficznych. Łukasz Ligowski. 11 luty Łukasz Ligowski () CUDA 11 luty / 36

CUDA. obliczenia na kartach graficznych. Łukasz Ligowski. 11 luty Łukasz Ligowski () CUDA 11 luty / 36 CUDA obliczenia na kartach graficznych Łukasz Ligowski 11 luty 2008 Łukasz Ligowski () CUDA 11 luty 2008 1 / 36 Plan 1 Ogólne wrażenia 2 Obliczenia na kartach - wstęp 3 Wprowadzenie 4 CUDA Łukasz Ligowski

Bardziej szczegółowo

Hard-Margin Support Vector Machines

Hard-Margin Support Vector Machines Hard-Margin Support Vector Machines aaacaxicbzdlssnafiyn9vbjlepk3ay2gicupasvu4iblxuaw2hjmuwn7ddjjmxm1bkcg1/fjqsvt76fo9/gazqfvn8y+pjpozw5vx8zkpvtfxmlhcwl5zxyqrm2vrg5zw3vxmsoezi4ogkr6phieky5crvvjhriqvdom9l2xxftevuwcekj3lktmhghgniauiyutvrwxtvme34a77kbvg73gtygpjsrfati1+xc8c84bvraowbf+uwnipyehcvmkjrdx46vlykhkgykm3ujjdhcyzqkxy0chur6ax5cbg+1m4bbjptjcubuz4kuhvjoql93hkin5hxtav5x6yyqopnsyuneey5ni4keqrxbar5wqaxbik00icyo/iveiyqqvjo1u4fgzj/8f9x67bzmxnurjzmijtlybwfgcdjgfdtajwgcf2dwaj7ac3g1ho1n4814n7wwjgjmf/ys8fenfycuzq==

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Tydzień 9 Pamięć operacyjna Właściwości pamięci Położenie Pojemność Jednostka transferu Sposób dostępu Wydajność Rodzaj fizyczny Własności fizyczne Organizacja Położenie pamięci

Bardziej szczegółowo

Helena Boguta, klasa 8W, rok szkolny 2018/2019

Helena Boguta, klasa 8W, rok szkolny 2018/2019 Poniższy zbiór zadań został wykonany w ramach projektu Mazowiecki program stypendialny dla uczniów szczególnie uzdolnionych - najlepsza inwestycja w człowieka w roku szkolnym 2018/2019. Składają się na

Bardziej szczegółowo

Architektura potokowa RISC

Architektura potokowa RISC Architektura potokowa RISC Podział zadania na odrębne części i niezależny sprzęt szeregowe Brak nawrotów" podczas pracy potokowe Przetwarzanie szeregowe i potokowe Podział instrukcji na fazy wykonania

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

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

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

Zakopane, plan miasta: Skala ok. 1: = City map (Polish Edition)

Zakopane, plan miasta: Skala ok. 1: = City map (Polish Edition) Zakopane, plan miasta: Skala ok. 1:15 000 = City map (Polish Edition) Click here if your download doesn"t start automatically Zakopane, plan miasta: Skala ok. 1:15 000 = City map (Polish Edition) Zakopane,

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

LEKCJA TEMAT: Współczesne procesory.

LEKCJA TEMAT: Współczesne procesory. LEKCJA TEMAT: Współczesne procesory. 1. Wymagania dla ucznia: zna pojęcia: procesor, CPU, ALU, potrafi podać typowe rozkazy; potrafi omówić uproszczony i rozszerzony schemat mikroprocesora; potraf omówić

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

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek Wstęp do informatyki Architektura komputera Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki System komputerowy systemowa (System Bus) Pamięć operacyjna ROM,

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

Larrabee GPGPU. Zastosowanie, wydajność i porównanie z innymi układami

Larrabee GPGPU. Zastosowanie, wydajność i porównanie z innymi układami Larrabee GPGPU Zastosowanie, wydajność i porównanie z innymi układami Larrabee a inne GPU Różnią się w trzech podstawowych aspektach: Larrabee a inne GPU Różnią się w trzech podstawowych aspektach: Larrabee

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