Baixe o app para aproveitar ainda mais
Prévia do material em texto
Organização de Computadores II DCC007 Prof. Omar Paranaiba Vilela Neto Aula 18 – GPU Histórico • Final da década de 90: GPUs originais eram dispositivos dedicados para gerar gráficos 3D, incluindo unidades de pontos flutuante de alto desempenho • Placas gráfica para PCs; • Usuário podia controlar o pipeline gráfico, mas não programá-lo. • 2001-2005: Mais programabilidade foram adicionadas • Ex.: linguagem Cg para escrever pequenos programas para rodar em píxels. Também a variação Windows DirectX; • Massivamente paralelo (milhões de pixels por frame), mas muito limitado na programação. Histórico • 2001-2005: Alguns usuários observaram que era possível realizar computação de propósito geral mapeando dados de entrada e saída em imagens. • Extremamente difícil de programar devido às limitações. • 2006: Nvidia introduziu a GeForce 8800 GPU dando suporte a uma nova linguagem de programação: CUDA • “Compute Unified Device Architecture” • Em seguida, o mercado lançou o OpenCL. Ideia • Tirar vantagem do desempenho computacional da GPU e largura de banda da memória para acelerar a computação de propósito geral; • Modelo de processador anexado: CPU dispara dados paralelos para execução na GPU; Vamos ver o CUDA para propósito geral Modelo Simplificado de Programação CUDA Em CUDA a computação é realizada por um grande número de pequenas threads independentes (CUDA threads ou microthreads) agrupadas em blocos. Single Instruction Multiple Thread • GPU usa modelo SIMT, onde streams de instruções individuais para cada thread CUDA são agrupadas para execução SIMD no hardware (Nvidia agrupa 32 threads CUDA em um warp). Modelo de Execução em Hardware • GPU são feitas de múltiplos cores paralelos. Cada core contém um processador multithread SIMD com múltiplas raias, mas sem processador escalar. • CPU envia um “grid” inteiro para a GPU, que distribui blocos de thread entre os cores (cada bloco de thread executa em um core). Implicações do Modelo SIMT • Todos os load e stores de vetores são scatter-gather, já que microthreads individuais realizam load e store scalar. • GPU adiciona hardware para dinamicamente “agregar” microthreads de load e store individuais para “imitar” load e store vetorial; • Cada microthread tem que executar cálculos de stripmining redundantes (estou ativa?) já que não há equivalente de processador escalar; • Se existe controle divergente, necessita de atributo. GPGPUs são multithreads SIMD Nvidia Fermi GF100 GPU Fermi “Streaming Multiprocessor” Core Fermi “Streaming Multiprocessor” Core Apenas para processamento gráfico. Informações Revisão de Provas • Dias: 03/06 e 05/06 • Sala 4031 • Horário: 13:00h às 16:00h • Obs: Caso não me encontrem na sala, procure novamente dentro do horário indicado.. Informações Exame Especial • 16/06/2014 • Sala 2014 • Horário: 13:30h às 15:30h • Obs: Quem perdeu alguma prova deve usar o Exame especial como substitutiva. Caso necessário, uma nova prova será aplicada. Propaganda Nanocomputação • Disciplina optativa – 2º semestre • Seg e qua. 13h – Pode mudar • Computação além do silício! • Avaliação: • Participação; • Trabalhos; • Seminários.
Compartilhar