CUDAProgramming
PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
GPU programming with CUDA
Filipo Mór
Plauto Neto
CUDAProgramming
PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
AGENDA
INTRODUÇÃO
NVIDIA GPU ARCHITECTURE
CUDA PROGRAMMING MODEL
CASE STUDY
CUDAProgramming
PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
INTRODUCTION
NVIDIA FIRST GRAPHIC ACCELERATOR
NVIDIA NV1 – 90’S
DirectX – 1996
First GPU – 1999
NVIDIA GeForce 256
22 million transistors
10 million polygons
32/64MB
T&L engine (vertex)
challenging programming
CUDA – 2006
Compute Unified Device Architecture
GPGPU
CUDAProgramming
PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
MULTICORE vs MANY-CORE
CPU vs GPU
CUDAProgramming
PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
MULTICORE vs MANY-CORE
CPU
• Based on pipeline philosophy
• A lot of strucutres for cache and
control
• More flexible
• MIMD – task parallelism
• Latency sensible
• Big amount of parallel data
• Less strucutres for cache and
control
• Less flexibility
• SIMD – data parallelism
• Latency tolerant
GPU
CUDAProgramming
PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
NVIDIA GPU ROADMAP
CUDAProgramming
PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
NVIDIA GPU ROADMAP
GENERATIONS• TESLA/GEFORCE
• 2006• Float point algebra• CUDA
• FERMI• improvements on shared memory• SLI
• KEPLER• Dynamic Parallelism• MIMD
• MAXWELL• Unified Virtual Memory
• VOLTA• Stacked DRAM
CUDAProgramming
PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
DYNAMIC PARALLELISM
CUDAProgramming
PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
DYNAMIC PARALLELISM
CUDAProgramming
PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
COMPUTE CAPABILITY
CUDAProgramming
PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
CUDA PROGRAMMING MODEL
CUDAProgramming
PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
CUDA PROGRAMMING MODEL
• Basic unit – kernel
• Synchronous or asynchronous
• Thread array
• Array / matrix / cube
[1] Keutzer, K.,Malik, S. Newton, A.R., Rabaye, J.M. and Sangiovanni Vincentelli, A.: System-level design: orthogonolization of concerns and platform-baseddesign. IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.,2000,19, (12), pp. 1523-1543
0 1 2 3 …
thread ID
4
CUDAProgramming
PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
CUDA PROGRAMMING MODEL
• Basic unit – kernel
• Synchronous or asynchronous
• Thread array
• Array / matrix / cube
CUDAProgramming
PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
CUDA PROGRAMMING MODEL
Coalesced memory access!
CUDAProgramming
PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
CASE STUDY
• DOT PRODUCT
𝐴Ԧ∙𝐵ሬԦ= 𝑎𝑖𝑏𝑖𝑛
𝑖=1 = 𝑎1𝑏1 + 𝑎2𝑏2 + ⋯+ 𝑎𝑛𝑏𝑛
𝐴=ሺ𝑎1,𝑎2,…,𝑎𝑛ሻ
𝐵= (𝑏1,𝑏2,…,𝑏𝑛)
CUDAProgramming
PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
CASE STUDY
• DOT PRODUCT
CUDAProgramming
PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
CASE STUDY
• DOT PRODUCT
CUDAProgramming
PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
CASE STUDY
• DOT PRODUCT
CUDAProgramming
PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
CASE STUDY
• DOT PRODUCT
CUDAProgramming
PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
Perguntas !!!
Top Related