Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
Plan Szkolenia
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
Wymagania
- 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
28 godzin
Opinie uczestników (2)
Bardzo interaktywne z różnymi przykładami, z dobrym postępem złożoności między początkiem a końcem szkolenia.
Jenny - Andheo
Szkolenie - GPU Programming with CUDA and Python
Przetłumaczone przez sztuczną inteligencję
Spójny sposob prezentacji, duża wiedza trenera, odpowiedni poziom wejscia