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.
Kursplan
Introduktion
- Vad är OpenCL?
- OpenCL vs CUDA vs SYCL
- Översikt över OpenCL funktioner och arkitektur
- Att sätta upp utvecklingsmiljön
Komma igång
- Skapa ett nytt OpenCL-projekt med Visual Studio-kod
- Utforska projektstrukturen och filerna
- Kompilera och köra programmet
- Visar utdata med printf och fprintf
OpenCL API
- Förstå rollen för OpenCL API i värdprogrammet
- Använder OpenCL API för att fråga enhetsinformation och funktioner
- Använda OpenCL API för att skapa sammanhang, kommandoköer, buffertar, kärnor och händelser
- Använda OpenCL API för att ställa kommandon i kö, till exempel läsa, skriva, kopiera, mappa, avmappa, köra och vänta
- Använder OpenCL API för att hantera fel och undantag
OpenCL C
- Förstå rollen för OpenCL C i enhetsprogrammet
- Använder OpenCL C för att skriva kärnor som körs på enheten och manipulerar data
- Använder OpenCL C-datatyper, kvalificerare, operatorer och uttryck
- Använda OpenCL C inbyggda funktioner, såsom matematik, geometrisk, relationell, etc.
- Använda OpenCL C-tillägg och bibliotek, såsom atomic, image, cl_khr_fp16, etc.
OpenCL Minnesmodell
- Förstå skillnaden mellan värd- och enhetsminnesmodeller
- Använder OpenCL minnesutrymmen, såsom global, lokal, konstant och privat
- Använda OpenCL minnesobjekt, såsom buffertar, bilder och pipes
- Använda OpenCL minnesåtkomstlägen, som skrivskyddad, skrivskyddad, läs-skriv, etc.
- Använder OpenCL minneskonsistensmodell och synkroniseringsmekanismer
OpenCL Utförandemodell
- Förstå skillnaden mellan värd- och enhetsexekveringsmodeller
- Användning av OpenCL arbetsobjekt, arbetsgrupper och ND-intervall för att definiera parallellismen
- Använda OpenCL arbetsobjektfunktioner, som get_global_id, get_local_id, get_group_id, etc.
- Använda OpenCL arbetsgruppsfunktioner, såsom barriär, work_group_reduce, work_group_scan, etc.
- Använda OpenCL enhetsfunktioner, som get_num_groups, get_global_size, get_local_size, etc.
Felsökning
- Förstå vanliga fel och buggar i OpenCL program
- Användning av Visual Studio kodfelsökning för att inspektera variabler, brytpunkter, anropsstack, etc.
- Använder CodeXL för att felsöka och analysera OpenCL program på AMD-enheter
- Använda Intel VTune för att felsöka och analysera OpenCL-program på Intel-enheter
- Använder NVIDIA Nsight för att felsöka och analysera OpenCL program på NVIDIA-enheter
Optimering
- Förstå de faktorer som påverkar prestandan för OpenCL program
- Användning av OpenCL vektordatatyper och vektoriseringstekniker för att förbättra aritmetisk genomströmning
- Användning av OpenCL slingavrullning och slingbeläggningstekniker för att minska kontrolloverhead och öka lokaliteten
- Användning av OpenCL lokalt minne och lokala minnesfunktioner för att optimera minnesåtkomster och bandbredd
- Använda OpenCL profilerings- och profileringsverktyg för att mäta och förbättra exekveringstiden och resursutnyttjandet
Sammanfattning och nästa steg
Krav
- En förståelse för C/C++ språk och parallella programmeringskoncept
- Grundläggande kunskaper om datorarkitektur och minneshierarki
- Erfarenhet av kommandoradsverktyg och kodredigerare
Publik
- Utvecklare som vill lära sig hur man använder OpenCL för att programmera heterogena enheter och utnyttja deras parallellitet
- Utvecklare som vill skriva bärbar och skalbar kod som kan köras på olika plattformar och enheter
- Programmerare som vill utforska lågnivåaspekterna av heterogen programmering och optimera sin kodprestanda
28 timmar
Vittnesmål (2)
Väldigt interaktiv med olika exempel, med en bra progression i komplexitet mellan start och slut av träningen.
Jenny - Andheo
Kurs - GPU Programming with CUDA and Python
Machine Translated
Tränarnas energi och humor.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Kurs - NVIDIA GPU Programming - Extended
Machine Translated