Опции компилятора Intel Fortran

ifort -команда для вызова компилятора Intel(R) Fortran.

Синтаксис команды:

ifort [параметры] file1 [file2] ...
  • параметры  могут отсутствовать или содержать опции компилятора
  • fileN – это файлы на языке  Fortran, сборочные файлы, объектные файлы, библиотеки объектов или другие линкуемые  файлы

Полный список опций можно посмотреть по команде man ifort .

Команда ifort интерпретирует входные файлы по суффиксу имени файла следующим образом:
Имена файлов с суффиксом .f90 интерпретируются как файлы в свободной форме записи  на Fortran 95/90.
Имена файлов с суффиксом .f, .for или .ftn интерпретируются как фиксированная форма записи для  Fortran  66/77  файлов.

В Fortran 90/95, наряду с фиксированным форматом исходного текста программы, разрешен свободный формат. Свободный формат допускает помещение более одного оператора в строке, при этом в качестве разделителя используется точка с запятой. Признак продолжения оператора на строку продолжения - символ & - указывается в конце той строки, которую надо продолжить. Комментарии записываются после символа восклицательный знак в начале строки или в любой позиции строки после оператора. В свободном формате пробелы являются значащими.

Некоторые важные опции компиляции для Intel Fortran приведены ниже:

  Опция   Назначение
-free Указывает, что исходные файлы находятся в свободном формате.
По умолчанию, формат исходного файла определяется суффиксом файла
-fixed Указывает, что  исходные файлы находятся в фиксированном формате. По умолчанию, формат исходного файла определяется суффиксом файла
Эта опция означает, что необходима только компиляция. Из исходных файлов программы создаются объектные файлы
-C Включает  проверки выхода индекса за границы массива
-i2 Целые и логические переменные длиной 2 байта (тоже, что и опция -integer-size 16). По умолчанию целочисленный размер равен 32 разряда.
-i4 Целые и логические переменные длиной 4 байта (тоже, что и опция -integer-size 32 ). Это значение устанавливается по умолчанию.
-i8 Целые и логические переменные 8 байт (тоже ,  что и опция -integer-size 64). По умолчанию целочисленный размер равен 32 разряда.
-O0 Отключает оптимизацию
-О1 Оптимизация по размеру. Не использует методов оптимизации, которые могут увеличить размер кода. Создает в большинстве случаев самый маленький размер кода.
-O2 или -O Максимизация скорости. Как правило, создает более быстрый код, чем -O1. Эта опция устанавливается по умолчанию для оптимизации, если не указана  -g
-O3 Задействует методы оптимизации из -O2 и, дополнительно, более агрессивные методы оптимизации циклов и доступа к памяти, такие как подстановка скаляров, раскрутка циклов, подстановка кода для избегания ветвлений, блокирование циклов для обеспечения более эффективного использования кэш-памяти и, только на системах архитектуры IA-64, дополнительная подготовка данных. Данная опция особенно рекомендуется для приложений, где есть циклы, которые активно используют вычисления с плавающей точкой или обрабатывают большие порции данных. Эти агрессивные методы оптимизации могут в ряде случаев, и замедлить работу приложений других типов по сравнению с использованием -O2.
-OpenMP Включает поддержку стандарта OpenMP 2.0
Распараллеливает программу. Позволяет параллелизацию для создания многопоточного кода на основе команд OpenMP. Этот опция  может быть выполнена в параллельном режиме  на однопроцессорных и многопроцессорных системах. OpenMP-опция работает как с-O0 (без оптимизации) и c любым уровнем оптимизации -O. Указание с-O0 помогает для отладки OpenMP приложений.
-OpenMP-stubs Включает выполнение программ OpenMP в последовательном режиме. Директивы OpenMP игнорируются, если стоят заглушки (stubs) для OpenMP
-p Порождает дополнительный код для записи профилирующей информации, подходящей  для  анализирующей  программы PROF. Вы должны использовать эту опцию при компиляции исходного файла, о котором вы хотите получить информацию, и вы также должны использовать ее при линковке.
-parallel Включает автоматическое распараллеливание   циклов, для которых это  безопасно. Чтобы использовать эту опцию, вы также должны указать-O2 и-O3.
-r8 Вещественные  и комплексные переменные длиной  8 байт. Переменные REAL рассматриваются как DOUBLE PRECISION (REAL(KIND=8)) и комплексные  рассматриваются в качестве DOUBLE COMPLEX (COMPLEX(KIND=8)). Это тоже самое, что и указать -real-size 64  или -autodouble.
-r16 Вещественные и комплексные переменные  длиной 16 байт. Переменные REAL  рассматриваются как  REAL (REAL(KIND=16), COMPLEX и DOUBLE COMPLEX  рассматривается как COMPLEX (COMPLEX(KIND=16)). Это тоже самое, что и указать -real-size 128.
-save Сохраняет  переменные, за исключением тех, которые объявлены, как AUTOMATIC, в статической памяти (тоже, что и  noauto-noautomatic). По умолчанию используется –autoscalar, однако, если Вы укажите -recursive или -OpenMP, то по умолчанию используется AUTOMATIC
-stand Заставляет компилятор выдавать   сообщения компиляции для нестандартных элементов языка.
-fast Обеспечивает ускоренный метод для  нескольких оптимизаций на время выполнения программы.
Устанавливает следующие параметры для повышения производительности:
• -O3
• -ipo (включает межпроцедурную оптимизацию между файлами)
• -static (предотвращает линкование с общими библиотеками).
-g Помещает в объектный или исполняемый файл отладочную информацию для отладчика gdb. Опция должна быть указана и для компиляции, и для компоновки. В сочетании –g рекомендуется использовать опцию отключения оптимизации –O0
-check bounds Выполняет динамическую проверку выхода индекса за границы массива. Проверка может увеличить время выполнения программы.
-I Использует для добавления ваших собственных каталогов  поиска заголовочных файлов в процессе сборки
-L Передает компоновщику. Использует для добавления ваших собственных каталогов  поиска библиотек в процессе сборки.
-l Передает компоновщику. Использует для добавления ваших собственных библиотек  поиска в процессе сборки.