diff --git a/texto/resumo/resumo-erad.tex b/texto/resumo/resumo-erad.tex index cab48d2a366ea3045edd10d5baa18a98fe99f03a..4496aa074725e677cd4e03cd6e6c4415fff7c8d6 100644 --- a/texto/resumo/resumo-erad.tex +++ b/texto/resumo/resumo-erad.tex @@ -14,7 +14,7 @@ \title{Comparação de compiladores C/C++ para processadores x86} -\author{Cristopher Carcereri \inst{1}} +\author{Cristopher Carcereri \inst{1} \and Daniel Oliveira \inst{1}} \address{Departamento de Informática -- Universidade Federal do Paraná (UFPR)} @@ -58,17 +58,17 @@ de aplicações científicas, usando um conjunto abrangente de benchmarks. Além de quantificar diferenças no tempo de execução, buscamos investigar as causas das disparidades observadas. -\cite{kasliwal2017} compara a performance de seis compiladores -C/C++ para Intel Xeon Platinum baseado na arquitetura Skylake usando três -kernels pararelizados com OpenMP. +%\cite{kasliwal2017} compara a performance de seis compiladores +%C/C++ para Intel Xeon Platinum baseado na arquitetura Skylake usando três +%kernels pararelizados com OpenMP. \cite{davis2021} testou seis compiladores usando cinco aplicações em sistemas heterogêneos com GPUs Nvidia V100. -Com o maior parte dos compiladores foi empregado OpenMP para o GPU offload, mas -OpenACC e CUDA e também foram utilizados . +Com a maior parte dos compiladores foi empregado OpenMP para o GPU offload, mas +OpenACC e CUDA também foram utilizados . \cite{halbiniak2022} examina cinco compiladores para processadores AMD EPYC Rome usando duas implementações, paralelizadas com OpenMP, de modelagem numérica da solidificação de ligas. -Nos três casos, a avaliação mostrou que o desempenho dos compiladores varia +Nos dois casos, a avaliação mostrou que o desempenho dos compiladores varia substancialmente. \section{Os testes} @@ -125,7 +125,6 @@ tempo de oito execuções individuais e calculou-se uma média aritmética. A Tabela~\ref{tab:resultados-medios} mostra a média geométrica dos tempos médios calculados para os benchmarks com algumas combinações de compilador e flags. Em todos os casos o desvio padrão geométrico é igual ou inferior a 1.01. - São omitidas a flag de dialeto (\texttt{-std=gnu89}) usada com alguns programas em C e as flags que habilitam OpenMP (\texttt{-qopenmp} com ICC, \texttt{-fopenmp} com os demais compiladores). @@ -180,7 +179,7 @@ Foram escolhidos os códigos gerados com as flags \texttt{-O3} e A Listagem~\ref{list:pfilter.c.1} contém um segmento do programa. A seção que o inclui executa aproximadamente \(2.4\) vezes mais rápido no -programa gerado pelo ICC do que no produzido pelo GCC, e aproximadamente \(1.4\) +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. \begin{lstlisting}[label=list:pfilter.c.1,basicstyle=\small, @@ -231,7 +230,7 @@ computá-lo uma única vez, no laço exterior: o código correspondente ao segme apenas carrega este valor. Nenhum dos compiladores, no entanto, remove toda a atribuição da linha 4. -Outro trecho de particle-filter é apresentado na Listagem~\ref{list:pfilter.c.3}. +Outro trecho é apresentado na Listagem~\ref{list:pfilter.c.3}. Como no primeiro exemplo, apenas o ICC vetoriza o código. Para tanto, o laço principal mantém quatro acumuladores em um registrador. Ao sair do laço, o valor dos quatro acumuladores é somado. @@ -245,7 +244,7 @@ Clang e AOCC nem vetorizam nem realizam loop unrolling. } \end{lstlisting} -\section{Impacto da vetorização} +\section{Conclusão} A análise dos códigos demonstra que o compilador da Intel identifica possibilidades de vetorização automática que os outros compiladores ignoram. GCC, em especial, mesmo ao vetorizar um código, pode não ser capaz de utilizar @@ -256,7 +255,6 @@ De fato, como mostra a Tabela~\ref{tab:resultados-medios}, ICC é o compilador mais afetado ao se desabilitar a vetorização automática, com sua performance média piorando em cerca de 4\%. A vantagem frente ao GCC é reduzida para cerca de 1\%. - Mas essa diferença não reflete totalmente o efeito da vetorização na performance do ICC. A análise do código revela que o código compilado com \texttt{-no-vec} ainda @@ -265,9 +263,8 @@ na Listagem~\ref{list:pfilter.c.2} e Listagem~\ref{list:pfilter.c.3}, em que não apenas a vetorização é mantida, mas o compilador passa a realizar loop unrolling para operar sobre oito elementos (dois vetores) por iteração. -\section{Conclusão} \bibliographystyle{sbc} -\bibliography{sbc-template} +\bibliography{resumo-erad} \end{document}