Takk for at du sendte din henvendelse! En av våre teammedlemmer vil kontakte deg straks.
Takk for at du sendte din bestilling! En av våre teammedlemmer vil kontakte deg straks.
Kursplan
Innledning
- Hva er GPU-programmering?
- Hvorfor bruke GPU-programmering?
- Hva er utfordringene og avveiningene ved GPU-programmering?
- Hvilke rammeverk er det for GPU-programmering?
- Å velge det riktige rammeverket for din applikasjon
OpenCL
- Hva er OpenCL?
- Hvilke fordelene og ulemper har OpenCL?
- Oppsett av utviklingsmiljøet for OpenCL
- Opprette et grunnleggende OpenCL-program som utfører vektoraddisjon
- Bruke OpenCL API til å hente enhetsinformasjon, allokere og frigjøre enhetsminne, kopiere data mellom vert og enhet, starte kjerner og synkronisere tråder
- Bruke OpenCL C-språket til å skrive kjerner som kjører på enheten og manipulerer data
- Bruke OpenCLs innebygde funksjoner, variabler og biblioteker til å utføre vanlige oppgaver og operasjoner
- Bruke OpenCLs minneområder, som global, lokal, konstant og privat, til å optimalisere datatransfer og minneadgang
- Bruke OpenCLs utførelsesmodell for å kontrollere arbeidsenheter, arbeidsgrupper og ND-ranger som definerer parallelismen
- 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 profilerings
CUDA
- Hva er CUDA?
- Hvilke fordelene og ulemper har CUDA?
- Oppsett av utviklingsmiljøet for CUDA
- Opprette et grunnleggende CUDA-program som utfører vektoraddisjon
- Bruke CUDA API til å hente enhetsinformasjon, allokere og frigjøre enhetsminne, kopiere data mellom vert og enhet, starte kjerner og synkronisere tråder
- Bruke CUDA C/C++ språk til å skrive kjerner som kjører på enheten og manipulerer data
- Bruke CUDAs innebygde funksjoner, variabler og biblioteker til å utføre vanlige oppgaver og operasjoner
- Bruke CUDAs minneområder, som global, delt, konstant og lokal, til å optimalisere datatransfer og minneadgang
- Bruke CUDAs utførelsesmodell for å kontrollere tråder, blokker og rutenett som definerer parallelismen
- 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 profilerings
ROCm
- Hva er ROCm?
- Hvilke fordelene og ulemper har ROCm?
- Oppsett av utviklingsmiljøet for ROCm
- Opprette et grunnleggende ROCm-program som utfører vektoraddisjon
- Bruke ROCm API til å hente enhetsinformasjon, allokere og frigjøre enhetsminne, kopiere data mellom vert og enhet, starte kjerner og synkronisere tråder
- Bruke ROCm C/C++ språk til å skrive kjerner som kjører på enheten og manipulerer data
- Bruke ROCms innebygde funksjoner, variabler og biblioteker til å utføre vanlige oppgaver og operasjoner
- Bruke ROCms minneområder, som global, lokal, konstant og privat, til å optimalisere datatransfer og minneadgang
- Bruke ROCms utførelsesmodell for å kontrollere tråder, blokker og rutenett som definerer parallelismen
- 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 profilerings
Sammenligning
- Sammenligne funksjonene, ytelsen og kompatibiliteten til OpenCL, CUDA og ROCm
- Vurdere GPU-programmer ved hjelp av benchmarks og metrikker
- Lære best practices og tips for GPU-programmering
- Undersøke nåværende og fremtidige trender og utfordringer innen GPU-programmering
Oppsummering og neste steg
Krav
- En forståelse av C/C++-språket og parallelle programmeringskonsepter
- Grunnleggende kunnskap om datamaskinarkitektur og minnehierarki
- Erfaring med kommando-linjeverktøy og kodeeditorer
Målgruppe
- Utviklere som ønsker å lære å bruke forskjellige rammeverk for GPU-programmering og sammenligne deres funksjoner, ytelse og kompatibilitet
- Utviklere som ønsker å skrive bærbar og skalerbar kode som kan kjøres på forskjellige plattformer og enheter
- Programmerere som ønsker å utforske kompromissene og utfordringene med GPU-programmering og optimalisering
28 timer