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 OpenCL?
- OpenCL vs CUDA vs SYCL
- Przegląd funkcji i architektury OpenCL
- Konfiguracja środowiska programistycznego
Pierwsze kroki
- Tworzenie nowego projektu OpenCL 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 OpenCL
- Zrozumienie roli OpenCL API w programie hosta
- Używanie OpenCL API do wyszukiwania informacji o urządzeniu i jego możliwościach
- Używanie OpenCL API do tworzenia kontekstów, kolejek poleceń, buforów, jąder i zdarzeń
- Używanie OpenCL API do kolejkowania poleceń, takich jak odczyt, zapis, kopiowanie, mapowanie, odmapowywanie, wykonywanie i oczekiwanie.
- Używanie OpenCL API do obsługi błędów i wyjątków
OpenCL C
- Zrozumienie roli OpenCL C w programie urządzenia
- Używanie OpenCL C do pisania jąder, które wykonują się na urządzeniu i manipulują danymi
- Używanie OpenCL C typów danych, kwalifikatorów, operatorów i wyrażeń
- Korzystanie z wbudowanych funkcji języka OpenCL C, takich jak funkcje matematyczne, geometryczne, relacyjne itp.
- Korzystanie z OpenCL rozszerzeń i bibliotek języka C, takich jak atomic, image, cl_khr_fp16 itp.
Model pamięci OpenCL
- Zrozumienie różnicy między modelami pamięci hosta i urządzenia
- Korzystanie z OpenCL przestrzeni pamięci, takich jak globalna, lokalna, stała i prywatna
- Korzystanie z obiektów pamięci OpenCL, takich jak bufory, obrazy i potoki
- Korzystanie z trybów dostępu do pamięci OpenCL, takich jak tylko do odczytu, tylko do zapisu, odczyt-zapis itp.
- Korzystanie z OpenCL modelu spójności pamięci i mechanizmów synchronizacji
Model wykonania OpenCL
- Zrozumienie różnicy między modelami wykonania hosta i urządzenia
- Używanie OpenCL elementów roboczych, grup roboczych i zakresów ND do definiowania równoległości
- Korzystanie z OpenCL funkcji elementów roboczych, takich jak get_global_id, get_local_id, get_group_id itp.
- Używanie OpenCL funkcji grupy roboczej, takich jak barrier, work_group_reduce, work_group_scan itp.
- Używanie OpenCL funkcji urządzenia, takich jak get_num_groups, get_global_size, get_local_size itp.
Debugowanie
- Zrozumienie typowych błędów i usterek w OpenCL programach
- Używanie debuggera Visual Studio Code do sprawdzania zmiennych, punktów przerwania, stosu wywołań itp.
- Używanie CodeXL do debugowania i analizowania OpenCL programów na urządzeniach AMD
- Używanie Intel VTune do debugowania i analizowania OpenCL programów na urządzeniach Intel
- Używanie NVIDIA Nsight do debugowania i analizowania OpenCL programów na urządzeniach NVIDIA
Optymalizacja
- Zrozumienie czynników wpływających na wydajność programów OpenCL
- Korzystanie z OpenCL wektorowych typów danych i technik wektoryzacji w celu poprawy przepustowości arytmetycznej
- Korzystanie z technik rozwijania i kafelkowania pętli OpenCL w celu zmniejszenia narzutu sterowania i zwiększenia lokalności
- Korzystanie z OpenCL pamięci lokalnej i funkcji pamięci lokalnej w celu optymalizacji dostępu do pamięci i przepustowości
- Korzystanie z OpenCL profilowania i narzędzi do profilowania w celu pomiaru i poprawy czasu wykonania 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ć OpenCL do programowania heterogenicznych urządzeń i wykorzystywania ich równoległości.
- 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ć niskopoziomowe aspekty programowania heterogenicznego i zoptymalizować wydajność swojego kodu
28 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.