Akceleracja sprzętowa symulacji elektromagnetycznych. graficznych (GPU)

Podobne dokumenty
Tesla. Architektura Fermi

i3: internet - infrastruktury - innowacje

Programowanie procesorów graficznych GPGPU

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

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

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

Przetwarzanie Równoległe i Rozproszone

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

Karta graficzna karta rozszerzeo odpowiedzialna generowanie sygnału graficznego dla ekranu monitora. Podstawowym zadaniem karty graficznej jest

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

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

Karty graficzne możemy podzielić na:

Przegląd architektury PlayStation 3

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

Architektura von Neumanna

Programowanie Współbieżne

OpenGL - Open Graphics Library. Programowanie grafiki komputerowej. OpenGL 3.0. OpenGL - Architektura (1)

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

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

dr inż. Jarosław Forenc

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

PROJEKTOWANIE SYSTEMÓW KOMPUTEROWYCH

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

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

Praca dyplomowa magisterska

Przyspieszanie sprzętowe

Moc płynąca z kart graficznych

Architektura Systemów Komputerowych. Rozwój architektury komputerów klasy PC

Grafika komputerowa i wizualizacja

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

CZYM JEST KARTA GRAFICZNA.

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

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

Implementacja metody momentów z wykorzystaniem kart graficznych i architektury CUDA

Algorytmy i Struktury Danych

Programowanie w modelu równoległości danych oraz dzielonej globalnej pamięci wspólnej. Krzysztof Banaś Obliczenia równoległe 1

Sprawdzian test egzaminacyjny GRUPA I

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

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

Podręcznik użytkownika PCI-x Karta przechwytująca 4xHDMI

Wykorzystanie architektury Intel MIC w obliczeniach typu stencil

Programowanie kart graficznych

Implementacja sieci neuronowych na karcie graficznej. Waldemar Pawlaszek

Organizacja pamięci w procesorach graficznych

Karty graficzne: budowa, zasada działania, standardy, parametry, dodatkowe funkcje

Plan wykładu. Akcelerator 3D Potok graficzny

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

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

Karta przedmiotu. Podstawy programowania procesorów graficznych. realizowanego w ramach projektu PO WER

Programowanie kart graficznych

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

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

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

Budowa i zasada działania komputera. dr Artur Bartoszewski

CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu

Architektura Komputerów

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

Budowa Mikrokomputera

Obliczenia Wysokiej Wydajności

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

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

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

Odwzorowanie procedur całkowania numerycznego w metodzie elementów skończonych na architektury procesorów masowo wielordzeniowych

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

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

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

System komputerowy. System komputerowy

dr inż. Jarosław Forenc

Programowanie aplikacji równoległych i rozproszonych

Ogólne informacje. cią pracy, wielkości wyświetlan. cią obrazu, wietlaną rozdzielczości. częstotliwo. wieŝania obrazu.

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

Magistrala systemowa (System Bus)

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

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

dr inż. Jarosław Forenc

Mikroinformatyka. Koprocesory arytmetyczne 8087, 80187, 80287, i387

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 do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

INŻYNIERIA OPROGRAMOWANIA

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

Wprowadzenie do programowania w środowisku CUDA. Środowisko CUDA

Budowa komputera Komputer computer computare

Systemy na Chipie. Robert Czerwiński

Wykład 6. Mikrokontrolery z rdzeniem ARM

Klaster obliczeniowy

Procesory. Schemat budowy procesora

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

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

Metody optymalizacji soft-procesorów NIOS

Grafika komputerowa. Grafika komputerowa. Grafika komputerowa

LEKCJA TEMAT: Współczesne procesory.

Nowinki technologiczne procesorów

Podstawy Informatyki Systemy sterowane przepływem argumentów

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

16. Taksonomia Flynn'a.

PRACA DYPLOMOWA INŻYNIERSKA. Rafał Karolewski. Rok akademicki 2011/2012

Technika mikroprocesorowa

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

Obliczenia Wysokiej Wydajności

Mechatronika i inteligentne systemy produkcyjne. Modelowanie systemów mechatronicznych Platformy przetwarzania danych

Transkrypt:

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 IEEE EMC-s, Wrocław, 13 czerwca 2013 Plan prezentacji Motywacja Potok graficzny Architektura GPU Model programistyczny CUDA Metoda momentów Przykłady obliczeniowe Podsumowanie 2

Motywacja Metody pełnofalowe wykorzystywane do rozwiązywania zadań elektromagnetyzmu obliczeniowego (CEM) angażują bardzo duże zasoby komputerowe (pamięć RAM, czas obliczeń) Współczesne karty graficzne dysponują ogromną mocą obliczeniową, która może zostać wykorzystana do realizacji zadań CEM Moc obliczeniowa kart graficznych jest obecnie stosunkowo łatwo dostępna 3

Posiedzenie Polskiego Chapteru IEEE EMC-s, Wrocław, 13 czerwca 2013 Motywacja Moc obliczeniowa kart graficznych 4

Posiedzenie Polskiego Chapteru IEEE EMC-s, Wrocław, 13 czerwca 2013 Cel prowadzonych prac Przystosowanie istniejących kodów numerycznych implementujących metody CEM do wykonania w heterogenicznym środowisku obliczeniowym CPU/GPU Określenie efektywności obliczeniowej zmodyfikowanych algorytmów 5

Przetwarzanie Przetwarzanie wierzchołków wierzchołków Tworzenie Tworzenie geometrii geometrii (triangularyzacja) (triangularyzacja) Potok graficzny Rasteryzacja Rasteryzacja Rendering Obróbka Obróbka obrazu obrazu poddanego poddanego rasteryzacji rasteryzacji Kształtowanie Kształtowanie danych danych bufora bufora ramki ramki Vetrtex Vetrtex transforms transforms Primitive Primitive assembly assembly Rasterization Rasterization Raster Raster operations operations Frame Frame buffer buffer 6

Potok graficzny Systemy wyświetlania rastrowego (tworzenie obrazu w technologii VGA i SVGA Krok 1: Procesor przesyła przetworzony obraz wideo do karty graficznej (zajmuje się on m.in. : przetwarzaniem wierzchołków, dokonuje traingularyzacji oraz przeprowadza rendering) Krok 2: Przetworzony, cyfrowy sygnał wideo przesłany zostaje do karty graficznej Krok 3 Krok 4: Analogowy sygnał wideo (z wyodrębnionymi trzema składowymi koloru R, G i B) przesłany zostaje do monitora Przesłane dane zostają zapisane w pamięci karty. Przetwornik cyfrowoanalogowy DAC przetwarza cyfrowy sygnał obrazu na sygnał analogowy obrazu Krok 5: Trzy niezależne działa elektronowe emitują strumienie elektronów, które bombardują ekran monitora Krok 6 Dochodzi do pobudzenia luminoforów monitora i na ekranie wyświetlony zostaje obraz 7

Potok graficzny Systemy wyświetlania rastrowego (tworzenie obrazu w technologii VGA i SVGA Krok 1: Procesor przesyła przetworzony obraz wideo do karty graficznej (zajmuje się on m.in. : przetwarzaniem wierzchołków, dokonuje traingularyzacji oraz przeprowadza rendering) Krok 2: Przetworzony, cyfrowy sygnał wideo przesłany zostaje do karty graficznej Krok 3 Krok 4: Analogowy sygnał wideo (z wyodrębnionymi trzema składowymi koloru R, G i B) przesłany zostaje do monitora Przesłane dane zostają zapisane w pamięci karty. Przetwornik cyfrowoanalogowy DAC przetwarza cyfrowy sygnał obrazu na sygnał analogowy obrazu Krok 5: Trzy niezależne działa elektronowe emitują strumienie elektronów, które bombardują ekran monitora Zauważmy, że karty graficzne oparte na technologii VGS i SVGA nie uczestniczyły w żaden sposób w tworzeniu treści obrazu Krok 6 Dochodzi do pobudzenia luminoforów monitora i na ekranie wyświetlony zostaje obraz 8

Potok graficzny Systemy wyświetlania rastrowego (tworzenie obrazu w technologii VGA i SVGA Krok 2: Przetworzony, cyfrowy sygnał wideo przesłany zostaje do karty Krok 4: Analogowy sygnał wideo (z wyodrębnionymi trzema składowymi koloru R, G i B) przesłany zostaje do monitora Krok 1: graficznej Procesor przesyła przetworzony obraz wideo do karty graficznej (zajmuje się on m.in. : przetwarzaniem wierzchołków, dokonuje train- Przesłane dane zostają zapisane w tworzeniem i zmianami Krok 3treści obrazu gularyzacji oraz pamięci karty. Przetwornik cyfrowoanalogowy DAC przetwarza cyfro- przeprowadza renderingwy sygnał obrazu na sygnał analogowy obrazu Krok 5: Trzy niezależne działa elektronowe emitują strumienie elektronów, które bombardują ekran monitora Zauważmy, że karty graficzne oparte na technologii VGS i SVGA nie uczestniczyły w żaden sposób w tworzeniu treści obrazu Pojawienie się graficznego interfejsu użytkownika GUI (system operacyjny Windows, OS/2) spowodowało znaczący wzrost ilości przetwarzanych informacji graficznych, co przełożyło się na: duże obciążenie procesora głównego obliczeniami Krok związanymi 6 Dochodzi do pobudzenia luminoforów monitora i na konieczność przesyłania dużej ilości informacji poprzez ekranie wyświetlony magis- zostaje obraz tralę łączącą procesor główny z pamięcią wideo karty graficznej 9

Potok graficzny Systemy wyświetlania rastrowego (tworzenie obrazu w technologii VGA i SVGA Krok 1: Procesor przesyła przetworzony obraz wideo do karty graficznej (zajmuje się on m.in. : przetwarzaniem wierzchołków, dokonuje traingularyzacji oraz przeprowadza rendering) Przetworzony, cyfrowy sygnał wideo przesłany zostaje do karty graficznej Krok 3 Krok 4: Analogowy sygnał wideo (z wyodrębnionymi trzema składowymi koloru R, G i B) przesłany zostaje do monitora Przesłane dane zostają zapisane w pamięci karty. Przetwornik cyfrowoanalogowy DAC przetwarza cyfrowy sygnał obrazu na sygnał analogowy obrazu Krok 5: Trzy niezależne działa elektronowe emitują strumienie elektronów, które bombardują ekran monitora Jedynym rozsądnym sposobem pozwalającym zmniejszyć obciążenie procesora głównego oraz magistrali danych było przekazanie części uprawnień do tworzenia obrazu bezpośrednio karcie Krok 2: graficznej. Krok 6 Dochodzi do pobudzenia luminoforów monitora i na ekranie wyświetlony zostaje obraz 10

Potok graficzny Systemy wyświetlania rastrowego (tworzenie obrazu w technologii VGA i SVGA Krok 4: Analogowy sygnał wideo (z wyodrębnionymi trzema składowymi koloru R, Krok 2: G i B) przesłany zostaje Przetworzony, do monitora graficznej. cyfrowy sygnał wideo przesłany zostaje do karty Krok 1: graficznej Procesor przesyła przetworzony obraz wideo do karty graficznej i (zajmuje koprocesorowych. się on m.in. : przetwarzaniem wierzchołków, dokonuje train- Przesłane dane zostają zapisane w Krok 3 gularyzacji oraz pamięci karty. Przetwornik cyfrowoanalogowy DAC przetwarza cyfro- przeprowadza renderingwy sygnał obrazu na sygnał analogowy obrazu Krok 5: Trzy niezależne działa elektronowe emitują strumienie elektronów, które bombardują ekran monitora Jedynym rozsądnym sposobem pozwalającym zmniejszyć obciążenie procesora głównego oraz magistrali danych było przekazanie części uprawnień do tworzenia obrazu bezpośrednio karcie Efektem tych spostrzeżeń było powstanie kart akceleratorowych Krok 6 Dochodzi do pobudzenia luminoforów monitora i na ekranie wyświetlony zostaje obraz 11

Posiedzenie Polskiego Chapteru IEEE EMC-s, Wrocław, 13 czerwca 2013 Potok graficzny Koprocesory graficzne i akceleratory graficzne Karta akceleratorowa Karta koprocesorowa 12

Potok graficzny Karty graficzne generacji 0 do początku lat 90-tych XX-go wieku Przetwarzanie Przetwarzanie wierzchołków wierzchołków Tworzenie Tworzenie geometrii geometrii (triangularyzacja) (triangularyzacja) Rasteryzacja Rasteryzacja Karty graficzne generacji I lata 1994 1998 Przetwarzanie Przetwarzanie wierzchołków wierzchołków Tworzenie Tworzenie geometrii geometrii (triangularyzacja) (triangularyzacja) CPU Rasteryzacja Rasteryzacja Obróbka Obróbka obrazu obrazu poddanego poddanego rasteryzacji rasteryzacji Obróbka Obróbka obrazu obrazu poddanego poddanego rasteryzacji rasteryzacji Kształtowanie Kształtowanie danych danych bufora bufora ramki ramki Kształtowanie Kształtowanie danych bufora danych bufora ramki ramki CPU PCI GPU 13

Potok graficzny Karty graficzne generacji II lata 1999 2001 AGP Przetwarzanie Przetwarzanie wierzchołków wierzchołków Tworzenie Tworzenie geometrii geometrii (triangularyzacja) (triangularyzacja) Rasteryzacja Rasteryzacja GPU Obróbka Obróbka obrazu obrazu poddanego poddanego rasteryzacji rasteryzacji Kształtowanie Kształtowanie danych danych bufora bufora ramki ramki 14

Potok graficzny Karty graficzne generacji II lata 1999 2001 AGP Przetwarzanie Przetwarzanie wierzchołków wierzchołków Tworzenie Tworzenie geometrii geometrii (triangularyzacja) (triangularyzacja) Rasteryzacja Rasteryzacja GPU Obróbka Obróbka obrazu obrazu poddanego poddanego rasteryzacji rasteryzacji Jednostka T&L Kształtowanie Kształtowanie danych danych bufora bufora ramki ramki 15

Potok graficzny Karty graficzne generacji II lata 1999 2001 AGP Przetwarzanie Przetwarzanie wierzchołków wierzchołków Tworzenie Tworzenie geometrii geometrii (triangularyzacja) (triangularyzacja) Rasteryzacja Rasteryzacja GPU Karty graficzne generacji III lata 2001 2002 Przetwarzanie Przetwarzanie wierzchołków wierzchołków Tworzenie Tworzenie geometrii geometrii (triangularyzacja) (triangularyzacja) Rasteryzacja Rasteryzacja Obróbka Obróbka obrazu obrazu poddanego poddanego rasteryzacji rasteryzacji Jednostka T&L Obróbka Obróbka obrazu obrazu poddanego poddanego rasteryzacji rasteryzacji Kształtowanie Kształtowanie danych danych bufora bufora ramki ramki Kształtowanie Kształtowanie danych danych bufora bufora ramki ramki Programowalny Programowalny układ układ cieniowania cieniowania wierzchołków wierzchołków AGP 16 GPU

Potok graficzny Karty graficzne generacji II lata 1999 2001 AGP Przetwarzanie Przetwarzanie wierzchołków wierzchołków Tworzenie Tworzenie geometrii geometrii (triangularyzacja) (triangularyzacja) Rasteryzacja Rasteryzacja GPU Karty graficzne generacji III lata 2001 2002 Przetwarzanie Przetwarzanie wierzchołków wierzchołków Vertex Shader Tworzenie Tworzenie geometrii geometrii (triangularyzacja) (triangularyzacja) Rasteryzacja Rasteryzacja Obróbka Obróbka obrazu obrazu poddanego poddanego rasteryzacji rasteryzacji Jednostka T&L Pixel Shader Obróbka Obróbka obrazu obrazu poddanego poddanego rasteryzacji rasteryzacji Kształtowanie Kształtowanie danych danych bufora bufora ramki ramki Kształtowanie Kształtowanie danych danych bufora bufora ramki ramki Programowalny Programowalny układ układ cieniowania cieniowania wierzchołków wierzchołków AGP 17 GPU

Potok graficzny Karty graficzne generacji IV lata 2003 2004 AGP Przetwarzanie Przetwarzanie wierzchołków wierzchołków Tworzenie Tworzenie geometrii geometrii (triangularyzacja) (triangularyzacja) Programowalny Programowalny układ układ cieniowania cieniowania wierzchołków wierzchołków Rasteryzacja Rasteryzacja GPU Programowalny Programowalny układ układ cieniowania cieniowania pikseli pikseli Obróbka Obróbka obrazu obrazu poddanego poddanego rasteryzacji rasteryzacji Kształtowanie Kształtowanie danych danych bufora bufora ramki ramki Pamięć Pamięć tekstur tekstur 18

Potok graficzny Karty graficzne generacji IV lata 2003 2004 AGP Przetwarzanie Przetwarzanie wierzchołków wierzchołków Tworzenie Tworzenie geometrii geometrii (triangularyzacja) (triangularyzacja) Programowalny Programowalny układ układ cieniowania cieniowania wierzchołków wierzchołków Vertex Shader Rasteryzacja Rasteryzacja GPU Programowalny Programowalny układ układ cieniowania cieniowania pikseli pikseli Pixel Shader Obróbka Obróbka obrazu obrazu poddanego poddanego rasteryzacji rasteryzacji Kształtowanie Kształtowanie danych danych bufora bufora ramki ramki Pamięć Pamięć tekstur tekstur 19

Potok graficzny Karty graficzne generacji IV.5 (cztery i pół) lata 2005 2006 AGP Przetwarzanie Przetwarzanie wierzchołków wierzchołków Tworzenie Tworzenie geometrii geometrii (triangularyzacja) (triangularyzacja) Programowalny Programowalny układ układ cieniowania cieniowania wierzchołków wierzchołków Pamięć tekstur Pamięć tekstur Rasteryzacja Rasteryzacja GPU Programowalny Programowalny układ układ cieniowania cieniowania pikseli pikseli Obróbka Obróbka obrazu obrazu poddanego poddanego rasteryzacji rasteryzacji Pamięć tekstur Pamięć tekstur Kształtowanie Kształtowanie danych danych bufora bufora ramki ramki 20

Potok graficzny Karty graficzne generacji IV.5 (cztery i pół) lata 2005 2006 AGP Przetwarzanie Przetwarzanie wierzchołków wierzchołków Tworzenie Tworzenie geometrii geometrii (triangularyzacja) (triangularyzacja) Programowalny Programowalny układ układ cieniowania cieniowania wierzchołków wierzchołków Vertex Shader Pamięć tekstur Pamięć tekstur Rasteryzacja Rasteryzacja GPU Programowalny Programowalny układ układ cieniowania cieniowania pikseli pikseli Pixel Shader Obróbka Obróbka obrazu obrazu poddanego poddanego rasteryzacji rasteryzacji Pamięć tekstur Pamięć tekstur Kształtowanie Kształtowanie danych danych bufora bufora ramki ramki 21

Potok graficzny Karty graficzne generacji V od roku 2006 do chwili obecnej Programowalny Programowalny Programowalny Dane Programowalny Programowalny Programowalny Dane układ układ cieniowania układ Rasteryzacja cieniowa- układ układ cieniowania wejściowe geomeryzacja cieniowa- cieniowania cieniowania Raste- układ wejściowchołków wierz- wierzchołków geometrycznegninia pikseli trycznego pikseli PCI-E GPU Agregacja Agregacja i i przesył przesył danych danych wyjściowych wyjściowych 22

Potok graficzny Karty graficzne generacji V od roku 2006 do chwili obecnej Programowalny Programowalny Programowalny Agregacja Dane Programowalny Programowalny Programowalny Agregacja Dane układ i i przesył układ cieniowaniryzacja cieniowa- danych układ Raste- układ układ cieniowania wejściowe wierz- geomeryzacja cieniowa- wyj- cieniowania cieniowania Raste- układ przesył wejściowchołkótrycznegniściowych danych wyj- wierz- geomechołkónia pikseli trycznego pikseli ściowych Programowalny potok graficzny PCI-E GPU 23

Potok graficzny Karty graficzne generacji V od roku 2006 do chwili obecnej Agregacja Dane Agregacja Dane Programowalne i i przesył Programowalne zunifikowane zunifikowane jednostki jednostki cieniujące wejściowe unified shaders) wyj- cieniujące przesył wejściowściowych (ang. danych danych wyj- (ang. programmable programmable unified shaders) ściowych Programowalny potok graficzny PCI-E GPU Wprowadzenie zunifikowanych jednostek cieniowania (unified shaders) Pełne wsparcie dla obliczeń ogólnego przeznaczenia GPGPU 24

Architektura GPU Uwaga: Chcąc wykonywać obliczenia ogólnego przeznaczenia GPGPU na kartach graficznych, należy upewnić się, czy karta wyposażona jest w technologię CUDA lub ATI/AMD Stream Na opakowaniu kart graficznych należy więc poszukiwać jednego z prezentowanych logo. 25

Architektura GPU G80 G80 NVIDIA NVIDIA GT200 GT200 NVIDIA NVIDIA RV670 RV670 ATI ATI RV770 RV770 ATI/AMD ATI/AMD Architektura Architektura I-szej I-szej generacji generacji Architektura Architektura II-giej II-giej generacji generacji GF100 GF100 (Fermi) (Fermi) NVIDIA NVIDIA RV870 RV870 (Cypress) (Cypress) AMD AMD Architektura Architektura III-ciej III-ciej generacji generacji GK104 GK104 (Kepler) (Kepler) NVIDIA NVIDIA Maxwell Maxwell NVIDIA NVIDIA Cayman Cayman AMD AMD Tahiti Tahiti AMD AMD Architektura Architektura IV-tej IV-tej generacji generacji Architektura Architektura V-tej V-tej generacji generacji Karty graficzne V-tej generacji 26

Architektura GPU Procesor graficzny NVIDIA GK104 (Kepler) z technologią CUDA Podstawowym elementem architektury GK104 jest procesor strumieniowy SP, SPU (ang. Streaming Processor, Streaming Processor Unit) zwany również CUDA Core Procesor strumieniowy SP składa się z jednej 32-bitowej jednostki arytmetyczno-logicznej ALU (operacje na liczbach całkowitych) oraz jednej 64- bitowej jednostki zmiennoprzecinkowej FPU działającej z pojedynczą i podwójną precyzją Jednostki ALU i FPU nie mogą wykonywać obliczeń jednocześnie Core 27

Architektura GPU Procesor graficzny NVIDIA GK104 (Kepler) z technologią CUDA 192 procesory strumieniowe tworzą jeden multiprocesor strumieniowy SMX (ang. Streaming Multiprocessor) W skład SMX wchodzą także: 32 jednostki specjalne SFU (ang. Special Function Unit) do obliczania funkcji trygonometrycznych, wykładniczych i logarytmicznych 32 jednostki LD/ST (ang. Load/ Store Unit) ułatwiające zarządzanie adresami źródłowymi i docelowymi Pamięć współdzielona (ang. shared memory) 64kB Pamięć podręczna instrukcji (I Cache) 32kB Pamięć podręczna danych (Uniform Cache) 8 jednostek sterujących DU (ang. Dispatch Unit) 65536 rejestry 32-bitowe 28

Architektura GPU Procesor graficzny NVIDIA GK104 (Kepler) z technologią CUDA 2 multiprocesory strumieniowe SMX tworzą razem klaster GPC (ang. Graphics Processing Cluster) Klaster GPC zawiera dodatkowo: Jeden skalowalny silnik rastrujący (ang. Raster Engine) Dwa silniki polimorficzne (ang. Polymorph Engines) 32 jednostki teksturujące TU (ang. Texture Units) Pamięć podręczną tekstur TC (ang. Texture Cach) dwa bloki po jeden na każdy SMX o pojemności 32 kb 29

Architektura GPU Procesor graficzny NVIDIA GK104 (Kepler) z technologią CUDA 4 klastry GPC tworzy macierz procesorów strumieniowych SPA (ang. Streaming Processor Array) 1 GPU = 4 GPC 1 GPU = 8 SMX 1 GPU = 1536 SP 30

Architektura GPU Procesor graficzny NVIDIA GK104 (Kepler) z technologią CUDA Karta graficzna GeForce GTX 680 31

Architektura GPU Procesor graficzny NVIDIA GK110 (Kepler) z technologią CUDA 192 procesory strumieniowe tworzą jeden multiprocesor strumieniowy SMX (ang. Streaming Multiprocessor) W skład SMX wchodzą także: Pamięć współdzielona (ang. shared memory) 64kB Pamięć podręczna instrukcji (I Cache) Pamięć podręczna danych (Read-Only Data Cache) 48 kb 8 jednostek sterujących DU (ang. Dispatch Unit) 65536 rejestry 32-bitowe Brak silników sprzętowych wspmagających tworzenie grafiki (Raster Polymorph Engine) 32

Architektura GPU Procesor graficzny NVIDIA GK110 (Kepler) z technologią CUDA 192 procesory strumieniowe tworzą jeden multiprocesor strumieniowy SMX (ang. Streaming Multiprocessor) W skład SMX wchodzą także: 32 jednostki specjalne SFU (ang. Special Function Unit) do obliczania funkcji trygonometrycznych, wykładniczych i logarytmicznych 32 jednostki LD/ST (ang. Load/ Store Unit) ułatwiające zarządzanie adresami źródłowymi i docelowymi 64 jednostki DP (ang. Double Precision) zwiększające efektywność wykonywania operacji zmiennoprzecinkowych na liczbach podwójnej precyzji 33

Architektura GPU Procesor graficzny NVIDIA GK110 (Kepler) z technologią CUDA 1 GPU = 2880 SP, 1 GPU = 15 SMX, 1 SMX = 192 SP 34

Architektura GPU Procesor graficzny NVIDIA GK110 (Kepler) z technologią CUDA Akcelerator graficzny Tesla K20 35

Architektura GPU Procesor graficzny AMD Tahiti z technologią GCN (ang. Graphics Core Next) Podstawowym elementem architektury Tahiti jest jednostka arytmetyczno-logiczna ALU nazywana przez producenta procesorem strumieniowym SPU (ang. Streaming Processor Unit) Jednostki arytmetyczno-logiczne ALU wykonują operacje na liczbach całkowitych i zmiennoprzecinkowych zarówno pojedynczej jak i podwójnej precyzji ALU 36

Architektura GPU Procesor graficzny AMD Tahiti z technologią GCN (ang. Graphics Core Next) 16 jednostek ALU wraz z 64 kb rejestrem wykorzystywanym do przechowywania danych tworzy jeden rdzeń GCN SIMD (ang. Graphics Core Next SIMD) ALU 37

Architektura GPU Procesor graficzny AMD Tahiti z technologią GCN (ang. Graphics Core Next) 4 rdzenie GCN SIMD (16-wide Vector SIMD) tworzą tzw. jednostki obliczeniowe CU (ang. Compute Unit) 38

Architektura GPU Procesor graficzny AMD Tahiti z technologią GCN (ang. Graphics Core Next) Karta graficzna Radeon HD7970 39

Porównanie 40 Architektura GPU Pod względem oferowanej mocy obliczeniowej obydwa konkurencyjne rozwiązania wypadają podobnie Jeśli chodzi o cenę to karty graficzne firmy AMD są tańsze Jeśli chodzi o ilość oraz dostępność narzędzi programistycznych oraz liczbę powstałych apaplikacji to palmę pierwszeństwa należy oddać firmie NVIDIA

Architektura GPU - cechy Możliwość jednoczesnego wykonywania funkcji jądra i kopiowania danych z i do pamięci graficznej (ang. overlapping) 2-way overlapping 3-way overlapping 41

Architektura GPU - cechy Możliwość współbieżnego wykonywania kilku różnych funkcji jądra (ang. concurrent kernel execution) Sekwencyjne wykonywanie kilku różnych funkcji jądra Współbieżne wykonywanie kilku różnych funkcji jądra 42

Architektura GPU - cechy Pełne wsparcie dla standardu zapisu danych IEEE-754 znak bity kodu cechy bity ułamkowe mantysy Definicja formatu zmiennoprzecinkowego float 1 8 23 Zakres: - 3.4 10 38... 3.4 10 38 double 1 11 52 Zakres: - 1.8 10 308... 1.8 10 308 Wartości zdenormalizowane, wartości specjalne: QNaN, SNaN 43

Model programistyczny CUDA Technologia CUDA (ang. Compute Unified Device Architecture) to dziś: Uniwersalna architektura sprzętowo-programistyczna masowo równoległych, masowo wielordzeniowych procesorów (graficznych) firmy NVIDIA oraz Specjalny model programistyczny obejmujący: Specjalny interfejs programowania aplikacji Specjalny model pamięci Język wysokiego poziomu oparty na C, F95 Dedykowany kompilator (NVCC, PGI Fortran) 44

Model programistyczny CUDA Model przepływu danych 45

Model programistyczny CUDA Schemat wywołania funkcji jądra Kod jądra wykonywany jest jako krata wątków (ang. grid) Krata wątków dzieli się na bloki (ang. block of threads ), a każdy z bloków dzieli się na wątki (ang. threads) Zarówno krata jak i bloki wątków mogą mieć strukturę tablicy jedno-, dwu- lub trójwymiarowej Taki sposób podziału wątków ułatwia organizację obliczeń prowadzonych na procesorach strumieniowych 46

Model programistyczny CUDA Hierarchia wątków Każdy z wywołanych wątków jest wykonywany przez jeden procesor strumieniowy SP Wątki zgrupowane w bloki wątków są wykonywane współbieżnie na multiprocesorze strumieniowym SMX W zależności od dostępnych zasobów sprzętowych na jednym multiprocesorze strumieniowym SMX może być wykonywanych współbieznie do kilku bloków wątków Bloki wątkówi są zgrupowane w kratę wątków, na której jest wykonywana wywoływana funkcja jądra 47

Model programistyczny CUDA Osnowy (wiązki wątków) Jednostka sterująca DU multiprocesora strumieniowego SMX tworzy, zarządza, planuje i wykonuje współbieżnie wątki w grupach nazywanych osnową (wiązką) wątków Na osnowę (wiązkę) wątków składają się 32 wątki Przez pół-osnowę rozumie się pierwsze lub drugie 16 kolejnych wątków osnowy Wątki w osnowie wykonują tę samą instrukcję ale operują na różnych danych Dostęp do pamięci globalnej w ramach jednej transakcji uzyskuje jednocześnie po 16 wątków z każdego bloku wątków (jedna pół-osnowa) 48

Model programistyczny CUDA Organizacja dostępu do pamięci Lokalizacja: on-chip, rozmiar: mały Lokalizacja: off-chip, rozmiar: mały Lokalizacja: on-chip, rozmiar: mały Lokalizacja: off-chip, rozmiar: duży Lokalizacja: off-chip, rozmiar: mały Lokalizacja: off-chip, rozmiar: mały 49

Model programistyczny CUDA Dostępne narzędzia software owe i biblioteki numeryczne System operacyjny Windows Język programowania C, C++, kompilator nvcc firmy NVIDIA (darmowy) Język programowania C, kompilator Brook, Stanford University (darmowy) Język programowania C99, otwarty standard OpenCL (darmowy), kompilator MSVS (odpłatny z wyjątkiem środowisk akademickich), ICC (odpłatny), MinGW (darmowy) Język programowania Fortran, kompilator firmy PGI (odpłatny) Matlab parallel computing toolbox (odpłatny) Biblioteki: CUBLAS (darmowa), CULA (odpłatna z wyjątkiem środowisk akademickich), MAGMA (darmowa) 50

Model programistyczny CUDA Dostępne narzędzia software owe i biblioteki numeryczne System operacyjny Linux Język programowania C, C++, kompilator nvcc firmy NVIDIA (darmowy) Język programowania C, kompilator Brook, Stanford University (darmowy) Język programowania C99, otwarty standard OpenCL, kompilator GCC (darmowy), kompilator ICC (odpłatny) Język programowania Fortran, kompilator firmy PGI (odpłatny) Matlab parallel computing toolbox (odpłatny) Biblioteki: CUBLAS (darmowa), CULA (odpłatna z wyjątkiem środowisk akademickich), MAGMA (darmowa) 51

Metoda momentów Metody pełnofalowe wykorzystywane w elektrodynamice obliczeniowej Metoda momentów MoM (ang. Method of Moments) Metoda FDTD (ang. Finite Difference Timie Domain) Metoda elementów skończonych FEM (ang. Finite Element Method) 52

Metoda momentów Metody pełnofalowe wykorzystywane w elektrodynamice obliczeniowej Metoda momentów MoM (ang. Method of Moments) Metoda FDTD (ang. Finite Difference Timie Domain) Metoda elementów skończonych FEM (ang. Finite Element Method) Z wymienionych tutaj trzech metod pełnofalowych, metodę FDTD jest najłatwiej zaadoptować do realizacji na platformach/maszynach równoległych, natomiast metodę momentów najtrudniej. 53

54 Metoda momentów [ Z ][ I] [ V] Z macierz impedancyjna I poszukiwany prąd V znane pobudzenie

55 Metoda momentów [ Z ][ I] [ V] Z macierz impedancyjna I poszukiwany prąd V znane pobudzenie Najbardziej intensywne obliczeniowo jest: wypełnianie macierzy impedancyjnej rozwiązywanie układu równań

56 Metoda momentów [ Z ][ I] [ V]

57 Metoda momentów [ Z ][ I] [ V]

58 MoM CPU/GPU

59 MoM CPU/GPU

60 MoM CPU/GPU

61 MoM CPU/GPU

62 MoM CPU/GPU

63 MoM CPU/GPU

Obliczenia numeryczne Sprzęt CPU (3.6 GHz Intel Core i7 3820) GPU (Nvidia GeForce typu GTX 680) Oprogramowanie Implementacja CPU Kompilator Intel Fortran MKL Implementacja GPU Kompilator Fortranu PGI Biblioteka CULA R16a 64

Obliczenia numeryczne Przykład 1 Rozpraszanie fali elektromagnetycznej na bryle doskonale przewodzącej zamodelowanej za pomocą siatki złożonej z cienkich drucików CPU 65

Obliczenia numeryczne Przykład 1 Rozpraszanie fali elektromagnetycznej na bryle doskonale przewodzącej zamodelowanej za pomocą siatki złożonej z cienkich drucików CPU 66

Obliczenia numeryczne Przykład 1 Rozpraszanie fali elektromagnetycznej na bryle doskonale przewodzącej zamodelowanej za pomocą siatki złożonej z cienkich drucików GPU 67

Obliczenia numeryczne Przykład 1 Rozpraszanie fali elektromagnetycznej na bryle doskonale przewodzącej zamodelowanej za pomocą siatki złożonej z cienkich drucików GPU 68

Obliczenia numeryczne Przykład 1 Rozpraszanie fali elektromagnetycznej na bryle doskonale przewodzącej zamodelowanej za pomocą siatki złożonej z cienkich drucików 69

Obliczenia numeryczne Przykład 2 Wyznaczenie przebiegu częstotliwościowego impedancji wejściowej anteny umieszczonej na powierzchni przewodzącej bryły Liczba segmentów 3865 Liczba niewiadomych - 5783 T. Topa, A. Karwowski, A. Noga,,,Using GPU with CUDA to accelerate MoM-based electromagnetic simulation of wire-grid models, IEEE Antennas Wireless Propag. Lett., vol. 10, str. 342-345, 2011 70

Obliczenia numeryczne Przykład 2 Wyznaczenie przebiegu częstotliwościowego impedancji wejściowej anteny umieszczonej na powierzchni przewodzącej bryły 71

Obliczenia numeryczne Przykład 2 Wyznaczenie przebiegu częstotliwościowego impedancji wejściowej anteny umieszczonej na powierzchni przewodzącej bryły CPU 36s GPU 6.2s Zysk 5.8x 72

Obliczenia numeryczne Przykład 3 Wyznaczenie przebiegu częstotliwościowego impedancji wejściowej anteny śrubowej umieszczonej w ekranie cylindrycznym Liczba segmentów 277 Liczba płatków - 3696 Liczba niewiadomych - 5777 T. Topa, A. Noga, A. Karwowski,,,Adapting MoM with RWG basis functions to GPU technology using CUDA, IEEE Antennas Wireless Propag. Lett., vol. 10, str. 480-483, 2011 73

Obliczenia numeryczne Przykład 3 Wyznaczenie przebiegu częstotliwościowego impedancji wejściowej anteny śrubowej umieszczonej w ekranie cylindrycznym 74

Obliczenia numeryczne Przykład 3 Wyznaczenie przebiegu częstotliwościowego impedancji wejściowej anteny śrubowej umieszczonej w ekranie cylindrycznym CPU 47.5s GPU 7.2s Zysk 6.6x 75

Obliczenia numeryczne Przykład 4 Badanie skuteczności ekranowania ekranu siatkowego Brak szczeliny Liczba segmentów 6228 Liczba niewiadomych 8307 Szczelina Liczba segmentów 6207 Liczba niewiadomych 8257 A. Karwowski, A. Noga, Interpolating broadband shielding behaviour of wire-grid cages from full-wave electromagnetic simulation, International Symposium on Electromagnetic Compatibility, EMC Europe 2012, Sep. 2012, Rome, Italy. 76

Obliczenia numeryczne Przykład 4 Badanie skuteczności ekranowania ekranu siatkowego Szczelina 77

Obliczenia numeryczne Przykład 4 Badanie skuteczności ekranowania ekranu siatkowego Brak szczeliny 78

Obliczenia numeryczne Przykład 4 Badanie skuteczności ekranowania ekranu siatkowego CPU 72,5s GPU 10.4s Zysk 6.95x Brak szczeliny 79

Obliczenia numeryczne Przykład 5 Wyznaczenie przebiegu częstotliwościowego impedancji wejściowej anteny QSA umieszczonej na powierzchni przewodzącego pudełka w kształcie prostopadłościanu Liczba segmentów 3732 Liczba niewiadomych - 5530 80

Obliczenia numeryczne Przykład 5 Wyznaczenie przebiegu częstotliwościowego impedancji wejściowej anteny QSA umieszczonej na powierzchni przewodzącego pudełka w kształcie prostopadłościanu Organizacja obliczeń numerycznych 81

Obliczenia numeryczne Przykład 5 Wyznaczenie przebiegu częstotliwościowego impedancji wejściowej anteny QSA umieszczonej na powierzchni przewodzącego pudełka w kształcie prostopadłościanu Wykorzystywana platforma obliczeniowa (4 x GTX 680, 4-rdzeniowy procesor i7 3820) 82

Obliczenia numeryczne Przykład 5 Wyznaczenie przebiegu częstotliwościowego impedancji wejściowej anteny QSA umieszczonej na powierzchni przewodzącego pudełka w kształcie prostopadłościanu 83

Obliczenia numeryczne Przykład 5 Wyznaczenie przebiegu częstotliwościowego impedancji wejściowej anteny QSA umieszczonej na powierzchni przewodzącego pudełka w kształcie prostopadłościanu 84

Obliczenia numeryczne Przykład 5 Wyznaczenie przebiegu częstotliwościowego impedancji wejściowej anteny QSA umieszczonej na powierzchni przewodzącego pudełka w kształcie prostopadłościanu CPU 35.2s 1 GPU 6s Zysk 5.9x 2 GPU 3s Zysk 11.6x 85

Obliczenia numeryczne Przykład 5 Wyznaczenie przebiegu częstotliwościowego impedancji wejściowej anteny QSA umieszczonej na powierzchni przewodzącego pudełka w kształcie prostopadłościanu CPU 35.2s 3 GPU 2s Zysk 17.6x 4 GPU 1.5s Zysk 23.5x 86

Podsumowanie Pokazano wyniki obliczeń numerycznych uzyskanych za pomocą metody momentów wspomaganej sprzętowo. Algorytmy metody zmodyfikowano tak, aby możliwa była jej implementacja na kartach graficznych firmy NVIDIA. Środowisko heterogeniczne CPU/GPU zastosowano przy wypełnianiu macierzy impedancyjnej i rozwiązywaniu układu równań. Zaproponowany kierunek rozwoju oprogramowania służącego do rozwiązywania problemów numerycznych elektrodynamiki obliczeniowej wydaje się być właściwy, gdyż stwarza możliwość przyspieszenia obliczeń w już prowadzonych projektach. 87

Dalsze prace Implementacja algorytmów MoM dla klastrów obliczeniowych złożonych z procesorów strumieniowych GPU i wielordzeniowych CPU T. Topa, A. Karwowski, A. Noga, "Multi-Core/Multi-GPU Hardware Acceleration of Frequency-Domain Numerical Simulations", Computer Physics Communications (submitted). Implementacja algorytmów out-of-core Wypełnianie macierzy impedancyjnej Rozwiązywanie układu równań Iteracyjne rozwiązywanie układu równań 88

89 Posiedzenie Polskiego Chapteru IEEE EMC-s Wrocław, 13 czerwca 2013 DZIĘKUJĘ ZA UWAGĘ