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 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
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ą 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
21 godzin
Opinie uczestników (3)
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
Maciej Majka - Nokia
Szkolenie - NVIDIA GPU Programming - Extended
Podczas szkolenia najbardziej spodobała mi się elastyczność trenera, jego zdolność do reagowania na niespodziewane i potencjalnie głupie pytania. Wybitny poziom wiedzy trenera na temat kart graficznych NVIDIA.