Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
CUDA
Programming

GPU programming with CUDA

Filipo Mór
Plauto Neto

PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPU...
CUDA
Programming

AGENDA

 INTRODUÇÃO
 NVIDIA GPU ARCHITECTURE
 CUDA PROGRAMMING MODEL
 CASE STUDY

PUCRS - PROGRAMA D...
CUDA
Programming

INTRODUCTION
NVIDIA FIRST GRAPHIC ACCELERATOR
 NVIDIA NV1 – 90’S
 DirectX – 1996
 First GPU – 1999
 ...
CUDA
Programming

MULTICORE vs MANY-CORE
CPU vs GPU

PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
CUDA
Programming

MULTICORE vs MANY-CORE
CPU

GPU

•

Based on pipeline philosophy

•

Big amount of parallel data

•

A l...
CUDA
Programming

NVIDIA GPU ROADMAP

PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
CUDA
Programming

NVIDIA GPU ROADMAP
GENERATIONS
•

•

•

•
•

TESLA/GEFORCE
• 2006
• Float point algebra
• CUDA
FERMI
• i...
CUDA
Programming

DYNAMIC PARALLELISM

PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
CUDA
Programming

DYNAMIC PARALLELISM

PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
CUDA
Programming

COMPUTE CAPABILITY

PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
CUDA
Programming

CUDA PROGRAMMING MODEL

PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
CUDA
Programming

CUDA PROGRAMMING MODEL
thread ID

•

Basic unit – kernel
•

2

3

4

…

Thread array

•

1

Synchronous ...
CUDA
Programming

CUDA PROGRAMMING MODEL

•

Basic unit – kernel
•

Synchronous or asynchronous

•

Thread array

•

Array...
CUDA
Programming

CUDA PROGRAMMING MODEL

Coalesced memory access!

PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUT...
CUDA
Programming

CASE STUDY
•

DOT PRODUCT

𝑛

𝐴∙ 𝐵=

𝑎 𝑖 𝑏 𝑖 = 𝑎1 𝑏1 + 𝑎2 𝑏2 + ⋯ + 𝑎 𝑛 𝑏 𝑛
𝑖=1

𝐴 = 𝑎1 , 𝑎2 , … , 𝑎 𝑛

𝐵...
CUDA
Programming

CASE STUDY
•

DOT PRODUCT

PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
CUDA
Programming

CASE STUDY
•

DOT PRODUCT

PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
CUDA
Programming

CASE STUDY
•

DOT PRODUCT

PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
CUDA
Programming

CASE STUDY
•

DOT PRODUCT

PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
CUDA
Programming

Perguntas !!!

PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
Upcoming SlideShare
Loading in …5
×

GPU Programming with CUDA

2,019 views

Published on

This is an brief introduction to GPU technology and CUDA programming model.

Published in: Technology
  • Be the first to comment

GPU Programming with CUDA

  1. 1. CUDA Programming GPU programming with CUDA Filipo Mór Plauto Neto PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
  2. 2. CUDA Programming AGENDA  INTRODUÇÃO  NVIDIA GPU ARCHITECTURE  CUDA PROGRAMMING MODEL  CASE STUDY PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
  3. 3. CUDA Programming 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 PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
  4. 4. CUDA Programming MULTICORE vs MANY-CORE CPU vs GPU PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
  5. 5. CUDA Programming MULTICORE vs MANY-CORE CPU GPU • Based on pipeline philosophy • Big amount of parallel data • A lot of strucutres for cache and • Less strucutres for cache and control control • More flexible • Less flexibility • MIMD – task parallelism • SIMD – data parallelism • Latency sensible • Latency tolerant PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
  6. 6. CUDA Programming NVIDIA GPU ROADMAP PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
  7. 7. CUDA Programming 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 PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
  8. 8. CUDA Programming DYNAMIC PARALLELISM PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
  9. 9. CUDA Programming DYNAMIC PARALLELISM PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
  10. 10. CUDA Programming COMPUTE CAPABILITY PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
  11. 11. CUDA Programming CUDA PROGRAMMING MODEL PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
  12. 12. CUDA Programming CUDA PROGRAMMING MODEL thread ID • Basic unit – kernel • 2 3 4 … Thread array • 1 Synchronous or asynchronous • 0 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-based design. IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.,2000,19, (12), pp. 1523-1543 PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
  13. 13. CUDA Programming CUDA PROGRAMMING MODEL • Basic unit – kernel • Synchronous or asynchronous • Thread array • Array / matrix / cube PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
  14. 14. CUDA Programming CUDA PROGRAMMING MODEL Coalesced memory access! PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
  15. 15. CUDA Programming CASE STUDY • DOT PRODUCT 𝑛 𝐴∙ 𝐵= 𝑎 𝑖 𝑏 𝑖 = 𝑎1 𝑏1 + 𝑎2 𝑏2 + ⋯ + 𝑎 𝑛 𝑏 𝑛 𝑖=1 𝐴 = 𝑎1 , 𝑎2 , … , 𝑎 𝑛 𝐵 = (𝑏1 , 𝑏2 , … , 𝑏 𝑛 ) PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
  16. 16. CUDA Programming CASE STUDY • DOT PRODUCT PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
  17. 17. CUDA Programming CASE STUDY • DOT PRODUCT PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
  18. 18. CUDA Programming CASE STUDY • DOT PRODUCT PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
  19. 19. CUDA Programming CASE STUDY • DOT PRODUCT PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
  20. 20. CUDA Programming Perguntas !!! PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO

×