É 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 .