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! 3
Wybór technologii Czy będzie prosty?? 4
Wykład - CUDA Typowy kurs oparty na (najlepszych we wszechświecie) materiałach szkoleniowych NVidii 5
Wykład - OpenCL Typowy kurs oparty na (najlepszych we wszechświecie) materiałach szkoleniowych NVidii 6
Lab-y (C/O) Zadanie. 1. Mnożenie dużych macierzy (10 różnych rozmiarów oraz danych wygenerowanych losowo, dostosowanych do ilości pamięci RAM CPU i GPU). Rozliczenie: raport elektroniczny z wykresami i komentarzem! : porównanie szybkości działania GPU (conajmniej 3 różne) vs CPU (taki jaki macie w swoich komputerach) w skali rozmiaru macierzy - wyznaczenie przyrostu szybkości, wyznaczenie udziału czasu komunikacji z pamięcią GPU w czasie obliczeń, sprawdzenie poprawności danych pomiędzy CPU i GPU dla typu float (odchylenie standardowe!!). NA OCENĘ 3! (C+O) Zadanie. 2. Implementacja algorytmu transpozycji macierzy, przynajmniej 3 metodami, optymalizacja kodu CUDA i OpenCL - wyznaczenie przyrostu szybkości: CPU vs CUDA vs OpenCL vs CUDA Optimized NA OCENĘ 4! (C/O) Zadanie 3. Implementacja wybranego przez siebie algorytmu do wykrywania krawędzi - Edge Detection (np. Reverse ED) w wybranym przez siebie statycznym obrazie UltraHD 4K (2160p, YT, np. film Transformers: Age of Extinction) przekonwertowanym do skali szarości, porównanie szybkości CPU vs. GPU, wynik porównania w tabelce na ekranie monitora, prezentacja wykrycia krawędzi na ekranie. NA OCENĘ 5! 7
Rozliczenie przedmiotu Zaliczenie lab-ów: Zadanie 1 na ocenę 3 wraz z wymaganym raportem. Zadanie 2 wraz z porównaniemi na ocenę 4 Zadanie 3 wraz z porównaniem na ocenę 5 ;) Zaliczenie wykładu: Ocena będzie przepisana z lab-ów. Nie przewiduję specjalnego kolokwium. Obecność na lab-ach OBOWIĄZKOWA!. Możliwe dwie nieobecności nieusprawiedliwione. Pozostałe nieobecności wymagają zwolnienia lekarskiego. 8
1024 kurczaki czy 2 woły? D.Cray 9
Jak uzyskać wydajność? Mamy coraz więcej tranzystorów, co z tego? Jak możemy uzyskać większą wydajność Zwiększamy szybkość procesora MHz -> GHz w ostatnie 30 lat Moc skaluje się z częstotliwością Ilość pamięci musi nadążąć Równoległe wykonanie procedur Współbieżność, wielowątkowość 10
Prawo Moor a Przetwarzanie szeregowe osiągnęło już swoje granice Procesory muszą zacząć stawać się szersze a nie szybsze Zadanie: myślenie równoległe! 11
Prawo Moor a 12
Jak uzyskać wydajność? 13
14
Myślenie równoległe - Top 500 http://www.olcf.ornl.gov/titan/ http://www.top500.org/list/2014/11/ 15
Pytania? 16
Zapraszam za tydzień ;) 17
Architektura GPU vs CPU 18 Źródło: AMD Corp.
Architektura CPU vs GPU GPU poświęca znacznie więcej tranzystorów na proces przetwarzania danych CPU potrafi realizować złożone zadania 19
Architektura GPU vs CPU Intel 8008 3,500 1972 Intel 10 µm 14 mm² Intel 80386 275,000 1985 Intel 1.5 µm 104 mm² Pentium 3,100,000 1993 Intel 0.8 µm 294 mm² Pentium 4 Willamette 42,000,000 2000 Intel 180 nm 217 mm² Core 2 Duo Conroe 291,000,000 2006 Intel 65 nm 143 mm² Core i7 (Quad) 731,000,000 2008 Intel 45 nm 263 mm² Six-Core Core i7 (Gulftown) 10-Core Xeon Westmere-EX 1,170,000,000 2010 Intel 32 nm 240 mm² 2,600,000,000 2011 Intel 32 nm 512 mm² 62-Core Xeon Phi 5,000,000,000 2012 Intel 22 nm Xbox One Main SoC 5,000,000,000 2013 Microsoft/AMD 28 nm 363 mm² NV10 17,500,000 1999 NVIDIA 220 nm 111 mm² NV40 222,000,000 2004 NVIDIA 130 nm 305 mm² GT200 Tesla 1,400,000,000 [22] 2008 NVIDIA 65 nm 576 mm² Cypress RV870 2,154,000,000 [23] 2009 AMD 40 nm 334 mm² GF100 Fermi 3,200,000,000 [24] Mar 2010 NVIDIA 40 nm 526 mm² GK110 Kepler 7,080,000,000 [27] 2012 NVIDIA 28 nm 561 mm² 20
Architektura GPU vs CPU 21 GPU jest specjalnie zaprojektowany do realizacji wysoko-równoległych zadań
Architektura GPU vs CPU Rdzenie? 3 miliardy tranzystorów 512 rdzeni CUDA (32 rdzenie w 16 multiprocesorach) 64kB pamięci wbudowanej Wysoka przepustowość wewnętrzna 22 Nvidia GTX 580
Architektura GPU vs CPU Pojedynczy rdzeń GPU jest procesorem strumieniowym Rdzenie GPU są grupowane w multiprocesory strumieniowe SM SM jest procesorem typu SIMD (Single Instruction Multiple Data) 23
Myślenie równoległe 1024 kurczaki? Są lepsze rozwiązania.. Przemyśl swoje algorytmy tak by były bardziej przyjazne architekturom wysoko-równoległym (masoworównoległym) Masowo-równoległy? Znaczy: Równoległość danych Równoważenie obciążenia Proste obliczenia Szybki dostęp do danych Unikanie konfliktów dostępu do danych Itd., itp 24 Sporo tego, prawda?
CUDA & OpenCL CUDA (ang. Compute Unified Device Architecture) OpenCL (ang. Open Computing Language) 25
Fakty i mity CUDA i OpenCL są środowiskami programowania kart graficznych, zorienrowanymi na zrównoleglanie obliczeń ogólnego przeznaczenia. CUDA jest własną architekturą programowania procesorów graficznych firmy Nvidia i wspieraną jedynie przez karty tej firmy. Integruje w sobie język programowania oparty na języku C. OpenCL został zaprojektowany początkowo przez firmę Apple, a później przejęty przez The Khronos Group, i uczyniony standardem otwartym. 26
Fakty i mity OpenCL jest otwartym standardem działającym na sprzęcie (procesorach graficznych i nie tylko) różnych producentów chyba jedyna obecnie przewaga OpenCL. OpenCL jest w stanie realizować obliecznia na głównym procesorze, w przypadku gdy procesor graficznych nie jest dostępny. Mówi się, że technologia CUDA jest bardziej dojrzała niż OpenCL, jej API jest wyżej poziomowe i bardziej zaawansowane, co oczywiście jest dziś prawdą, ale nie musi być w przyszłości. 27
Fakty i mity Zarówno CUDA and OpenCL są wspierane przez niemal wszystkie dostępne na rynku standardy systemów operacyjnych (Windows, Linux, and MacOS). Chodzi po świecie plotka, że wewnętrzne procedury OpenCL są po prostu techniką kopiujwklej przenoszone z technologii CUDA. Lecz CUDA wykonuje je szybcie z racji dostępu do natywnych dla Nvidia procesorów graficznych. OpenCL, jako standard otwarty (jedynie??) wydaje się mieć przed sobą bardziej świetlaną przyszłość. 28
Fakty i mity co Pogromcy Mitów na to? 29