Теория: Опции, управляющие работой компилятора F77 и редактора связей


Оптимизации

Общие опции

Ц -fast

Устанавливает опции, улучшающие время выполнения: -assume oaccuracy_sensitive, -align dcommons, -math_library fast, и -O4.

Ц -O0

Отменяет все оптимизации.

Ц -O1

Включает локальные оптимизации и экономию общих подвыражений. Граф вызовов определяет порядок компиляции процедур.

Ц -O2

Включает глобальную оптимизацию и все -O1 оптимизации, включая перемещение кодов, уменьшение количества и замену проверок, расщепление анализа во время выполнения, планирование кода и подстановку арифметических функций-операторов.

Ц -O3

Включает дополнительную глобальную оптимизацию, которая улучшают скорость (ценой размера экстракодов), например: умножение целых и расширение деления (использование сдвигов), развертка цикла, и копирование кодов для устранения ветвей. Также выполняет все оптимизации -O2.

Ц -O4

Разрешает подстановку небольших процедур и всех -O3 оптимизации. Тем не менее, если Вы определяете опцию -g, умолчанием является -O0. (Смотри также опции -g2 или -g).

Ц -O5

Включает конвейер программ, оптимизации преобразования цикла, и другие оптимизации, включая байт-векторизацию, и вставку дополнительных NOPs (Операций No) для выравнивания последовательностей мульти-передачи.

Оптимизации преобразования цикла являются группой оптимизаций, которые относятся к ссылкам на массив в пределах циклов. Эти оптимизации могут улучшить действие системы памяти и могут относиться к повторению шагов цикла. Этот тип оптимизации может также определяться использованием опции -transform_loops.

Программный конвейер применяется к командам , планирующим определенные внутренние циклы, допуская "свертку" инструкции в пределах цикла и выполнение на другой итерации цикла. Этим может уменьшиться влияние операций длинного времени ожидания, завершающихся при более быстром выполнении цикла.

Этот тип оптимизации может также определяться использованием опции -pipeline.

Чтобы определить, какую пользу вашей конкретной программе приносит использование -O5, Вы можете сравнить время выполнения вашей программы и ее же, но компилируемой с -O4.

Управление компиляцией вызова

Ц -inline all

Каждый вызов, если возможно, реализуется явной подстановкой (по типу макроса). При этом рекурсивный вызов не приводит к зацикливанию во время трансляции.

Ц -inline manual

Реализует явную подстановку только для функций-операторов.

Ц -inline none

Подавляет все подстановки программ.

Отладка

Ловля ошибок

Ц -check_bounds

Генерирует код, включающий динамические проверки в индексных выражениях и подстроках. Об ошибке сообщается, если выражение - за пределами размеров массива или длины строки.

Ц -check overflow

Генерирует код с проверкой переполнения целого.

Ц -check power

Проверяет динамические ошибки операции возведения в степень для случаев 0.0**0.0 и <отрицательное значение>**<целое значение типа real > таким образом, что 0.0**0.0 есть 1.0 и (-3.0)**3.0 есть -27.0. При этом вызываются во время выполнения фатальные ошибки для этих случаев.

Ц -check underflow

Включает контроль потери значимости и выдачу сообщения во время выполнения. При этом результат заменяется нулем 0, если Вы не определяете опцию -fpe3 или -fpe4.

Профилирование

Ц -p0

Отключает профилирование.

Ц -p1

Устанавливает верхнюю границу профилирования путем периодической установки контрольного значения счетчика команд. Эта опция влияет только на загрузку. Когда происходит загрузка, эта опция заменяет стандартную программу запуска программой запуска профиля во время прогона (mcrt0.o) и ищет профилирующую библиотеку уровня 1 (libprof1.a).

Когда происходит профилирование, вызовется программа запуска monstartup(3) и производит файл mon.out, который содержит профиль выполнения данных для использования с постпроцессором prof(l). Если Вы определили -p1 или -p, Вы могли бы также определить -g1 или выше.

Ц -p

Как -p1

Ц -pg

Устанавливает профилирование с помощью gprof(1), которая производит вызов графа (graph), показывающего выполнение программы. С этой опцией стандартная программа запуска заменяется программой gcrt0.o, и ld(1) включает вызовы _mcount в каждой точке входа.

Программы, связываемые при включении опции -pg при выполнении производят файлы gmon.out и gmon.sum. Файл gmon.out содержит динамический граф вызова (graph) и профилировщик (profile); файл gmon.sum содержит итоговый динамический граф вызова и профилировщика. Чтобы отобразить вывод, выполняется gprof в файле gmon.out.

Управление Листингом

Ц -cross_reference

Включает в листинг (если генерируется с -V ) перекрестные ссылки всех символов, использованных в исходной программе, вместе с количеством строк определений и использований.

Ц -V

Создает файл листинга исходного файла с добавкой различной статической информации. Имя файла листинга - базовое имя исходного файла с расширением .l, заменяющим расширения .f, .for, или .FOR.

Как именно создается файл листинга зависит от того, как Вы компилируете исходные файлы. Если Вы компилируете различные исходные файлы вместе, создается один файл листинга (названное базовым именем первого входного файла и с суффиксом .l). Если Вы компилируете исходные файлы поочередно, создается отдельный файл листинга для каждого входного файла (названное базовым именем входного файла с суффиксом .l).

Ц -warn nounuse

Подавляет предупреждения о неиспользованных переменных .

Ц -warn argument_checking

Разрешает выдавать предупреждения о несовпадениях аргумента в операторе вызова с параметрами вызываемой процедуры, когда они скомпилированы вместе.

<<<Назад  Теория  

Rambler's Top100

Copyright © fortran-online.info, 2007