• Document: MINI-CURSO: Introdução à Programação em CUDA
  • Size: 3.04 MB
  • Uploaded: 2019-07-19 21:53:11
  • Status: Successfully converted


Some snippets from your converted document:

I Escola Regional de Alto Desempenho de SP ERAD-2010 MINI-CURSO: Introdução à Programação em CUDA Prof. Raphael Y. de Camargo Centro de Matemática, Computação e Cognição Universidade Federal do ABC (UFABC) raphael.camargo@ufabc.edu.br Parte I Introdução às GPUs Placas Gráficas Jogos 3D evoluíram muito nos últimos anos e passaram a exigir um poder computacional gigantesco Jogos modernos: GPUs Além de gerar o cenário 3D, é preciso aplicar texturas, iluminação, sombras, reflexões, etc. As folhas individuais das plantas são desenhadas Sombras são calculadas dinamicamente Para tal, as placas gráficas passaram a ser cada vez mais flexíveis e poderosas NVIDIA GTX480: 480 núcleos →preço US$ 500 Desempenho máximo: 0.5 TFLOP (double) e 1.3 TFLOP (float) Intel Core i7 980X: 6 núcleos →preço US$ 1000 Desempenho máximo: 0.1 TFLOP (double) NVIDIA GTX480: 480 núcleos →preço US$ 500 1.5GB de Memória com acesso a 177 GB/s Intel Core i7 980X: 6 núcleos →preço US$ 1000 Acesso à memória a 25.6 GB/s Arquitetura da GPU GPUs utilizam um maior número de transistores para colocar mais ALUs (Arithmetic Logic Unit) simplificadas Permite fazer um maior número de cálculos ao mesmo tempo Controle de fluxo mais simples: - Feita para aplicações paralelas onde as mesmas operações são aplicadas sobre um grande conjunto de dados Arquitetura da GPU Fermi 16 Multiprocessadores: 32 processadores 16 unidades Load/Store 4 unidades funções especiais 64 kB Memória compartilhada 32768 registradores Cache de constantes e textura Arquitetura da GPU Os multiprocessadores compartilham uma memória global, onde são armazenados texturas ou dados de aplicações Host Memory CPU TESLA S2070 4 x 448 processadores O que é CUDA É uma arquitetura paralela de propósito geral destinada a utilizar o poder computacional de GPUs nVidia Extensão da linguagem C, e permite controlar a execução de threads na GPU e gerenciar sua memória Arquitetura de uma GPU nVidia Hierarquia de Memória Cada execução do kernel é composta por: Grade → blocos → threads Hierarquia de memória: - Registradores por thread - Memória compartilhada por bloco - Memória Global acessível a todas as threads Execução de Aplicações Cada bloco é alocado a um multiprocessador da GPU, que pode executar 1 ou mais blocos simultaneamente Cada multiprocessador executa 16 threads no modelo SIMT: Single Intruction, Multiple Thread Modelo de Execução Execução do programa controlada pela CPU que pode lançar kernels, que são trechos de código executados em paralelo por múltiplas threads na GPU A execução de programas CUDA é composta por ciclos CPU, GPU, CPU, GPU, … , CPU, GPU, CPU. Aplicações que rodam bem em GPUs Programas que conseguem bons speedups em GPUs: Podem ser subdivido em pequenos subproblemas, que são alocados a diferentes blocos e threads Cada thread mantém uma pequena quantidade de estado Alta razão (operações de ponto flutuante) / (memória) Os subproblemas são fracamente acoplados Acoplamento: quando um problema pode ser dividido em subproblemas menores, o acoplamento indica o quanto os subproblemas são dependentes entre si. Retirado de http://www.nvidia.com/cuda Retirado de http://www.nvidia.com/cuda Retirado de http://www.nvidia.com/cuda Retirado de http://www.nvidia.com/cuda Retirado de http://www.nvidia.com/cuda GPUs vs Supercomputadores Sistemas de multiprocessadores: Conjunto de unidades de processamento e memória conectados por uma rede de interconexão Sistemas classificados como: Memória compartilhada Troca de mensagens Exemplos: Supercomputadores Aglomerados (clusters) Exemplos de Redes Estáticas Alta tolerância a falhas Ponto único de falha e gargalo No de conexões: O(N²) No de conexões: O(N) Exemplos de Redes Estáticas k-cubo: nós: O (2k), Malha com k dimensões Conexões: O (2k*k/2) No de conexões: O(N*k/2) Hypercubo 10-dim Mais fácil de construir 1024 nós e 5120 conexões Exemplos de Redes Estáticas Árvore Árvore Gorda Conexões: O(N) Nós mais altos com maior Atraso: O(log N) largura de banda Nó raiz é gargalo e ponto Normalmente implementadas único de falha com múltiplas conexões Rede Dinâmica: Barramento Simples Todas os processadores ligados à memória por um barramento simples Fácil e barato de implementar Mas o barramento rapidamente se torna um gargalo Múltiplos Barramentos Exemplo: SGI Altix 4700 ● Fabricante: Silicon Graphics, Inc ● Memória: 272 GB ● Processadores: 68 Dual-Core Itanium 9000 (64 bits) ● Sistemas Operacionais: Linux (SUSE) e

Recently converted files (publicly available):