Tópicos Especiais em Computação I: Multiprogramação leve em arquiteturas multi-core
Bacharelado em Ciência da Computação
- Código: 750038
- Horário: 32[1,2]
- Sala: T1: MM-1
Avisos
- 21/Dez: Notas finai. Atenção: Alunos em exame contatar o professor para combinar data de aplicação do exame.
- 19/Dez: Notas completas. Atenção: Quem tem 0 (zero) na avaliação do trabalho de implementação tem até quinta, dia 20/dez, para me procurar para apresentar.
- 12/Dez: Notas 1 e 2. Atenção: as médias foram calculadas considerando apenas as notas do Trabalho Teórico e da prova. A média final será apresentada após a apresentação do Trabalho de Implementação.
- 29/Out: Na aula do dia 30/Out será feita uma lista dos interessados em assistir a palestra do Prof. Nicolas Maillard na Semana Acadêmica da UCPel.
- 24/Set: Definição dos trabalhos
- 28/Ago: Início das aulas da disciplina
- 23/Ago: Início do semestre 2007/2
Cronograma 2007/2 (preliminar)
| Data |
Semana |
Assunto |
Material |
| 28/Ago |
1 |
Apresentação. Fatos de mercado. Classificação de arquiteturas paralelas. Classificação de Flynn. Classificação quanto a memória. Arquiteturas multiprocessadoras. Níveis de concorrência em um programa. |
ERAD 2001, ERAD 2002, ERAD 2004 (cap 1 e 2) |
| 04/Set |
2 |
Arquiteturas pipeline, superescalar, hiperthreading. Arquitetura multi-core. Programação em arquiteturas com memória compartilhada. |
ERAD 2001, ERAD 2002, ERAD 2004 (cap 1 e 2) |
| 11/Set |
3 |
Cont. |
|
| 18/Set |
4 |
Threads. Modelos de programação. Modelos de execução. |
|
| 25/Set |
5 |
Pthreads. |
|
| 02/Nov |
6 |
Técnicas de otimização de execução. |
|
| 09/Out |
7 |
Prática. |
|
| 16/Out |
8 |
OpenMP. |
|
| 23/Out |
9 |
Cont. |
|
| 30/Out |
10 |
.NET Framework. |
|
| 06/Nov |
11 |
Java. |
|
| 13/Nov |
12 |
Prática. |
|
| 20/Nov |
13 |
Prática. |
|
| 27/Nov |
14 |
Apresentação de trabalhos |
Trabalho prático |
| 04/Dez |
15 |
Prova |
|
| 11/Dez |
16 |
Revisão. |
|
| 18/Dez |
17 |
Recuperação |
|
| Janeiro |
|
Exame |
Data a ser definida. |
Avaliações
- Freqüência mínima: 75% (27 horas-aula).
- Avaliação do semestre: (Teórico+Prático+Prova)/3
- Prova: 04/Dezembro
- Trabalho Teórico: Ambientes de programação multithread.
- Grupos: 3 pessoas
- Definição: apresentar um artigo (4 páginas, formato da ERAD 2008) caracterizando uma ferramenta de programação multithread não vista em aula. Exemplos: Cilk, Nanothreads, Sisal, Fibers (Windows) (mais). O artigo deve caracterizar tanto o modelo de programação oferecido pela ferramenta como os recursos de programação oferecidos.
- Entrega: 6/Nov
- Trabalho Prático: Implementação de aplicação com threads.
- Grupos: 3 pessoas
- Definição: selecionar uma ferramenta de programação multithread (vista em aula ou não) e implementar uma aplicação e apresentar resultados de desempenho. Apresentar um artigo (4 páginas, formato da ERAD 2008) caracterizando o problema, a solução concorrente, os recursos de programação utilizados da ferramenta escolhida e uma análise de desempenho.
- Sugestões de implementações (ver mais em Cowichan):
- n-rainhas (n-queens);
- Palavras cruzadas (kece);
- Diminuição de imagens;
- Decomposição da matriz simétrica definida positiva;
- Sobreposição de polígonos;
- Caixeiro viajante; (reservado)
- Algoritmo de compressão H.264. (reservado)
- Entrega: 14/Novembro
- Recuperação: O aluno poderá recuperar qualquer uma das avaliações, com instrumentos equivalentes (trabalho teórico recupera trabalho teórico, trabalho prático recupera trabalho prático e prova recupera prova). Caso o aluno opte em recuperar um dos trabalhos, a nota máxima será 7,0.
- Aprovação sem exame: média do semestre igual ou superior à 7,0.
- Aprovação com exame: média do semestre igual ou superior à 5,0.
- Está habilitado a fazer exameo o aluno que tem freqüência mínima de 75% e nota igual ou superior a 3,0 e menor que 7,0.
- A média do exame será calculada com média aritmética simples entre a média obtida no semestre e a nota obtida no exame.
- O exame será realizado ocupando 4 horas/aulas consecutivas (sem intervalos) em data a ser especificada pelo professor no período reservado a efeito no calendário acadêmico da UFPel.
Ementa
Arquitetura de processadores multi-core. Programação em arquiteturas paralelas com memória compartilhada. Técnicas de decomposição paralela em arquiteturas paralelas com memória compartilhada. Interfaces de programação para multiprogramação leve. Técnicas de exploração de memória cache. Escalonamento de threads por afinidade a processador. Algoritmos sem contenção.
Objetivos da disciplina
Apresentar a arquitetura de processadores multi-core. Introduzir conceitos de programação de alto desempenho em processadores multi-core. Habilitar o aluno a explorar diferentes ferramentas e técnicas de programação em arquiteturas paralelas com memória compartilhada. Capacitar o aluno a desenvolver código com alto desempenho de execução em processadores multi-core.
Conteúdo programático
- Técnicas avançadasrquiteturas paralelas com memória compartilhada
- Arquitetura multi-core
- Introdução a programação concorrente
- Programação paralela em arquiteturas com memória compartilhada
- Threads
- Ferramentas de programação multithread
- Pthreads
- OpenMP
- Java
- C# .NET Framework
- Estratégias de programação para otimização de desempenho
- Casos de estudo
Bibliografia
- Akhter, S. and Robert, J. (2006). Multi-Core Programming: Increasing Performance through Software Multithreading. Intel Press, Hillsboro.
- Andrews, G. R. (2000). Foundations of multithreaded, parallel, and distributed programming. Addison-Wesley, Reading, Mass. [u.a.].
- Cavalheiro, G. G. H.; Santos, R. R. (2007) Multi-programação leve em arquiteturas multi-core. In Atualizações em Informática. Kowaltowski, T.; Breitman, K. K. Rio de Janeiro: PucRio. Cap. 7.
- Nichols, B.; Buttar, D.; Farrell, J. P. (1998). Pthreads Programming. O’Reilly, Cambridge, 2 edition.
Recursos
... a completar ...
<< Volta