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)