Filtrera

GPGPU Beräkningar med C++ med AMP

Beräkningsintensiva problem kan ofta få bättre prestanda om de löses med parallella algoritmer som exekverar på multipla processorkärnor. För en delmängd av dessa problem kan man få en ytterligare prestandavinst genom att utföra beräkningarna på grafikkortet. Detta kallas för General Purpose Processing on Graphics Processing Units (GPGPU). I den här kursen lär vi oss att identifiera vilka beräkningar som passar att köra på grafikkortet och hur man implementerar GPU algoritmer i C++ med Microsoft AMP (Accelerated Massive Parallelism).

Vissa algoritmer är massivt parallella, till exempel bildfiltrering, faltning, matrismultiplikation, partikel-baserade fysiksimuleringar, neurala nätverk. Dessa algoritmer kan få en stor prestanda förbättring genom att göra beräkningarna på grafikkortet istället för applikationsprocessorn. I den här kursen lär vi oss att använda C++ tillägget Microsoft AMP för att skriva program som gör beräkningar på GPU:n.

Kursen innehåller en grundläggande genomgång av hur GPU hårdvara fungerar. Detta gör att vi bättre kan ta beslut kring mjukvaruarkitektur och hjälper oss att debugga och optimera GPU program. 

Microsoft AMP är en utökning av C++ som lägger till några nyckelord till språket för att markera vilka funktioner som kan exekvera på grafikkortet. Detta gör att vi kan skriva kod som ser ut som C++ och träffar en balans mellan utvecklingskostnad och prestanda.

    Målgrupp

    Erfarna C++ utvecklare

    Förkunskaper

    Djup erfarenhet av parallellprogrammering på CPU. Erfarenhet av modern trådprogrammering med exempelvis Microsoft PPL eller Intel TBB.

    Vad du kommer att lära dig

    • Hur man löser vanliga optimeringsproblem
    • När man vinner på parallellism
    • Hur hårdvaran utnyttjar parallellism
    • Hur man kan använda grafikkortet för beräkningar med C++ och Microsoft AMP
    • Hur man utnyttjar CPU och GPU tillsammans för beräkningar

    Agenda

    Dag 1

    • Introduction
    • C++11 Lambdas
    • Measuring Performance
    • Introduction to CPU and GPU Hardware
      • Memory Types and Caching
      • Vector programming
      • Cores, Threads, Tiles and Warps
    • Methods of writing code for the GPU
      • OpenCL
      • CUDA
      • DirectCompute
      • Microsoft C++ AMP
    • Introduction to AMP
      • AMP Syntax and Data Types
      • array, array_view
      • index
      • extent
      • grid
      • restrict
    • parallel_for_each
      • How to use
      • Optimizing Memory Move and Copy
    • Synchronizing memory with accelerators
      • Implicit synchronization
      • synchronize*()
      • data()
      • Lost Exceptions
    • The fast_math and precise_math namespaces
      • Comparison to “standard” math.
      • Accelerator requirements
      • Example
    • Debugging with Warp
      • Visual Studio Tools
      • GPU Threads
      • Parallel Stacks
      • Parallel Watch
    • Floating Point Numbers
      • How they are handled
      • Why they are different from CPU
      • Performance of float/double operations

    Dag 2

    • Tiling
      • Syntax
      • Determining tile size
      • Memory Coalescence
      • Memory Collisions
      • Tile Synchronization
    • AMP Atomic Operations
      • atomic_exchange()
      • atomic_fetch*()
    • Parallel patterns with AMP
      • Map
      • Reduce
      • Scan
      • Pack
    • AMP Accelerators
      • Accelerator properties
      • Shared memory
      • Using multiple accelerators
    • Concurrency::graphics
      • Exploiting the texture cache.
    • AMP Error Handling
      • Exceptions
      • Detecting and Recovering from TDR

    Kursinformation

    Kurskod: T393
    Kurslängd: 2 dagar
    Pris: 24 500 SEK
    Språk: English

    Kursschema

    Stockholm
    21 novBoka nu
    Göteborg
    14 novBoka nu
    Malmö
    7 novBoka nu

    Lärare

    Dela

    Relaterade kurser

    • C++ for Experienced Developers

      Kursområde: C++
      Omfattning: 3 dagar
      Kostnad: 25 900 SEK
    • Avancerad C++

      Kursområde: C++
      Omfattning: 2 dagar
      Kostnad: 21 500 SEK
    • GPGPU beräkningar i C++ med CUDA

      Kursområde: C++
      Omfattning: 2 dagar
      Kostnad: 24 500 SEK

    Kontakta oss för mer information

    040 61 70 720
    info@edument.se


    Alla priser är exkl. moms