Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdu c ao ` a CUDA
Programa c ao Paralela para placas de v deo
27 de mar co de 2012
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
Introdu c ao
CUDA (Compute Unied Device Architecture) e uma linguagem para programa c ao paralela de prop osito geral desenvolvido pela nVidia para as placas de v deo da nVidia.
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
CPU x GPU
Processadores (CPUs) s ao otimizados para c alculos sequenciais (executando aplicativos diversos); Placas de v deo (GPUs) s ao otimizadas para c alculos massivamente paralelos, processando gr acos 3D.
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
CPU x GPU
As GPUs s ao blocos de v arios pequenos processadores trabalhando em paralelo. S ao otimizadas para processamento de gr acos 3D e shaders, mas podem ser usados para qualquer tarefa computacional.
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
CPU x GPU
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
CPU x GPU
Intel Core i7 980X (US$ 1000): 6 n ucleos, 0.1 TFLOPS NVIDIA GTX590 (US$ 700): 1024 n ucleos, 1.2 TFLOPS FLOPS e o n umero de opera c oes de pontos utuantes por segundo.
6 Belmino CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
Em tese, seria poss vel executar um sistema operacional e aplicativos de uso geral diretamente em uma GPU, mas o desempenho no nal seria muito inferior. Em resumo, n ao existe a possibilidade de as GPUs substitu rem os processadores, pois as duas arquiteturas se complementam.
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
Programando em CUDA
Terminologia Host CPU e a sua mem oria Device GPU e a sua mem oria Kernel fun c ao que roda no device
10
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
Kernel
Um kernel CUDA e executado por um array de threads(SIMT). Todas as threads rodam o mesmo c odigo paralelamente Cada thread tem um ID que ela usa para calcular endere cos de mem oria e fazer decis oes de controle.
11
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
Threads
12
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
Threads no hardware
13
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
Soma de Vetores
14
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
gridDim: e do tipo dim3 e cont em as dimens oes do grid blockIdx: e do tipo uint3 e cont em o ndice do bloco do grid blockDim: e do tipo dim3 e cont em as dimens oes do bloco threadIdx: e do tipo uint3 e cont em o ndice do thread do bloco warpSize: e do tipo int e cont em o tamanho do warp em threads
15
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
16
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
Uma pergunta
17
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
Sincroniza c ao
syncthreads() Ponto de sincroniza c ao para todas as threads de um bloco; Nem sempre e necess ario.
18
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
Fun co es em CUDA
Tipos de fun c ao device oat DeviceFunc() global void KernelFunc() host oat HostFunc() Executa no device device host Chamado no device host host
host poder a ser usado junto com device , nesse caso afun c ao ser a compilada tanto no host quanto no device.
19
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
Fun co es em CUDA
Restri c oes Fun c oes device e global n ao suportam recurs ao, n umero vari avel de argumentos ou declara c ao de vari aveis est aticas no seu escopo. Os qualicadores juntos. global e host n ao podem ser usados
As fun c oes global s ao ass ncronas(podem retornar antes do device ter completado a execu c ao).
20
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
Algumas fun c oes matem aticas t em uma precis ao menor, mas s ao mais r apidas na vers ao device-only. pow log, exp sin, cos, tan log2, log10
21
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
Mem orias
Tempo de Vida Thread Thread Bloco Aplica c ao Aplica c ao Aplica c ao
Local
No chip Fora Local do chip No Compartilhada chip Fora Constante do chip Fora Global do chip Fora Textura do chip
22
Threads do Bloco L(GPU) Threads L/E(CPU) e host Threads L/E e host L(GPU) Threads L/E(CPU) e host
CUDA
Belmino
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
Mem orias
23
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
Localiza c ao
24
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
Vari aveis
25
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
Vari aveis
int LocalVar; int LocalArray[10]; device int GlobalVar; constant int ConstVar; shared int SharedVar;
26
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
27
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
char, uchar, short, ushort, int, uint, long, ulong, oat com os suxos 1,2,3 ou 4 para denir a dimensionalidade denido com as componentes x, y, z, w.
28
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
29
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
30
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
31
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
32
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
33
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
34
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
35
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
36
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
37
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
38
Belmino
CUDA
Programa c ao para GPU Threads e Fun c oes Mem orias e Vari aveis
Bibliograa
http://en.wikipedia.org/wiki/CUDA
http://developer.download.nvidia.com/compute/DevZone/docs/ht http://www.nvidia.com.br
39
Belmino
CUDA