Introdução à programação CUDA
CUDA
1
Objetivos
●
Visão geral da arquitetura de GPUs modernas
●
Vantagens e desvantagens em relação às CPUs
●
Introdução a programação em CUDA
2
Parnorâma
●
Futuro do projeto de microprocessadores e HPC será híbrido
●
Integração de diferentes componentes
–
CPUs com muitos cores
–
Hardware de propósito específico (DSPs, FPGAs)
–
Aceleradores massivamente paralelos (GPUs)
●
Barreira petaFLOP (105 FLOPS) ultrapassada
●
Exemplo: Titan (Oak Ridge National Laboratory)
–
Número 1 no Top500 (Novembro, 2012)
–
97 milhões de dólares
–
17 petaFLOPS
–
18.688 CPUS (Opteron 16-core)
–
18.688 GPUs (Nvidia Tesla K20)
3
Cenário
●
Desenvolvedores precisam lidar com ambientes híbridos
●
Performance deve escalar com número de cores
●
Performance deve acompanhar lançamento de hardware
●
Novos ambientes de desenvolvimento e execução
●
Programação paralela não pode ser visto como algo opcional
4
Por que GPUs?
5
Por que GPUs?
6
Fermi (2010)
~1.5TFLOPS (SP)/~800GFLOPS (DP)
230 GB/s DRAM Bandwidth
7
Speedups Significativos
8
CUFFT 3.2
9
CUBLAS
10
CULA – LAPACK para sistemas heterogêneos 11
Processadores Gráficos
●
●
●
●
●
Enquanto CPUs evoluíam em clock e número o processamento gráfico sofria uma revolução
Década de 1980: Silicon Graphics popularizou o uso de gráficos 3D em diversas aplicações de grande porte
Década de 1990: sistemas operacionais gráficos levam gráficos 2D e 3D ao consumidor final
Meados da década de 1990: Jogos imersivos (Doom,
Duke Nukem, Quake) aumentam o interesse e exigência dos consumidores por gráficos 3D
1992: OpenGL, 1995: DirectX
12
GPU vs. CPU
GPUs dedicam muito mais transistores para unidades lógicas e aritméticas
(ULAs) que CPUs, em compensação as unidades de controle são mais simples e os caches são menores.