Course Outline

Invoering

  • Wat is GPU programmeren?
  • Waarom GPU programmeren gebruiken?
  • Wat zijn de uitdagingen en afwegingen van GPU programmeren?
  • Wat zijn de raamwerken voor GPU programmeren?
  • Het juiste raamwerk voor uw toepassing kiezen

OpenCL

  • Wat is OpenCL?
  • Wat zijn de voor- en nadelen van OpenCL?
  • Het opzetten van de ontwikkelomgeving voor OpenCL
  • Een basisprogramma OpenCL maken dat vectoroptelling uitvoert
  • OpenCL API gebruiken om apparaatinformatie op te vragen, apparaatgeheugen toe te wijzen en de toewijzing ongedaan te maken, gegevens tussen host en apparaat te kopiëren, kernels te starten en threads te synchroniseren
  • OpenCL C-taal gebruiken om kernels te schrijven die op het apparaat worden uitgevoerd en gegevens manipuleren
  • Gebruik OpenCL ingebouwde functies, variabelen en bibliotheken om algemene taken en bewerkingen uit te voeren
  • Gebruik OpenCL geheugenruimten, zoals globaal, lokaal, constant en privé, om gegevensoverdracht en geheugentoegang te optimaliseren
  • Het OpenCL uitvoeringsmodel gebruiken om de werkitems, werkgroepen en ND-bereiken te controleren die het parallellisme definiëren
  • Debuggen en testen OpenCL van programma's met behulp van tools zoals CodeXL
  • Het optimaliseren OpenCL van programma's met behulp van technieken zoals coalescentie, caching, prefetching en profilering

CUDA

  • Wat is CUDA?
  • Wat zijn de voor- en nadelen van CUDA?
  • Opzetten van de ontwikkelomgeving voor CUDA
  • Een basis CUDA-programma maken dat vectoroptelling uitvoert
  • De CUDA API gebruiken om apparaatinformatie op te vragen, apparaatgeheugen toe te wijzen en de toewijzing ongedaan te maken, gegevens tussen host en apparaat te kopiëren, kernels te starten en threads te synchroniseren
  • Gebruik van de CUDA C/C++-taal om kernels te schrijven die op het apparaat worden uitgevoerd en gegevens manipuleren
  • Ingebouwde CUDA-functies, variabelen en bibliotheken gebruiken om algemene taken en bewerkingen uit te voeren
  • Gebruik van CUDA-geheugenruimten, zoals globaal, gedeeld, constant en lokaal, om gegevensoverdracht en geheugentoegang te optimaliseren
  • Het CUDA-uitvoeringsmodel gebruiken om de threads, blokken en rasters te controleren die het parallellisme definiëren
  • Foutopsporing en testen van CUDA-programma's met behulp van tools zoals CUDA-GDB, CUDA-MEMCHECK en NVIDIA Nsight
  • Het optimaliseren van CUDA-programma's met behulp van technieken zoals coalescing, caching, prefetching en profilering

ROCm

  • Wat is ROCm?
  • Wat zijn de voor- en nadelen van ROCm?
  • Inrichten van de ontwikkelomgeving voor ROCm
  • Een basis ROCm-programma maken dat vectoroptelling uitvoert
  • ROCm API gebruiken om apparaatinformatie op te vragen, apparaatgeheugen toe te wijzen en de toewijzing ongedaan te maken, gegevens tussen host en apparaat te kopiëren, kernels te starten en threads te synchroniseren
  • ROCm C/C++-taal gebruiken om kernels te schrijven die op het apparaat worden uitgevoerd en gegevens manipuleren
  • Gebruik van ROCm ingebouwde functies, variabelen en bibliotheken om algemene taken en bewerkingen uit te voeren
  • ROCm-geheugenruimten gebruiken, zoals globaal, lokaal, constant en privé, om gegevensoverdracht en geheugentoegang te optimaliseren
  • Het ROCm-uitvoeringsmodel gebruiken om de threads, blokken en rasters te controleren die het parallellisme definiëren
  • Debuggen en testen van ROCm-programma's met behulp van tools zoals ROCm Debugger en ROCm Profiler
  • Het optimaliseren van ROCm-programma's met behulp van technieken zoals coalescing, caching, prefetching en profilering

Vergelijking

  • Vergelijking van de functies, prestaties en compatibiliteit van OpenCL, CUDA en ROCm
  • Evaluatie van GPU programma's met behulp van benchmarks en statistieken
  • Leer de best practices en tips voor GPU programmeren
  • Onderzoek naar de huidige en toekomstige trends en uitdagingen van GPU programmeren

Samenvatting en volgende stappen

Requirements

  • Een goed begrip van de C/C++-taal en parallelle programmeerconcepten
  • Basiskennis van computerarchitectuur en geheugenhiërarchie
  • Ervaring met opdrachtregelprogramma's en code-editors

Publiek

  • Ontwikkelaars die willen leren hoe ze verschillende raamwerken voor GPU programmeren kunnen gebruiken en hun functies, prestaties en compatibiliteit willen vergelijken
  • Ontwikkelaars die draagbare en schaalbare code willen schrijven die op verschillende platforms en apparaten kan worden uitgevoerd
  • Programmeurs die de afwegingen en uitdagingen van GPU programmeren en optimaliseren willen verkennen
 28 Hours

Getuigenissen (1)

Related Courses

Related Categories