Course Outline

Invoering

  • Wat is GPU programmeren?
  • Waarom GPU programmeren gebruiken?
  • Wat zijn de uitdagingen en afwegingen van GPU programmeren?
  • Wat zijn de raamwerken en hulpmiddelen voor GPU programmeren?
  • Kies het juiste raamwerk en de juiste tool voor uw toepassing

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

HEUP

  • Wat is HIP?
  • Wat zijn de voor- en nadelen van HIP?
  • Opzetten van de ontwikkelomgeving voor HIP
  • Een basis-HIP-programma maken dat vectoroptelling uitvoert
  • HIP-taal gebruiken om kernels te schrijven die op het apparaat worden uitgevoerd en gegevens manipuleren
  • Gebruik van ingebouwde HIP-functies, variabelen en bibliotheken om algemene taken en bewerkingen uit te voeren
  • HIP-geheugenruimten gebruiken, zoals globaal, gedeeld, constant en lokaal, om gegevensoverdracht en geheugentoegang te optimaliseren
  • Gebruik van het HIP-uitvoeringsmodel om de threads, blokken en rasters te controleren die het parallellisme definiëren
  • Debuggen en testen van HIP-programma's met behulp van tools zoals ROCm Debugger en ROCm Profiler
  • Het optimaliseren van HIP-programma's met behulp van technieken zoals coalescing, caching, prefetching en profilering

Vergelijking

  • Vergelijking van de functies, prestaties en compatibiliteit van OpenCL, CUDA, ROCm en HIP
  • 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 stap

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 de basisprincipes van GPU programmeren willen leren en de belangrijkste raamwerken en tools voor het ontwikkelen van GPU applicaties
  • Ontwikkelaars die draagbare en schaalbare code willen schrijven die op verschillende platforms en apparaten kan worden uitgevoerd
  • Programmeurs die de voordelen en uitdagingen van GPU programmeren en optimaliseren willen verkennen
 21 Hours

Getuigenissen (1)

Related Categories