Introduction to GPU Programming ( gpuprog | 21 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ą nauczyć się podstaw programowania GPU oraz głównych frameworków i narzędzi do tworzenia aplikacji GPU.
  • Programiści, którzy chcą pisać przenośny i skalowalny kod, który może działać na różnych platformach i urządzeniach
  • Programiści, którzy chcą poznać korzyści i wyzwania związane z programowaniem i optymalizacją GPU
Overview:

Programowanie GPU to technika, która wykorzystuje moc przetwarzania równoległego GPU w celu przyspieszenia aplikacji wymagających wysokiej wydajności obliczeniowej, takich jak sztuczna inteligencja, gry, grafika i obliczenia naukowe. Istnieje kilka frameworków i narzędzi umożliwiających programowanie GPU, z których każdy ma swoje zalety i wady. Niektóre z najpopularniejszych to OpenCL, CUDA, ROCm i HIP.

To prowadzone przez instruktora szkolenie na żywo (na miejscu lub zdalnie) jest przeznaczone dla początkujących i średnio zaawansowanych programistów, którzy chcą nauczyć się podstaw programowania GPU oraz głównych frameworków i narzędzi do tworzenia aplikacji GPU.

  • Pod koniec tego szkolenia uczestnicy będą w stanie
    Zrozumieć różnicę między procesorem a GPU obliczeniowym oraz korzyści i wyzwania związane z programowaniem GPU.
  • Wybrać odpowiedni framework i narzędzie dla swojej aplikacji GPU.
  • Stworzyć podstawowy program GPU, który wykonuje dodawanie wektorowe przy użyciu jednego lub więcej frameworków i narzędzi.
  • Korzystanie z odpowiednich interfejsów API, języków i bibliotek w celu 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.
  • Korzystanie z odpowiednich przestrzeni pamięci, takich jak globalna, lokalna, stała i prywatna, w celu optymalizacji transferu danych i dostępu do pamięci.
  • Korzystanie z odpowiednich modeli wykonania, takich jak elementy robocze, grupy robocze, wątki, bloki i siatki, w celu kontrolowania równoległości.
  • Debugowanie i testowanie programów GPU przy użyciu narzędzi takich jak CodeXL, CUDA-GDB, CUDA-MEMCHECK i NVIDIA Nsight.
  • Optymalizacja programów GPU przy użyciu technik takich jak koalescencja, buforowanie, prefetching i profilowanie.

Format kursu

  • Interaktywny wykład i dyskusja.
  • Wiele ćwiczeń i praktyki.
  • Praktyczne wdrożenie 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.
Course Outline:

Wprowadzenie

  • Czym jest programowanie GPU?
  • Dlaczego warto używać programowania GPU?
  • Jakie są wyzwania i kompromisy związane z programowaniem GPU?
  • Jakie są frameworki i narzędzia do programowania GPU?
  • Wybór odpowiedniego frameworka i narzędzia dla aplikacji

OpenCL

  • Czym jest OpenCL?
  • Jakie są zalety i wady OpenCL?
  • Konfigurowanie środowiska programistycznego dla OpenCL
  • Tworzenie podstawowego programu OpenCL wykonującego dodawanie wektorowe
  • Używanie OpenCL API do odpytywania 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 OpenCL języka C do pisania jąder, które wykonują się na urządzeniu i manipulują danymi
  • Korzystanie z OpenCL wbudowanych funkcji, zmiennych i bibliotek do wykonywania typowych zadań i operacji
  • Korzystanie z OpenCL przestrzeni pamięci, takich jak globalna, lokalna, stała i prywatna, w celu optymalizacji transferu danych i dostępu do pamięci
  • Korzystanie z modelu wykonania OpenCL do kontrolowania elementów roboczych, grup roboczych i zakresów ND, które definiują równoległość.
  • Debugowanie i testowanie OpenCL programów przy użyciu narzędzi takich jak CodeXL
  • Optymalizacja OpenCL programów przy użyciu technik takich jak koalescencja, buforowanie, wstępne pobieranie i profilowanie.

CUDA

  • Czym jest CUDA?
  • Jakie są zalety i wady CUDA?
  • Konfiguracja środowiska programistycznego dla CUDA
  • Tworzenie podstawowego programu CUDA wykonującego dodawanie wektorowe
  • Używanie 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 urządzeniu i manipulują danymi
  • Korzystanie z 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
  • Korzystanie z 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
  • Optymalizacja programów CUDA przy użyciu takich technik jak koalescencja, buforowanie, prefetching i profilowanie.

ROCm

  • Czym jest ROCm?
  • Jakie są zalety i wady ROCm?
  • Konfiguracja środowiska programistycznego dla ROCm
  • Tworzenie podstawowego programu ROCm wykonującego dodawanie wektorowe
  • Używanie interfejsu API ROCm 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 ROCm C/C++ do pisania jąder, które wykonują się na urządzeniu i manipulują danymi
  • Korzystanie z wbudowanych funkcji, zmiennych i bibliotek ROCm do wykonywania typowych zadań i operacji
  • Korzystanie z przestrzeni pamięci ROCm, takich jak globalna, lokalna, stała i prywatna, w celu optymalizacji transferu danych i dostępu do pamięci
  • Korzystanie z modelu wykonania ROCm do kontrolowania wątków, bloków i siatek, które definiują równoległość.
  • Debugowanie i testowanie programów ROCm przy użyciu narzędzi takich jak ROCm Debugger i ROCm Profiler
  • Optymalizacja programów ROCm przy użyciu technik takich jak koalescencja, buforowanie, wstępne pobieranie i profilowanie.

HIP

  • Czym jest HIP?
  • Jakie są zalety i wady HIP?
  • Konfigurowanie środowiska programistycznego dla HIP
  • Tworzenie podstawowego programu HIP wykonującego dodawanie wektorowe
  • Używanie języka HIP do pisania jąder, które wykonują się na urządzeniu i manipulują danymi
  • Używanie wbudowanych funkcji, zmiennych i bibliotek HIP do wykonywania typowych zadań i operacji
  • Korzystanie z przestrzeni pamięci HIP, takich jak globalna, współdzielona, stała i lokalna, w celu optymalizacji transferu danych i dostępu do pamięci
  • Korzystanie z modelu wykonania HIP do kontrolowania wątków, bloków i siatek, które definiują równoległość.
  • Debugowanie i testowanie programów HIP przy użyciu narzędzi takich jak ROCm Debugger i ROCm Profiler
  • Optymalizacja programów HIP przy użyciu technik takich jak koalescencja, buforowanie, wstępne pobieranie i profilowanie.

Porównanie

  • Porównanie funkcji, wydajności i kompatybilności OpenCL, CUDA, ROCm i HIP
  • Ocena programów GPU przy użyciu benchmarków i metryk
  • Poznanie najlepszych praktyk i wskazówek dotyczących programowania GPU
  • Badanie obecnych i przyszłych trendów i wyzwań związanych z programowaniem GPU.

Podsumowanie i następny krok

Sites Published:

United Arab Emirates - Introduction to GPU Programming

Qatar - Introduction to GPU Programming

Egypt - Introduction to GPU Programming

Saudi Arabia - Introduction to GPU Programming

South Africa - Introduction to GPU Programming

Brasil - Introduction to GPU Programming

Canada - Introduction to GPU Programming

中国 - Introduction to GPU Programming

香港 - Introduction to GPU Programming

澳門 - Introduction to GPU Programming

台灣 - Introduction to GPU Programming

USA - Introduction to GPU Programming

Österreich - Introduction to GPU Programming

Schweiz - Introduction to GPU Programming

Deutschland - Introduction to GPU Programming

Czech Republic - Introduction to GPU Programming

Denmark - Introduction to GPU Programming

Estonia - Introduction to GPU Programming

Finland - Introduction to GPU Programming

Greece - Introduction to GPU Programming

Magyarország - Introduction to GPU Programming

Ireland - Introduction to GPU Programming

Luxembourg - Introduction to GPU Programming

Latvia - Introduction to GPU Programming

España - Introduction to GPU Programming

Italia - Introduction to GPU Programming

Lithuania - Introduction to GPU Programming

Nederland - Introduction to GPU Programming

Norway - Introduction to GPU Programming

Portugal - Introduction to GPU Programming

România - Introduction to GPU Programming

Sverige - Introduction to GPU Programming

Türkiye - Introduction to GPU Programming

Malta - Introduction to GPU Programming

Belgique - Introduction to GPU Programming

France - Introduction to GPU Programming

日本 - Introduction to GPU Programming

Australia - Introduction to GPU Programming

Malaysia - Introduction to GPU Programming

New Zealand - Introduction to GPU Programming

Philippines - Introduction to GPU Programming

Singapore - Introduction to GPU Programming

Thailand - Introduction to GPU Programming

Vietnam - Introduction to GPU Programming

India - Introduction to GPU Programming

Argentina - Introduction to GPU Programming

Chile - Introduction to GPU Programming

Costa Rica - Introduction to GPU Programming

Ecuador - Introduction to GPU Programming

Guatemala - Introduction to GPU Programming

Colombia - Introduction to GPU Programming

México - Introduction to GPU Programming

Panama - Introduction to GPU Programming

Peru - Introduction to GPU Programming

Uruguay - Introduction to GPU Programming

Venezuela - Introduction to GPU Programming

Polska - Introduction to GPU Programming

United Kingdom - Introduction to GPU Programming

South Korea - Introduction to GPU Programming

Pakistan - Introduction to GPU Programming

Sri Lanka - Introduction to GPU Programming

Bulgaria - Introduction to GPU Programming

Bolivia - Introduction to GPU Programming

Indonesia - Introduction to GPU Programming

Kazakhstan - Introduction to GPU Programming

Moldova - Introduction to GPU Programming

Morocco - Introduction to GPU Programming

Tunisia - Introduction to GPU Programming

Kuwait - Introduction to GPU Programming

Oman - Introduction to GPU Programming

Slovakia - Introduction to GPU Programming

Kenya - Introduction to GPU Programming

Nigeria - Introduction to GPU Programming

Botswana - Introduction to GPU Programming

Slovenia - Introduction to GPU Programming

Croatia - Introduction to GPU Programming

Serbia - Introduction to GPU Programming

Bhutan - Introduction to GPU Programming

Nepal - Introduction to GPU Programming