Começarei com minha experiência pessoal em nosso laboratório. Nos 9 e 10 dias da ifort, costumávamos ser bastante agressivos com as otimizações, compilando com -O3 e sinalizadores específicos do processador (-xW -xSSE4.2 por exemplo). Mas a partir do ifort 11, começamos a notar:
1. algumas inconsistências nos resultados (porque a semântica não foi preservada)
2. ganhos menores em comparação com -O2.
Portanto, atualmente, geralmente compilamos com -O2 e -xhost. Você tem sugestões melhores com o ifort 11? Isso mudará mais uma vez quando passarmos para a ifort 12? Desde já, obrigado.
performance
hpc
compiling
fortran
FrenchKheldar
fonte
fonte
Respostas:
É altamente recomendável que todos os nossos usuários iniciem
-O3 -xHost -ipo
o ifort 11 e o ifort 12. Se houver transformações específicas de ponto flutuante ativadas pelo O3 que afetem a precisão de alguns de seus cálculos, você pode desativá-los especificamente com-fp-model precise -fp-model except
(ou, de maneira mais drástica-fp-model strict
) enquanto mantém as outras otimizações habilitadas pelo O3, como bloqueio de loop para cache, fusão e desenrolamento de loop e otimizações de acesso à memória.Aconselho tentar o material do modelo de ponto flutuante em arquivos individuais e descobrir onde isso faz diferença, em vez de desativá-lo globalmente; pode ser um aumento de velocidade de aproximadamente 15% e você deseja mantê-lo onde isso não afeta seus cálculos. Se não tiver certeza de onde a precisão está sendo afetada, você pode ativar e desativar os sinalizadores de modelo de ponto flutuante desses arquivos ou tocar nos modos de arredondamento .
Recentemente, fizemos uma breve conversa com nossos usuários sobre sinalizadores de otimização, focando nos compiladores gnu e intel para x86; você pode ver os slides dessa palestra aqui .
Aliás, enquanto estamos falando sobre a escolha de sinalizadores de otimização para o seu código, de vez em quando também vale a pena examinar a saída de -vec-report para ver onde o compilador tentou vetorizar um loop e não conseguiu; Às vezes, há pequenas alterações que você pode fazer no seu loop, o que pode resultar na possibilidade de vetorização (que pode ser uma aceleração de 4x). Da mesma forma, para o relatório -opt- geral .
fonte
-O3 -xhost -fp-model precise -fp-model except
resultou em uma desaceleração de 30% . Eu vou olhar novamente para a caracterização ea-vec-report
tentar ver o que está acontecendo ...Trabalho para uma empresa que produz aplicativos grandes e altamente técnicos no Fortran com o IFort - os aplicativos são muito críticos para o desempenho, pois a velocidade (mantendo a precisão) é o principal ponto de venda.
Sempre compilamos com -O3 e, pelo que sei, as principais coisas que -O3 fazem são desenrolar e pré-buscar em loop. Suspeito que a maioria dos aplicativos de computação científica se beneficie bastante com eles, principalmente as otimizações de loop. Não vemos erros de compilador há algum tempo (embora tenhamos visto alguns erros de vinculador ao usar o Ifort em um Mac). Nós usamos 11.1.095.
Eu espero que isso ajude.
fonte
Sei que essa resposta provavelmente é muito, muito tarde, mas para otimização agressiva, a opção "-fast" parece ser a solução mais fácil. Trechos da página do manual:
fonte