Alguém aqui tem um compilador de C++ e GCC?

Não tenho a certeza se devo publicar esta pergunta aqui, porque este parece ser um site orientado para a programação.

De qualquer forma, acho que deve haver algum gurus aqui que saiba disto.

Agora tenho um servidor de Opteron AMD a executar CentOS 5. Eu quero ter um compilador para um programa bastante grande baseado em C++ Boost. Que compilador devo escolher?

Author: Peter Mortensen, 2009-11-14

9 answers

Espero que isto ajude mais do que dói. Fiz um tiroteio de compiladores há mais de um ano e estou a perder a memória.
  1. GCC 4. 2 (maçã)
  2. Intel 10
  3. GCC 4. 2 (maçã) + LLVM
Testei vários modelos de programas de processamento de sinais áudio pesados que escrevi.

Tempos de Compilação: o compilador Intel era de longe o compilador mais lento - mais de '2x vezes mais lento' como outro postado Citado.

GCC manipulado profundamente modelos muito bem em comparação com a Intel.

O compilador Intel gerou ficheiros de objectos enormes.

O GCC+LLVM rendeu o binário mais pequeno.

O código gerado pode ter variância significativa devido à construção do programa, e onde o SIMD pode ser usado.

Pela forma como escrevo, descobri que o GCC + LLVM gerou o melhor código. Para programas que eu tinha escrito antes de levar a otimização a sério (como eu escrevi), a Intel era geralmente melhor. Os resultados da Intel variaram; lidou com alguns programas muito melhor, e alguns programas muito pior. Ele lidou com o processamento bruto muito bem, mas eu dou GCC+LLVM o bolo porque quando colocado no contexto de um programa maior (normal)... foi melhor. A Intel ganhou por fora da caixa, a analisar números em grandes conjuntos de dados.

O GCC sozinho gerou o código mais lento, embora possa ser tão rápido com a medição e nanotimizações. Eu prefiro evitar isso porque o vento pode mudar de direção com a próxima versão do compilador, por assim dizer.

Nunca medi programas mal escritos neste teste (ou seja, resultados de distribuições superadas de bibliotecas de desempenho populares).

Finalmente, os programas foram escritos ao longo de vários anos, usando o GCC como o compilador primário na época.

Actualização: também estava a permitir optimizações / extensões para o Core2Duo. Os programas foram limpos o suficiente para permitir uma aliasing estrita.

 19
Author: justin, 2009-12-02 05:21:32

Existe um interessante PDF aqui que compara um número de compiladores.

 25
Author: Goz, 2009-11-14 08:30:11
A equipa MySQL postou assim que o TPI lhes deu um aumento de 10% sobre o GCC. Vou tentar encontrar a ligação. Em geral, descobri que os compiladores 'nativos' têm melhor desempenho do que o gcc nas respectivas plataformas.

Edit: eu estava um pouco fora. Os ganhos típicos foram 20-30% e não 10%. Alguns casos de borda estreita tiveram uma duplicação de desempenho. http://www.mysqlperformanceblog.com/files/presentations/LinuxWorld2004-Intel.pdf

 15
Author: Glen, 2009-12-02 04:30:39

Eu suponho que varia dependendo do código, mas com a base de código que eu estou trabalhando agora, ICC 11.035 dá uma melhoria quase 2x sobre gcc 4.4.0 em um Xeon 5504.

Opções do TPI: -O2 -fno-alias
opções do gcc: -O3 -msse3 -mfpmath=sse -fargument-noalias-global

As opções são específicas apenas para o arquivo que contém o código de computação intensiva, onde eu sei que não há aliasing. Código único com um ciclo aninhado de 5 níveis.

Embora a autovectorização esteja activa, nenhum dos compiladores gera código vectorizado (não uma falha dos compiladores)


Actualização (2015/02/27): Enquanto otimizava alguns códigos de Geofísica (Q2, 2013) para correr em Sandy Bridge-e Xeons, eu tive a oportunidade de comparar o desempenho do ICC 11.1 com o GCC 4.8.0, e o GCC estava agora gerando código mais rápido do que o ICC. O código Feito usado de AVX intrinsics e fez uso de instruções vectorizadas de 8-way (nieither compiler autovectorizou o código corretamente devido a certos requisitos de layout de dados). Além disso, a implementação do LTO do CCG (com o IR núcleo embutido no .o Arquivos) foi muito mais fácil de gerenciar do que isso no ICC. O GCC com LTO estava rodando cerca de 3 vezes mais rápido que o ICC sem LTO. Não consigo encontrar os números do GCC sem o LTO, mas lembro-me que ainda era mais rápido do que o TPI. Não é de forma alguma uma declaração geral sobre o desempenho do TPI, mas os resultados foram suficientes para avançarmos com o GCC 4.8.*.

Ansioso pelo GCC 5.0 (http://www.phoronix.com/scan.php?page=article&item=gcc-50-broadwell)!

 6
Author: Gautham Ganapathy, 2015-02-27 13:06:37

Usamos o compilador Intel no nosso produto (DB2), no Linux e no Windows IA32/AMD64, e no OS X (ou seja, todas as nossas portas de plataforma Intel excepto o SunAMD).

Não sei os números,mas o desempenho é bom o suficiente para nós:
    Paga o compilador que me dizem ser muito caro.
  • viver com os 2x vezes mais lentos tempos de construção (principalmente devido ao tempo que gasta a adquirir licenças antes de se permitir executar).
 5
Author: Peeter Joot, 2009-12-02 04:31:10

PHP - Compilação a partir da fonte, com ICC em vez de GCC, deve resultar em uma melhoria de velocidade de 10% a 20% - http://www.papelipe.no/tags/ez_publish/benchmark_of_intel_compiled_icc_apache_php_and_apc

MySQL - Compilação a partir do código, com ICC em vez de GCC, deve resultar em uma melhoria de velocidade de 25% a 50% - http://www.mysqlperformanceblog.com/files/presentations/LinuxWorld2005-Intel.pdf

 3
Author: Denis TRUFFAUT, 2012-02-06 07:52:43
Costumava trabalhar num sistema de processamento de sinais bastante grande que funcionava num grande aglomerado. Calculávamos que, para calcular matemática pesada, o compilador de Informações deu-nos cerca de 10% menos carga de CPU do que GCC. Isso é muito pouco científico, mas foi a nossa experiência (que foi cerca de 18 meses atrás). O que teria sido interessante se tivéssemos usado as bibliotecas de matemática da Intel, que usam o chipset de forma mais eficiente.
 1
Author: Benj, 2009-11-16 19:23:13

Eu usei UnixBench (v. 5.1.3) num openSUSE 12.2 (kernel 3.4.33-2.24-default x86_64), e compilou-o primeiro com o GCC, e depois com o compilador da Intel.

Com 1 cópia paralela, o UnixBench compilado com o Intel é cerca de 20% mais rápido do que a versão compilada com o GCC. No entanto, isto esconde grandes diferenças. Dhrystone é cerca de 25% mais lento com o compilador Intel, enquanto Whetstone corre 2x mais rápido.

Com 4 cópias de UnixBench a correr em paralelo, a melhoria da Intel compilador sobre GCC é apenas 7%. Mais uma vez Intel é muito melhor em Whetstone (> 200%), e mais lento em Dhrystone (cerca de 20%).
 1
Author: Calimo, 2013-04-15 12:27:51

Muitas optimizações que o compilador Intel executa normalmente requerem uma sintaxe de fonte específica e o uso de-O3-ffast-math para o gcc. Infelizmente, o componente-funsafe-math-optimizations de-ffast-math-O3-march=native acabou por ser incompatível com-fopenmp, então eu devo dividir meus arquivos fonte em grupos nomeados com as diferentes opções no Makefile. Hoje eu encontrei uma falha onde uma compilação g++ usando-O3-ffast-math-fopenmp-march = native foi capaz de escrever para a tela, mas não redirecciona para um ficheiro. Uma das diferenças mais flagrantes na minha opinião é a otimização por icpc apenas de std::: max e min onde gcc / g++ querem que o fmax / min[F] com-ffast-math altere o seu significado longe do padrão.

 0
Author: tim18, 2015-05-25 14:15:33