4th Internal Conference on Computer Architecture (ICCA'03)
Material diverso p/ "Performance evaluation":
Pretende-se com este trabalho realizar estudos comparativos de desempenho, na resolução de um dado problema de cálculo numérico, com ênfase na ligação entre as variações de desempenho e a arquitectura subjacente.
Por "estudos
comparativos de desempenho"
entende-se a realização de medições
experimentais (tempos) e comentar os resultados obtidos e agrupados em gráficos
quando necessário.
Sugere-se a leitura, como ponto de partida, dos capítulos 5, 6 e 9 do livro do
Bryant & O'Hallaron (Computer Systems: A Proegrammers Perspective, da
Prentice Hall, de Agosto 2002, 1 exemplar na biblioteca da UM), disponíveis
também em formato electrónico na sua versão preliminar, integrados num
ficheiro com o livro todo (Versão
Beta quase integral (falta Ch.4) com 784 páginas, em formato PDF e
compactado .zip (3.44MB)).
Por "dado
problema de cálculo numérico",
sugere-se um problema simples e clássico para qualquer matemático: a
multiplicação de 2 matrizes quadradas.
As implicações no desempenho podem-se dever:
- ao algoritmo em si: sugere-se que o grupo proponha 2 algoritmos - um
simples, e outro que considere "óptimo" - e que a esses junte
algoritmos que encontre na literatura (por ex., "Matrix Computation"
de G. Golub & C. Van Loan, 3rd ed., John Hopkins University Press)
- à codificação dos algoritmos: existem vários programas em C na Web,
sendo um dos mais conhecidos o mm.c
de Mark Smotherman; por outro lado a LAPACK costuma usar rotinas do BLAS (1, 2
e/ou 3); usem-nos!
- ao compilador: testar mais que um compilador, ou usar apenas o GCC e
testar as diversas opções de optimização, interpratando as eventuais
disparidades nos tempos de desempenho;
- ao código gerado: olhara para o programa em assembly (do IA32, se for
num PC) e tentar identificar possíveis fontes de optimização e validá-las.
Com base nestas alternativas todas, efectuar diversas medições de tempos de execução, organizar os resultados e comentá-los!