Técnicas para desenvolvimento e aceleração de códigos científicos
|
Esta página contém informações e material de suporte do minicurso "Técnicas para desenvolvimento e aceleração de códigos científicos", ministrado na 12a edição do Programa de Verão do LNCC.
Desde sua invenção, na década de 40, os computadores eletrônicos de propósito geral evoluíram significativamente e, além do aumento da frequência de operação, diversos mecanismos foram introduzidos para acelerar a execução dos programas. A introdução de caches, preditores de saltos, escalonadores de instruções dinâmicos entre outros permitiram um aumento exponencial contínuo do desempenho dos processadores. Entretanto, estes recursos criaram um abismo entre os modelos de programação existentes e a organização do hardware e tornaram o desenvolvimento de programas eficientes um desafio à parte em processadores modernos.
Este minicurso apresentará uma visão geral sobre a organização de computadores modernos bem como métodos e ferramentas para se analisar e melhorar desempenho de aplicações nestes computadores. Também serão demonstradas ferramentas que auxiliam o desenvolvimento e a manutenção dos códigos-fonte.
Segunda | Terça | Quarta | Quinta | Sexta |
Introdução | Perfilamento - Contagem de Tempo | Otimizações Simples / Compilação | Perfilamento - Detecção de Código Quente | GDB |
Organização de Processadores Modernos | Otimização de Acesso a Dados | Bibliotecas Otimizadas | SVN+CMake | Valgrind |
Introdução ao Laboratório | Vetorização de Código |
Os objetivos destes minicurso são: