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Ę