Мы настоятельно рекомендуем всем нашим пользователям начать с -O3 -xHost -ipo
ifort 11 и ifort 12. Если в O3 есть конкретные преобразования с плавающей запятой, которые влияют на точность некоторых ваших вычислений, вы можете отключить их специально с помощью-fp-model precise -fp-model except
(или, что более резко -fp-model strict
) при сохранении других оптимизаций, которые поддерживает O3, таких как блокировка цикла для кэша, объединение и развертывание цикла и оптимизация доступа к памяти.
Я бы посоветовал попробовать материал с плавающей запятой для отдельных файлов и выяснить, где это имеет значение, а не отключать его глобально; это может быть скачок скорости ~ 15%, и вы хотите иметь возможность сохранить его там, где это не повлияет на ваши расчеты. Если вы не уверены, где влияет точность, вы можете поиграть с включением и выключением флагов модели с плавающей запятой для этих файлов, или с режимами округления .
Недавно мы кратко рассказали нашим пользователям о флагах оптимизации, сосредоточившись на компиляторах gnu и intel для x86; Вы можете увидеть слайды этого разговора здесь .
Кстати, в то время как мы говорим о выборе флагов оптимизации для вашего кода, время от времени также стоит посмотреть на вывод -vec-report, чтобы увидеть, где компилятор попытался векторизовать цикл и не смог; иногда есть небольшие изменения, которые вы можете внести в ваш цикл, что может привести к возможности векторизации (что может быть в 4 раза быстрее). Аналогично для более общего -opt-report .