Kursen fokuserar på trehuvudfrågor:
- GPU-arkitektur. Beräknings- och minnessystem hos olika kommersiella grafikprocessorer introduceras. En jämförelse med konventionella CPU:er och en presentation av nya kommande GPU:er kommer att ges.
- GPU-programmering med CUDA. CUDA:s koncept och hur man använder dem för att utveckla applikationer för GPU:er introduceras genom exempel från olika områden, såsom bildbehandling och vetenskapliga beräkningar. Även utvecklingsverktyg, såsom debuggers och verktyg för att mäta prestanda presenteras.
- GPU-programmering med GPU-bibliotek och beräkningspaket. Paket för hög produktivitet, bland annat Thrust biblioteket, OpenACC och cuDNN, presenteras. Olika paket kommer att förklaras genom exempel från olika datalogiska områden.
Studenterna kommer att få tillgång till GPU-klustret Tegner på PDC om de inte redan har tillgång till en dator med GPU.
Efter godkänd kurs ska studenten kunna
• analysera GPU-arkitekturer, bedöma deras fördelar och identifiera potentiella programvaruoptimeringar baserade på kännedom om GPU-arkitekturen
• utforma och implementera program för en GPU för tillämpningar inom vetenskapliga beräkningar, maskininlärning, bild- och videobearbetning, datorgrafik eller för en mobiltelefon
• använda experimentella högproduktiva metoder för GPU-programmering, såsom GPU-bibliotek och beräkningspaket, för att påskynda utvecklingen av stora GPU - tillämpningar
• använda effektiva utvecklingsverktyg för GPU-programmering, såsom avlusningsprogram och verktyg för prestandamätning
• utarbeta en skriftlig rapport om design, utveckling och implementering av kod för en GPU (med tillämpning på vetenskapliga beräkningar, maskininlärning, bild- och videobearbetning, datorgrafik eller för en mobiltelefon) och muntligt presentera rapporten vid ett seminarium.