- Zrozumienie języka C/C++ i koncepcji programowania równoległego
- Podstawowa znajomość architektury komputera i hierarchii pamięci
- Doświadczenie z narzędziami wiersza poleceń i edytorami kodu
Odbiorcy
- Programiści, którzy chcą dowiedzieć się, jak używać CUDA do programowania układów NVIDIA GPU i wykorzystywania ich równoległości.
- Programiści, którzy chcą pisać wysokowydajny i skalowalny kod, który może być uruchamiany na różnych urządzeniach CUDA
- Programiści, którzy chcą poznać niskopoziomowe aspekty programowania GPU i zoptymalizować wydajność swojego kodu
CUDA to otwarty standard programowania GPU, który umożliwia uruchamianie kodu na układach NVIDIA GPU, które są szeroko stosowane w obliczeniach o wysokiej wydajności, sztucznej inteligencji (AI), grach i grafice. CUDA ujawnia programiście szczegóły sprzętowe i daje pełną kontrolę nad procesem zrównoleglania. Wymaga to jednak również dobrego zrozumienia architektury urządzenia, modelu pamięci, modelu wykonania i technik optymalizacji.
To prowadzone przez instruktora szkolenie na żywo (online lub na miejscu) jest przeznaczone dla początkujących i średnio zaawansowanych programistów, którzy chcą używać CUDA do programowania układów NVIDIA GPU i wykorzystywania ich równoległości.
Po zakończeniu tego szkolenia uczestnicy będą w stanie
- Skonfigurować środowisko programistyczne zawierające CUDA Toolkit, układ NVIDIA GPU i Visual Studio Code.
- Stworzyć podstawowy program CUDA, który wykonuje dodawanie wektorowe na GPU i pobiera wyniki z pamięci GPU.
- Użyj interfejsu API CUDA do wyszukiwania informacji o urządzeniu, przydzielania i zwalniania pamięci urządzenia, kopiowania danych między hostem a urządzeniem, uruchamiania jądra i synchronizowania wątków.
- Używanie języka CUDA C/C++ do pisania jąder, które wykonują się na GPU i manipulują danymi.
- Używanie wbudowanych funkcji, zmiennych i bibliotek CUDA do wykonywania typowych zadań i operacji.
- Korzystanie z przestrzeni pamięci CUDA, takich jak globalna, współdzielona, stała i lokalna, w celu optymalizacji transferu danych i dostępu do pamięci.
- Używanie modelu wykonania CUDA do kontrolowania wątków, bloków i siatek, które definiują równoległość.
- Debugowanie i testowanie programów CUDA przy użyciu narzędzi takich jak CUDA-GDB, CUDA-MEMCHECK i NVIDIA Nsight.
- Optymalizować programy CUDA przy użyciu technik takich jak koalescencja, buforowanie, prefetching i profilowanie.
Format kursu
- Interaktywny wykład i dyskusja.
- Wiele ćwiczeń i praktyki.
- Praktyczna implementacja w środowisku laboratoryjnym na żywo.
Opcje dostosowywania kursu
- Aby poprosić o spersonalizowane szkolenie dla tego kursu, skontaktuj się z nami w celu ustalenia szczegółów.
- 96% zadowolonych klientów
Wprowadzenie
- Czym jest CUDA?
- CUDA vs OpenCL vs SYCL
- Przegląd funkcji i architektury CUDA
- Konfiguracja środowiska programistycznego
Pierwsze kroki
- Tworzenie nowego projektu CUDA przy użyciu kodu Visual Studio
- Przeglądanie struktury projektu i plików
- Kompilowanie i uruchamianie programu
- Wyświetlanie danych wyjściowych przy użyciu printf i fprintf
API CUDA
- Zrozumienie roli interfejsu API CUDA w programie hosta
- Używanie CUDA API do wyszukiwania informacji o urządzeniu i jego możliwościach
- Używanie CUDA API do przydzielania i zwalniania pamięci urządzenia
- Używanie CUDA API do kopiowania danych między hostem a urządzeniem
- Używanie CUDA API do uruchamiania jądra i synchronizowania wątków
- Używanie CUDA API do obsługi błędów i wyjątków
CUDA C/C++
- Zrozumienie roli CUDA C/C++ w programie urządzenia
- Używanie CUDA C/C++ do pisania jąder, które wykonują się na GPU i manipulują danymi
- Korzystanie z typów danych, kwalifikatorów, operatorów i wyrażeń CUDA C/C++
- Korzystanie z wbudowanych funkcji CUDA C/C++, takich jak matematyczne, atomowe, osnowy itp.
- Korzystanie z wbudowanych zmiennych CUDA C/C++, takich jak threadIdx, blockIdx, blockDim itp.
- Korzystanie z bibliotek CUDA C/C++, takich jak cuBLAS, cuFFT, cuRAND itp.
Model pamięci CUDA
- Zrozumienie różnicy między modelami pamięci hosta i urządzenia
- Korzystanie z przestrzeni pamięci CUDA, takich jak globalna, współdzielona, stała i lokalna
- Korzystanie z obiektów pamięci CUDA, takich jak wskaźniki, tablice, tekstury i powierzchnie
- Korzystanie z trybów dostępu do pamięci CUDA, takich jak tylko do odczytu, tylko do zapisu, odczyt-zapis itp.
- Korzystanie z modelu spójności pamięci CUDA i mechanizmów synchronizacji
Model wykonania CUDA
- Zrozumienie różnicy między modelem wykonania hosta i urządzenia
- Używanie wątków, bloków i siatek CUDA do definiowania równoległości
- Korzystanie z funkcji wątków CUDA, takich jak threadIdx, blockIdx, blockDim itp.
- Korzystanie z funkcji blokowych CUDA, takich jak __syncthreads, __threadfence_block itp.
- Korzystanie z funkcji siatki CUDA, takich jak gridDim, gridSync, grupy kooperacyjne itp.
Debugowanie
- Zrozumienie typowych błędów i usterek w programach CUDA
- Używanie Visual Studio debuggera kodu do sprawdzania zmiennych, punktów przerwania, stosu wywołań itp.
- Używanie CUDA-GDB do debugowania programów CUDA na Linux
- Używanie CUDA-MEMCHECK do wykrywania błędów i wycieków pamięci
- Używanie NVIDIA Nsight do debugowania i analizowania programów CUDA w systemie Windows
Optymalizacja
- Zrozumienie czynników wpływających na wydajność programów CUDA
- Korzystanie z technik koalescencji CUDA w celu poprawy przepustowości pamięci
- Korzystanie z technik buforowania i pobierania wstępnego CUDA w celu zmniejszenia opóźnień pamięci
- Korzystanie z pamięci współdzielonej CUDA i technik pamięci lokalnej w celu optymalizacji dostępu do pamięci i przepustowości
- Korzystanie z profilowania CUDA i narzędzi do profilowania w celu pomiaru i poprawy czasu wykonywania i wykorzystania zasobów.
Podsumowanie i kolejne kroki
United Arab Emirates - GPU Programming with CUDA
Qatar - GPU Programming with CUDA
Egypt - GPU Programming with CUDA
Saudi Arabia - GPU Programming with CUDA
South Africa - GPU Programming with CUDA
Brasil - GPU Programming with CUDA
Canada - GPU Programming with CUDA
中国 - GPU Programming with CUDA
香港 - GPU Programming with CUDA
澳門 - GPU Programming with CUDA
台灣 - GPU Programming with CUDA
USA - GPU Programming with CUDA
Österreich - GPU Programming with CUDA
Schweiz - GPU Programming with CUDA
Deutschland - GPU Programming with CUDA
Czech Republic - GPU Programming with CUDA
Denmark - GPU Programming with CUDA
Estonia - GPU Programming with CUDA
Finland - GPU Programming with CUDA
Greece - GPU Programming with CUDA
Magyarország - GPU Programming with CUDA
Ireland - GPU Programming with CUDA
Luxembourg - GPU Programming with CUDA
Latvia - GPU Programming with CUDA
España - GPU Programming with CUDA
Italia - GPU Programming with CUDA
Lithuania - GPU Programming with CUDA
Nederland - GPU Programming with CUDA
Norway - GPU Programming with CUDA
Portugal - GPU Programming with CUDA
România - GPU Programming with CUDA
Sverige - GPU Programming with CUDA
Türkiye - GPU Programming with CUDA
Malta - GPU Programming with CUDA
Belgique - GPU Programming with CUDA
France - GPU Programming with CUDA
日本 - GPU Programming with CUDA
Australia - GPU Programming with CUDA
Malaysia - GPU Programming with CUDA
New Zealand - GPU Programming with CUDA
Philippines - GPU Programming with CUDA
Singapore - GPU Programming with CUDA
Thailand - GPU Programming with CUDA
Vietnam - GPU Programming with CUDA
India - GPU Programming with CUDA
Argentina - GPU Programming with CUDA
Chile - GPU Programming with CUDA
Costa Rica - GPU Programming with CUDA
Ecuador - GPU Programming with CUDA
Guatemala - GPU Programming with CUDA
Colombia - GPU Programming with CUDA
México - GPU Programming with CUDA
Panama - GPU Programming with CUDA
Peru - GPU Programming with CUDA
Uruguay - GPU Programming with CUDA
Venezuela - GPU Programming with CUDA
Polska - GPU Programming with CUDA
United Kingdom - GPU Programming with CUDA
South Korea - GPU Programming with CUDA
Pakistan - GPU Programming with CUDA
Sri Lanka - GPU Programming with CUDA
Bulgaria - GPU Programming with CUDA
Bolivia - GPU Programming with CUDA
Indonesia - GPU Programming with CUDA
Kazakhstan - GPU Programming with CUDA
Moldova - GPU Programming with CUDA
Morocco - GPU Programming with CUDA
Tunisia - GPU Programming with CUDA
Kuwait - GPU Programming with CUDA
Oman - GPU Programming with CUDA
Slovakia - GPU Programming with CUDA
Kenya - GPU Programming with CUDA
Nigeria - GPU Programming with CUDA
Botswana - GPU Programming with CUDA
Slovenia - GPU Programming with CUDA
Croatia - GPU Programming with CUDA
Serbia - GPU Programming with CUDA
Bhutan - GPU Programming with CUDA