Я начну с моего личного опыта в нашей лаборатории. В 9 и 10 днях раньше мы были довольно агрессивны с оптимизацией, компилируя с -O3 и специфичными для процессора флагами (например, -xW -xSSE4.2). Но начиная с ifort 11, мы начали замечать:
1. некоторые несоответствия в результатах (поскольку семантика не сохранилась)
2. меньший выигрыш по сравнению с -O2.
Поэтому в настоящее время мы обычно просто компилируем с -O2 и -xhost. Есть ли у вас лучшие предложения с ifort 11? Изменится ли это еще раз, когда мы перейдем к ifort 12? Заранее спасибо.
performance
hpc
compiling
fortran
FrenchKheldar
источник
источник
Ответы:
Мы настоятельно рекомендуем всем нашим пользователям начать с
-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 .
источник
-O3 -xhost -fp-model precise -fp-model except
привел к замедлению на 30% . Я еще раз посмотрю на профилирование и,-vec-report
чтобы попытаться увидеть, что происходит ...Я работаю в компании, которая производит большие, высокотехнологичные приложения на Фортране с помощью IFort - приложения очень важны для производительности, так как скорость (при сохранении точности) является основным преимуществом.
Мы всегда компилируем с -O3, и, насколько мне известно, главное, что делает -O3, - это развертывание цикла и предварительная выборка. Я подозреваю, что большинство научных вычислительных приложений выигрывают от них, в частности, от циклических оптимизаций. Мы не видели ошибок компилятора довольно давно (хотя мы видели несколько ошибок компоновщика при использовании Ifort на Mac). Мы используем 11.1.095.
Надеюсь, это поможет.
источник
Я понимаю, что этот ответ, вероятно, слишком, слишком поздно, но для агрессивной оптимизации вариант «-fast» кажется самым простым решением. Выдержки из справочной страницы:
источник