Course Code: gpuprogcuda
Duration: 28 hours
Prerequisites:
  • 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
Overview:

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
Course Outline:

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

Sites Published:

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

Nepal - GPU Programming with CUDA

Uzbekistan - GPU Programming with CUDA