sexta-feira, 13 de julho de 2018
O GCC 8 não tem sido tão rápido quanto deveria para Skylake com "-march = native"
Confira!!
contece que, ao usar o GCC 8 desde abril (ou o código de desenvolvimento do GCC 9) se for executado no Intel Skylake (ou arquiteturas mais recentes como o Cannonlake ou Icelake, que ainda não saiu) e compilar seu código com o "-march = native "sinalizar o que deve sintonizar os recursos completos da microarquitetura do seu processador, que não foi inteiramente o caso. Uma correção está a caminho que pode corrigir o desempenho em até 60%.
HJ Lu, da Intel, postou um patch hoje para afinar o Skylake, Cannonlake. e alvos Icelake ao usar a opção "-march = native". Ele explicou no patch apenas postado :
O r259399, que adicionou PROCESSOR_SKYLAKE, desativou muitas otimizações x86 que são ativadas pelo PROCESSOR_HASWELL. Como resultado, -mtune = skylake gera códigos mais lentos no Skylake do que antes. O mesmo também se aplica a Cannonlake e [Icelake] tuning.
Este patch muda -mtune = {skylake | cannonlake | icelake} para sintonizar like -mtune = haswell até que o ajuste seja ajustado adequadamente. Ele também ativa -mprefer-vector-width = 256 para -mtune = haswell, que não tem impacto sobre codegen quando o AVX512 não está ativado.
...
Este patch melhora -march = performance nativa no Skylake até 60% e deixa -march = performance nativa inalterada em Haswell.
Essa revisão do GCC foi feita em abril e causou -march = native a não ser explorada em todo o seu potencial no Skylake e mais recente. Assim, faz parte da atual versão estável do GCC 8.1. Embora, se você não usar o sinalizador "-march = native", ainda esteja no GCC 7, etc., o desempenho ainda deve ser o mesmo. Muitas vezes usando "-march = native" para comparações de benchmark, será interessante verificar novamente o desempenho do GCC 8 no Skylake + assim que este patch for fundido em presumivelmente no futuro próximo.
Fonte
Até a próxima!!
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário