GPU Programming with CUDA

1,589 views

Published on

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,589
On SlideShare
0
From Embeds
0
Number of Embeds
694
Actions
Shares
0
Downloads
48
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

×