Lista de Alunos | 2a. Aula

1a. aula - Introdução

Critério de Avaliação

  • 2 provas: 40%
  • Exercícios semanais no Adessowiki: 40%
  • Participação na aula e contribuição coletiva no Adessowiki: 20%

Material do curso

  • Livro texto - Programming Massive Parallel Processor
  • Programação CUDA utilizando o Adessowiki (Pycuda no início)

Escolha do hardware para processamento paralelo

  • Disponível no mercado (grande número de usuários)
  • Acesso fácil e popularizado
  • Operações em ponto flutuante IEEE
  • Ponto flutuante de precisão dupla
  • Linguagem de programação apropriada (CUDA)

Arquitetura de uma GPU moderna

  • Conjunto de Multiprocessadores de fluxo (SM) com muitas linhas de execução (threads)
  • Memória global (GDDR), memória de vídeo

Processamento paralelo e computador hospedeiro

O usual é ter um complemento de processamento serial no computador hospedeiro e processamento paralelo na GPU.

Linguagens de programação paralela

  • MPI, Interface de Passagemm de Mensagem, apropriada para sistemas distribuídos MIMD
  • OpenMP para sistemas multiprocessadores de memória compartilhada
  • CUDA, suporte para memória compartilhada e comunicação entre GPU e hospedeiro
  • OpenCL, padronização

Introdução CUDA

  • Modelo hospedeiro central (CPU) e multiprocessadores massivamente paralelos
  • Paralelismo de dados
  • Modelo de execução: serial na CPU, paralelo GPU, serial na CPU, etc.
  • Exemplo, multiplicação matriz por um escalar k, M[i] = M[i] * 2;
  • Cuda Programming Guide
  • Pycuda Tutorial

Execução do CUDA no Adessowiki

  • Adessowiki tem suporte para execução de código no servidor.
  • Sandbox pycuda :xsandbox_key: xsb_pycuda - Mistura de Python com CUDA

Exemplos

Exercícios (Lista 1)

  1. Ler os capítulos 1 e 3 do livro texto
  2. Explicar o que significa os parâmetros levantados da GPU instalada no Adessowiki: courseIA366F2S2010:primo
  3. Fazer programas simples no estilo da multiplicação de matriz por escalar, porém programas que mostram a arquitetura interna da GPU.

Resolução