Introduction to GPU Programming ( gpuprog | 21 hours )
- 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
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.
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
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