Processamento de Alto Desempenho

Identificação sumária dos conteúdos
A disciplina apresenta ferramentas para a programação concorrente e paralela e seu emprego visando a obtenção de processamento de alto desempenho em arquiteturas dotadas de múltiplos processadores. Aborda a decomposição de aplicações em atividades concorrentes e a utilização eficiente dos recursos de hardware através de mecanismos de balanceamento de carga.

Objetivos da disciplina
Capacitar o aluno a utilizar tecnologias de programação concorrente, paralela e distribuída, habilitando-o a tirar proveito de arquiteturas dotadas de múltiplos recursos de processamento para exploração de alto desempenho. Preparar o aluno a realizar a decomposição de problemas em atividades concorrentes e a realizar implementações destes problemas sob a forma de programas concorrentes, paralelos ou distribuídos empregando técnicas de escalonamento e de distribuição de carga.

Exigências prévias de conhecimento e habilidades
O aluno para tirar o máximo proveito da disciplina deve ter conhecimentos sólidos em alguma linguagem de programação.

Padrões mínimos de desempenho
Ao final da disciplina o aluno deverá ser capaz de realizar a modelagem e a implementação de uma aplicação paralela, indicando domínio dos métodos e das ferramentas disponíveis para tal. Também deverá ser capaz de detectar características das aplicações e das arquiteturas que possam vir a influenciar no desempenho de execução de um programa.

Conteúdo programático
Metodologia e recursos de ensino
Exposição dos temas empregando metodologias e técnicas apresentadas pela literatura de referência na área; Trabalhos, tais análise crítica ou implementação de protótipos, tendo como base artigos tratando o estado da arte na área; Realização de estudos de caso.

Avaliação
Bibliografia sugerida

Edição 2005

Avaliação

Média aritmética simples dos seguintes instrumentos:

Calendário
Aula Data Assunto Material
1 21/set Motivação ao uso do PAD, Arquiteturas de computadores para o PAD, Agregado de computadores (cluster); Introdução à Programação Concorrente, Recursos primitivos, Semântica de Execução. Apresentação, Conceitos, Programação Concorrente
2 28/set Programação em Arquiteturas com Memória Compartilhada, Uso de Threads (POSIX) Multiprogramação leve
3 5/out Programação em Arquiteturas com Memória Distribuída, Uso de MPI (Message Passing Interface) Comunicação Interprocessos
4 12/out Feriado
5 19/out Modelos de Concorrência Modelos
6 26/out Exercícios (avaliado)
7 2/nov Feriado
8 9/nov Balanceamento de Carga
9 16/nov Laboratório de Programação
10 23/nov Balanceamento de Carga
11 30/nov Seminário: Ambientes de programação para o processamento de alto desempenho Paulo, Gustavo, Cicero, Otavio
12 7/dez Seminário: Ambientes de programação para o processamento de alto desempenho Marlon, Sidnei, Juliano
13 14/dez Outras Ferramentas, Debug, Trace, Avaliação de Desempenho Entrega de todos os trabalhos