20
CUDA Programming PUCRS - PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO GPU programming with CUDA Filipo Mór Plauto Neto

GPU Programming with CUDA

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: GPU Programming with CUDA

CUDAProgramming

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

GPU programming with CUDA

Filipo Mór

Plauto Neto

Page 2: GPU Programming with CUDA

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

Page 3: GPU Programming with CUDA

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

Page 4: GPU Programming with CUDA

CUDAProgramming

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

MULTICORE vs MANY-CORE

CPU vs GPU

Page 5: GPU Programming with CUDA

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

Page 6: GPU Programming with CUDA

CUDAProgramming

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

NVIDIA GPU ROADMAP

Page 7: GPU Programming with CUDA

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

Page 8: GPU Programming with CUDA

CUDAProgramming

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

DYNAMIC PARALLELISM

Page 9: GPU Programming with CUDA

CUDAProgramming

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

DYNAMIC PARALLELISM

Page 10: GPU Programming with CUDA

CUDAProgramming

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

COMPUTE CAPABILITY

Page 11: GPU Programming with CUDA

CUDAProgramming

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

CUDA PROGRAMMING MODEL

Page 12: GPU Programming with CUDA

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

Page 13: GPU Programming with CUDA

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

Page 14: GPU Programming with CUDA

CUDAProgramming

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

CUDA PROGRAMMING MODEL

Coalesced memory access!

Page 15: GPU Programming with CUDA

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,…,𝑏𝑛)

Page 16: GPU Programming with CUDA

CUDAProgramming

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

CASE STUDY

• DOT PRODUCT

Page 17: GPU Programming with CUDA

CUDAProgramming

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

CASE STUDY

• DOT PRODUCT

Page 18: GPU Programming with CUDA

CUDAProgramming

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

CASE STUDY

• DOT PRODUCT

Page 19: GPU Programming with CUDA

CUDAProgramming

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

CASE STUDY

• DOT PRODUCT

Page 20: GPU Programming with CUDA

CUDAProgramming

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

Perguntas !!!