Kom i kontakt
 Varaktighet 28 timmar

Kursplan

Introduktion

  • Vad är OpenCL?
  • OpenCL jämfört med CUDA och SYCL
  • Översikt över OpenCL:s funktioner och arkitektur
  • Inställning av utvecklingsmiljön

Att komma igång

  • Skapa ett nytt OpenCL-projekt med Visual Studio Code
  • Utforska projektstrukturen och filerna
  • Kompilera och köra programmet
  • Visa utdata med printf och fprintf

OpenCL API

  • Att förstå rollen för OpenCL API i hostprogrammet
  • Använda OpenCL API för att fråga efter enhetsinformation och funktioner
  • Använda OpenCL API för att skapa kontexter, kommandoköer, buffertar, kärnor och händelser
  • Använda OpenCL API för att köa kommandon, såsom läsa, skriva, kopiera, mappa, avmappa, exekvera och vänta
  • Använda OpenCL API för att hantera fel och undantag

OpenCL C

  • Att förstå rollen för OpenCL C i enhetsprogrammet
  • Använda OpenCL C för att skriva kärnor som exekveras på enheten och manipulerar data
  • Använda datatyper, kvalificerande, operatorer och uttryck i OpenCL C
  • Använda inbyggda funktioner i OpenCL C, såsom matematik, geometri, relationer m.m.
  • Använda extensioner och bibliotek i OpenCL C, såsom atomic, image, cl_khr_fp16 m.m.

OpenCL Minnesmodell

  • Att förstå skillnaden mellan minnesmodeller för host och enhet
  • Använda OpenCL-minnesutrymmen, såsom globalt, lokalt, konstant och privat
  • Använda OpenCL-minnesobjekt, såsom buffertar, bilder och rören (pipes)
  • Använda OpenCL-minnesåtkomstlägen, såsom läsläs (read-only), skrivskyddad (write-only), läs/skriv (read-write) m.m.
  • Använda OpenCL:s minneskonsistensmodell och synkroniseringsmekanismer

OpenCL Exekveringsmodell

  • Att förstå skillnaden mellan exekveringsmodeller för host och enhet
  • Använda OpenCL work-items, work-groups och ND-intervall för att definiera parallelism
  • Använda OpenCL work-item-funktioner, såsom get_global_id, get_local_id, get_group_id m.m.
  • Använda OpenCL work-group-funktioner, såsom barrier, work_group_reduce, work_group_scan m.m.
  • Använda OpenCL enhetsfunktioner, såsom get_num_groups, get_global_size, get_local_size m.m.

Felsökning

  • Att förstå vanliga fel och buggar i OpenCL-program
  • Använda Visual Studio Code-felsökaren för att inspektera variabler, brytpunkter, anropsstack m.m.
  • Använda 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ända NVIDIA Nsight för att felsöka och analysera OpenCL-program på NVIDIA-enheter

Optimering

  • Att förstå de faktorer som påverkar prestandan hos OpenCL-program
  • Använda OpenCL-vektor Datatyper och vektoriseringstekniker för att förbättra aritmetisk genomsats
  • Använda OpenCL loop unrolling och loop tiling-tekniker för att minska styroverhead och öka lokalitet
  • Använda OpenCL lokalt minne och lokala minnesfunktioner för att optimera minnesåtkomst och bandbredd
  • Använda OpenCL profilerande och profileringsverktyg för att mäta och förbättra exekveringstid och resursutnyttjande

Krav

  • En förståelse för C/C++-språket och koncept inom parallell programmering
  • Grundläggande kunskaper om datormaskinarkitektur och minneshierarki
  • Erfarenhet av kommandoradsverktyg och kodredigerare

Targetgrupp

  • Utvecklare som önskar lära sig att använda OpenCL för att programmera heterogena enheter och utnyttja deras parallelism
  • Utvecklare som önskar skriva portabel och skalbar kod som kan köras på olika plattformar och enheter
  • Programmerare som önskar utforska lågnivåaspekter av heterogen programmering och optimera kodens prestanda

Antal deltagare


Pris per deltagare

Kommande Kurser

Relaterade Kategorier