Pergunta

Estou desenvolvendo uma aplicação crítica desempenho para o processador Intel Atom.

Quais são as melhores opções de otimização gcc para este CPU?

Foi útil?

Solução

GCC 4.5 conterá o -march = átomo e -mtune = átomo de opções.

Fonte: http://gcc.gnu.org/gcc-4.5/changes. html

Outras dicas

Existe um quadro legal chamado Acovea (Análise de Opções do compilador via Algoritmo Evolutivo) , por Scott Rober Ladd, um dos hackers do CCG. É um quadro algoritmo genético / evolutivo que tenta opções de otimização otimizar CCG para uma parte específica do código via seleção natural.

Ele funciona assim: você escreve um pequeno pedaço de código de referência (que realmente tem que ser pouco, porque será e executado milhares de vezes compilado-re) que representa as características de desempenho do programa maior que você deseja otimizar. Então acovea constrói aleatoriamente algumas dezenas de diferentes comandos de linha do CCG e compila e executa o benchmark com cada um deles. O melhor destes comandos de linha são depois deixou-se "mate" e "raça" novos "filhos" que (espero) herdam as melhores "genes" de seus "pais". Este processo é repetido para um par dúzia de "gerações", até que um conjunto estável de bandeiras de linha de comando emerge.

Eu tenho um script que auto seleciona as bandeiras adequadas para o seu CPU e combinação compilador. Eu apenas atualizado para suportar Intel Atom:

http://www.pixelbeat.org/scripts/gcccpuopt

Update: I anteriormente especificado -march = Prescott para Atom, mas olhando mais para ele mostra que o átomo é compatível ISA Merom, portanto -march = core2 é mais apropriado. Note, porém, que os átomos estão em ordem núcleos, o último dos que sendo o pentium originais. Portanto, é provavelmente melhor para -mtune = pentium também. Infelizmente eu não tenho um átomo de teste. Eu realmente aprecio se alguém poderia referência a comparação entre:

-march=core2 -mfpmath=sse -O3
-march=core2 -mtune=pentium -mfpmath=sse -O3

Update: Aqui estão algumas de Nice artigos sobre otimização de baixo nível para Atom:

Bem, os estados wiki do Gentoo para o Prescott:

http://en.gentoo-wiki.com/wiki/Safe_Cflags/ Intel # Atom_N270

CHOST = "i686-pc-linux-gnu"

CFLAGS = "- march = Prescott -O2 -pipe -fomit-frame-pointer"

CXXFLAGS = "$ {CFLAGS}"

De Intel, Primeiros passos no MID

Ao usar GCC para compilar, há algumas bandeiras recomendado usar:

  • -O2 ou -o1: O2 otimiza bandeira para a velocidade, enquanto os -o1 otimiza bandeira para o tamanho
  • -msse3
  • -march = core2
  • -mfpmath = sse

Assim como para Pentium 4:

-march=prescott -O2 -pipe -fomit-frame-pointer

Eu não sei se GCC tem quaisquer opções de otimização específicas do Atom ainda, mas o núcleo do átomo é suposto ser muito semelhante ao do Pentium original, com a adição muito significativa do SSE3 / SSSE3 MMX / SSE / SSE2 / conjuntos de instruções. Claro, estes só fazer uma diferença significativa se o seu código é de ponto flutuante ou DSP-pesado.

Talvez você poderia tentar:

gcc -O2 -march = pentium -mmmx -msse -msse2 -msse3 -mssse3 -mfpmath = sse

aqui vai uma cruzada polinização de blogs ... o que eu estava realmente esperando era uma referência firefox compilado-for-átomo ...

Endereço: http: // ivoras.sharanet.org/blog/tree/2009-02-11.optimizing-for-atom.html

"Como se vê, gcc aparece para fazer um trabalho muito decente com -mtune = nativa, e mtune = genérico é mais do que aceitável. Os maiores ganhos (neste referencial matemática-pesado) vem usando SSE para a matemática, mas mesmo eles são destruídos por ajuste para pentium4.

"A diferença entre o mais rápido eo mais lento otimização é de 21%. O impacto do uso de marcha em vez de mtune é insignificante (diferença não o suficiente para dizer se isso ajuda ou não).

"(Eu incluí k6 apenas para referência - Eu sei que não Atom não tem 3DNow)

"update tardio:. Optimização para k8 (com SSE e O3) apresenta ligeiramente mais elevado melhor pontuação de 182"

i686 é mais próximo. Não vá para core2.

GCC 4.1 O3 -march = i686 GCC 4.3 O3 -march = native

GCC 4.1 -O4 -ffast-matemática GCC 4.3 -O4 -ffast-matemática

http: // Macles .blogspot.com / 2008/09 / intel-cc-compiler-gcc-and-intel-atom.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top