Agenda do Curso
-
Introdução (Semana 0)
-
Este livro é o mais próximo do que seria um livro-texto para a disciplina, mas tem um enfoque mais conceitual-teórico, enquanto a disciplina tem um enfoque mais prático.
Apresenta diversas técnicas para o desenvolvimento e análise de algoritmos paralelos.
-
Este é o livro-texto de arquitetura e organização de computadores.
-
Este livro é um estudo bastante aprofundado de diversas forma de arquiteturas paralelas de computadores.
A leitura é difícil, mas os assuntos são apresentados aprofundadamente.
-
-
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
Tema da semana: Revisão de Arquitetura e Organização de Computadores
- Evolução da tecnologia de computadores
- Barramentos
- Hierarquia de memória
- O problema do desacordo de desempenho entre processador e memória
- Localidade
- Hierarquia de memória
- Caches
-
Semana 3
Temas da semana:
- Experimentos com localidade
- Entradas e saídas
- Multiprogramação
- Início de gerenciamento de memória: particionamentos fixos e variáveis
Os slides estão junto com o material entregue na semana passada.Referências (para quem quiser se aprofundar):Livro "Computer Organization and Architecture", W. Stallings, 8th edition,Seções: 3.3, 3.4, 3.5; 4.1, 4.2, 4.3; 7.1, 7.2, 7.3, 7.4, 7.5, 7.6; 8.1, 8.2, 8.3. -
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 paralelismo).
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.