diff --git a/texto/resumo/resumo-erad.tex b/texto/resumo/resumo-erad.tex index 0872b42678b85533874dcd7f2090b87ebe794ef4..91fd1344e3d01b6c56fe13e1fb957021847cc0f1 100644 --- a/texto/resumo/resumo-erad.tex +++ b/texto/resumo/resumo-erad.tex @@ -118,8 +118,7 @@ Clang é o front end para linguagens na família C para o LLVM. O Intel C Compiler também é baseado no LLVM, com a versão 2025.0.1 tendo LLVM 19.0.0 como back end. %Comando "icx -x c /dev/null -dM -E|grep clang" para exibir a versão. -AOCC é um fork do Clang que inclui otimizações da AMD, com foco particular -(nas últimas versões) em processadores Zen. +AOCC é um fork do Clang que inclui otimizações da AMD. O AOCC 5.0 tem como back end o LLVM 17.0.6. %https://www.amd.com/pt/developer/aocc.html @@ -140,7 +139,7 @@ em C e as flags que habilitam OpenMP (\texttt{-qopenmp} com ICC, \texttt{-fopenmp} com os demais compiladores). As diferenças nas flags selecionadas visam compensar variações entre as flags -definidas para compiladores. +definidas para os compiladores. Com AOCC, Clang e ICC \texttt{-O3} implica loop unrolling, mas não com GCC. E, por default, ICC usa um modelo de ponto flutuante (\texttt{-fp-model=fast=1}) que habilita otimizações que sacrificam a acurácia da aritmética, ao contrário @@ -240,9 +239,21 @@ caption={Segmento de Particle Filter (linhas 288--293)}] %Nenhum dos compiladores, no entanto, remove toda a atribuição da linha 4. O segmento na Listagem~\ref{list:pfilter.c.2} é a principal parte da seção que -domina o tempo de execução do programa e que executa aproximadamente \(2.4\) +domina o tempo de execução do programa e que executa aproximadamente 2.4 vezes mais rápido no programa gerado pelo ICC do que no produzido pelo -GCC, e cerca de \(1.4\) vezes mais rápido no GCC do que no Clang e AOCC. +GCC, e cerca de 1.4 vezes mais rápido no GCC do que no Clang e AOCC. + +O programa para o qual ICC apresenta a segunda maior vantagem, SRAD, revela uma +situação similar. +Tomando-se as mesmas flags que a análise anterior, o desempenho do ICC é cerca +de 36\% melhor que o do Clang e do AOCC, e a diferença se deve a dois laços que +apenas o compilador da Intel vetoriza (resultando em execuções 1.6 e 2.3 vezes +mais rápidas). +Naturalmente, outros fatores impactam o desempenho. +Apesar de GCC, Clang e AOCC nem vetorizarem nem realizarem unroll em um desses +laços, a versão do GCC o executa em um tempo 2,7 vezes maior que a dos +outros dois, contribuindo para uma performance 49\% pior que a desses +compiladores. \section{Conclusão} A análise demonstra que o compilador da Intel identifica possibilidades de