CCG opções de otimização para Intel Atom [fechado]
-
02-07-2019 - |
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?
Solução
GCC 4.5 conterá o -march = átomo e -mtune = átomo de opções.
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