gpu programming with cuda

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

Upload: filipo-mor

Post on 26-May-2015

842 views

Category:

Technology


3 download

DESCRIPTION

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

TRANSCRIPT

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 !!!