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
Introduksjon
- Hva er GPU-programmering?
- Hvorfor bruke GPU-programmering?
- Hvilke utfordringer og avveininger er knyttet til GPU-programmering?
- Hvilke rammeverk er det for GPU-programmering?
- Velge riktig rammeverk for applikasjonen din
OpenCL
- Hva er OpenCL?
- Hvilke fordeler og ulemper er knyttet til OpenCL?
- Oppsett av utviklingsmiljø for OpenCL
- Opprettelse av et grunnleggende OpenCL-program som utfører vektoraddisjon
- Bruk av OpenCL API for å spørre etter enhetens informasjon, allokere og deallokere enhetens minne, kopiere data mellom vert og enhet, kjøre kjerner og synkronisere tråder
- Bruk av OpenCL C-spraak for å skrive kjerner som kjører på enheten og manipulerer data
- Bruk av OpenCL innebygde funksjoner, variabler og biblioteker for å utføre vanlige oppgaver og operasjoner
- Bruk av OpenCL minneområder, som globalt, lokalt, konstant og privat, for å optimalisere dataoverføringer og minnetilganger
- Bruk av OpenCL utførelsessmodell for å kontrollere arbeidsenhetene, arbeidsgrupper og ND-områder som definerer parallelliteten
- Feilsøking og testing av OpenCL-programmer ved hjelp av verktøy som CodeXL
- Optimalisering av OpenCL-programmer ved hjelp av teknikker som samling, caching, prefetching og profiling
CUDA
- Hva er CUDA?
- Hvilke fordeler og ulemper er knyttet til CUDA?
- Oppsett av utviklingsmiljø for CUDA
- Opprettelse av et grunnleggende CUDA-program som utfører vektoraddisjon
- Bruk av CUDA API for å spørre etter enhetens informasjon, allokere og deallokere enhetens minne, kopiere data mellom vert og enhet, kjøre kjerner og synkronisere tråder
- Bruk av CUDA C/C++-spraak for å skrive kjerner som kjører på enheten og manipulerer data
- Bruk av CUDA innebygde funksjoner, variabler og biblioteker for å utføre vanlige oppgaver og operasjoner
- Bruk av CUDA minneområder, som globalt, delt, konstant og lokalt, for å optimalisere dataoverføringer og minnetilganger
- Bruk av CUDA utførelsessmodell for å kontrollere tråder, blokker og rutenett som definerer parallelliteten
- Feilsøking og testing av CUDA-programmer ved hjelp av verktøy som CUDA-GDB, CUDA-MEMCHECK og NVIDIA Nsight
- Optimalisering av CUDA-programmer ved hjelp av teknikker som samling, caching, prefetching og profiling
ROCm
- Hva er ROCm?
- Hvilke fordeler og ulemper er knyttet til ROCm?
- Oppsett av utviklingsmiljø for ROCm
- Opprettelse av et grunnleggende ROCm-program som utfører vektoraddisjon
- Bruk av ROCm API for å spørre etter enhetens informasjon, allokere og deallokere enhetens minne, kopiere data mellom vert og enhet, kjøre kjerner og synkronisere tråder
- Bruk av ROCm C/C++-spraak for å skrive kjerner som kjører på enheten og manipulerer data
- Bruk av ROCm innebygde funksjoner, variabler og biblioteker for å utføre vanlige oppgaver og operasjoner
- Bruk av ROCm minneområder, som globalt, lokalt, konstant og privat, for å optimalisere dataoverføringer og minnetilganger
- Bruk av ROCm utførelsessmodell for å kontrollere tråder, blokker og rutenett som definerer parallelliteten
- Feilsøking og testing av ROCm-programmer ved hjelp av verktøy som ROCm Debugger og ROCm Profiler
- Optimalisering av ROCm-programmer ved hjelp av teknikker som samling, caching, prefetching og profiling
Sammenligning
- Sammenligne funksjoner, ytelse og kompatibilitet til OpenCL, CUDA og ROCm
- Vurdere GPU-programmer ved hjelp av benchmarker og målinger
- Lære best practises og tips for GPU-programmering
- Utforske nåværende og fremtidige trender og utfordringer knyttet til GPU-programmering
Oppsummering og neste trinn
Krav
- En forståelse av C/C++-språket og parallellprogrammeringskonsepter
- Grunnleggende kunnskap om datamaskinarkitektur og minnehierarki
- Erfaring med kommando-linjeverktøy og kodeeditorer
Målgruppe
- Utviklere som ønsker å lære å bruke ulike rammeverk for GPU-programmering og sammenligne deres egenskaper, ytelse og kompatibilitet
- Utviklere som ønsker å skrive portabelt og skalbart kode som kan kjøres på ulike plattformer og enheter
- Programmerere som ønsker å utforske avveiningene og utfordringene ved GPU-programmering og optimering
28 timer