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!