Esta disciplina apresenta uma visão prática das técnicas de otimização de
programas altamente dependentes de processamento.
OBJETIVOS:
1. Familiarizar os alunos com as particularidades do processamento de
alto desempenho.
2. Estudo de técnicas especiais de otimização aplicáveis a código
altamente dependente de processamento.
3. Introduzir os conceitos de análise de desempenho.
JUSTIFICATIVA:
Existe um conjunto cada vez maior de aplicações científicas e comerciais
que demandam um volume de processamento muito grande, nas várias áreas
do conhecimento: de previsão meteorológica a cromodinâmica quântica, de
genética a modelagem geométrica, passando por economia e planejamento
industrial, os computadores atuais ainda são insuficientes.
O desevolvimento de programas de alto desempenho exige um conhecimento
específico de técnicas de codificação e implementação que não são vistos
em outras disciplinas. Por se tratar da obtenção do desempenho máximo
possível, nem sempre os compiladores atuais são capazes de identificar
por si só as otimizações necessárias.
CONTEÚDO:
1. Introdução: uma visão geral das aplicações de alto desempenho. Áreas
e exigências computacionais.
2. Microprocessadores de alto desempenho. Processadores vetoriais,
super-escalares, multicore e GPGPUs
3. Estrututura de memória. A importância de cache e da segmentação.
4. Técnicas de otimização tradicionais.
5. Técnicas de otimização avançadas. Otimização de laços.
6. Monitoramento de desempenho. Ferramentas e técnicas.
7. Processamento paralelo: memória compartilhada (threads) e memória
distribuída (MPI)
8. Análise de desempenho
9. Visualização
10. Exemplo detalhado de uma aplicação de alto desempenho
BIBLIOGRAFIA
Kevin Dowd and Charles Severance. High Performance Computing, O'
Reilly, 1998.
Lloyd D. Fosdic, Elizabeth R. Jessup, Carolyn J. C. Schauble, and Gitta
Domik. An Introduction to High-Performance Scientific Computing.
MIT Press, 1996.
Raj Jain. The Art Of Computer Systems Performance Analysis. John Wiley
and Sons, INC. 1992
Victor Eijkhout, Edmond Chow, Robert van de Geijn. Introduction to High
Performance Scientific Computing. (versão preliminar disponibilizada
pelo autor em http://tacc-web.austin.utexas.edu/veijkhout/public_html/Articles/EijkhoutIntroToHPC.pdf)