Agenda do Curso
-
Introdução (Semana 0)
20/08
9:00 - Conversa sobre a disciplina.
-
Semana 1
O material da semana está abaixo.
- Garanta que você tem um sistema onde pode compilar e executar os códigos C++ apresentados. O compilador precisa ser razoavelmente recente.
- Assista aos vídeos abaixo (na primeira vez, em ordem).
- Baixe os códigos anexos, compile e execute.
-
Semana 2
-
Semana 3
Temas da semana:
- Experimentos com cache, para verificar impacto no desempenho.
- Revisão de entradas e saídas
- Revisão de multiprogramação
- Início da revisão de particionamento de memória
Sugestão de leituras para quem quiser se aprofundar mais: Do livro Computer Organization and Architecture, William Stallings, 8th Edition:
Seções: 2.1, 2.2, 3.3, 3.4, 3.5, 4.1, 4.2, 4.3, 5.1, 5.3, 7.1 até 7.6, 8.1, 8.2, 8.3
Sobre o Cachegrind: https://valgrind.org/docs/manual/cg-manual.html
-
Semana 4
Material da semana:
- Gerenciamento de memória com memória virtual
- Pipeline de instruções
- Previsão de desvio
- Execução superescalar
- Renomeação de registradores
Referências para aprofundamento do assunto:
Livro do Stallings, Seções 8.3, 12.3, 12.4, 14.1, 14.2.
Isto termina a nossa revisão de Arquiteturas de computadores (sem paralelistmo).
Anexa está também uma lista de exercícios para revisão do material. Haverá um teste sobre o material até agora, que será baseado nos exercícios da lista.
-
Semana 5
Material da semana: Revisão de arquiteturas paralelas:- Formas de paralelismo
- Estruturas de controle
- Modelos de comunicação
- Redes de interconexão
- Coerência de cache
- Custo de comunicação
Referência para aprofundamento:Grama et al, Introduction to Parallel Computing, Second Edition, Seções 2.1, 2.3, 2.4 e 2.5 -
Semana 6
Assunto:- Descrição dos exemplos a serem usados quando falarmos de interfaces de programação paralelas.
- Alguns tópicos relacionados a memória e execução de código.
Não tenho referências para indicar sobre esse assunto. -
Semana 7
Programação com threads de C++, parte 1/3
- Criando threads
- Disputa em variáveis compartilhadas
- Compartilhamento sem disputa
- Futuros (promessas)
-
Semana 8
Programação com threads de C++, parte 2/3
- O problema dos produtores e consumidores
- Exclusão mútua (semáforos)
- Variáveis de condição
-
Semana 9
Programação com threads C++, parte 3/3: Exemplos.
-
Semana 10
OpenMP, parte 1/2: Conceitos básicos
-
Semana 11
OpenMP, parte 2/2: Produtor-consumidor, semáforos, exemplos e tasks.
-
Semana 12
Programação por passagem de mensagens com MPI. Parte 1/4: Comunicações ponto a ponto
-
Semana 13
MPI, parte 2/4: comunicações coletivas e tipos de dados
-
Semana 14
MPI, parte 3/4: Comunicadores, topologias, início dos exemplos.
-
Semana 15
MPI, parte 4/4: Mandelbrot 2D, esquema gerente/trabalhador e propagação de calor