Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
I
IC
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Harbor Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
clac16
IC
Commits
80eaf7ed
Commit
80eaf7ed
authored
3 months ago
by
clac16
Browse files
Options
Downloads
Patches
Plain Diff
Mais ajustes no resumo
parent
7cae160a
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
texto/resumo/resumo-erad.tex
+16
-16
16 additions, 16 deletions
texto/resumo/resumo-erad.tex
with
16 additions
and
16 deletions
texto/resumo/resumo-erad.tex
+
16
−
16
View file @
80eaf7ed
...
...
@@ -9,6 +9,7 @@
\usepackage
{
array
}
\usepackage
{
makecell
}
\usepackage
{
listings
}
\renewcommand
{
\lstlistingname
}{
Listagem
}
\sloppy
...
...
@@ -36,7 +37,7 @@ Curitiba -- PR}
A escolha de compilador pode afetar significativamente a performance de
aplicações.
Este artigo busca avaliar o impacto de diferentes compiladores C/C++ em
aplicações científicas com base no conjunto de benchmarks
r
odinia e
aplicações científicas com base no conjunto de benchmarks
R
odinia e
investigar suas causas.
São testados os compiladores AOCC, Clang, GCC e ICC.
A comparação mostra que o compilador da Intel apresenta uma vantagem
...
...
@@ -78,7 +79,7 @@ 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 dois casos, a avaliação
mostr
ou
que o desempenho dos compiladores varia
Ambos os artigos
mostr
aram
que o desempenho dos compiladores varia
substancialmente.
\section
{
Os testes
}
...
...
@@ -108,7 +109,7 @@ resultados completos, estão disponíveis em
%\subsection{Compiladores testados}
Os compiladores testados foram GCC (14.2.1),
c
lang (19.1.0), ICC (2025.0.1) e
Os compiladores testados foram GCC (14.2.1),
C
lang (19.1.0), ICC (2025.0.1) e
AOCC (5.0).
GCC, parte do projeto GNU, inclui front ends para várias linguagens, assim
como back ends para diversas arquiteturas.
...
...
@@ -130,12 +131,12 @@ testados, mas apenas os mais relevantes serão reportados.\footnote
{
Os dados completos estão disponíveis em
\url
{
https://gitlab.c3sl.ufpr.br/clac16/ic-comparacao-compiladores-x86
}
.
}
Para cada combinação de benchmark, compilador e flags avaliada mediu-se o
tempo de oito execuções individuais e calculou-se
um
a média aritmética.
tempo de oito execuções individuais e calculou-se a média aritmética.
\section
{
Resultados
}
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.
calculados para os
17
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).
...
...
@@ -199,12 +200,11 @@ As observações feitas para a Listagem~\ref{list:pfilter.c.1} se aplicam a
quase todo segmento de Particle Filter analisado.
GCC é o mais agressivo no loop unrolling e, ao vetorizar, sempre se limita ao
uso de registradores XMM, de 128 bits.
De acordo com o tamanho do laço, tipicamente é usado um fator de 4, 8 ou 16,
com o caso típico sendo 8 elementos ou, em código vetorizado, 8 vetores
(16 elementos).
De acordo com o tamanho do laço, é usado um fator de 4, 8 ou 16, com o caso
típico sendo 8 elementos ou, em código vetorizado, 8 vetores (16 elementos).
Ao vetorizar o código, ICC geralmente opera sobre 1 vetor (4 elementos) por
iteração.
Mas e
m código não vetorizado, opera sobre 4 ou 8 elementos por iteração.
E
m código não vetorizado, opera sobre 4 ou 8 elementos por iteração.
Clang e AOCC geram códigos bastante parecidos entre si e geralmente operam
sobre um único elemento ou vetor por iteração.
...
...
@@ -249,11 +249,11 @@ 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 veze
s
mais
rápidas).
apenas o compilador da Intel vetoriza (resultando em execuções 1.6
vezes mai
s
rápidas
para um laço e 2.3 vezes mais rápidas para o outro
).
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
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.
...
...
@@ -269,12 +269,12 @@ 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 a análise do código revela que, mesmo com a flag
\texttt
{
-no-vec
}
, ICC ainda
mantém vetorizações mais simples, incluindo a correspondente
s
ao segmento na
mantém vetorizações mais simples, incluindo a correspondente ao segmento na
Listagem~
\ref
{
list:pfilter.c.1
}
, em que não apenas a vetorização é mantida, mas
o compilador passa a realizar loop unrolling para operar sobre dois vetores
(oito elementos) por iteração.
Portanto, a
varia
ção de desempenho observada não reflete totalmente o efeito
da vetorização
na performance d
o ICC.
Portanto, a
redu
ção de desempenho observada não reflete totalmente o efeito
da vetorização
para
o ICC.
Isto sugere que, enquanto várias diferenças nas estratégias de otimização afetam
o resultado, a principal vantagem do ICC é sua capacidade de vetorização.
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment