Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Fortran 90. ANSI Standard.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
861.18 Кб
Скачать

Компиляция и выполнение Компиляция

После как программа на Fortran 90 спроектирована и ее исходный текст записан в файл (обычно с суффиксом .f90, а для Альфа с расширением .f), то следующим шагом является компиляция, инициализируемая командой

f90 <опции> filename.o filename.f <библиотеки> (для создания однопроцессорной программы)

или

vf90 <опции> filename.o filename.f <библиотеки> (для создания многопроцессорной программы)

типичный запуск такой

vf90 -O0 -o $1.o $1.f -lm

Каждая из этих команд вызывает компилятор, программу перевода исходного кода в промежуточный ассемблерный код и далее в машинный (объектный) код. Компилятор проверяет синтаксис операторов в соответствии со стандартом и семантикой операторов. Этот шаг генерирует версию объектного кода, которая сохраняется в другом файле, обычно с тем же именем, но с другим расширением (обычно .o в системе UNIX).

Связывание (редактирование связей )

Редактор связей инициализируется в системе Альфа командой

fld <опции> filename filename.o

Простой вариант такой

fld -o filename filename.o

Он выполняет включение некоторого кода, который требуется, из библиотек или других предваритеьно прокомпилиованных файлов. Он генерирует версию выполняемого кода, которая снова запоминается в файле, расширение которого не создается (в системе UNIX по умолчанию это имя a.out)

Для трансляции и загрузки можно создать bat. файл, например, такой vf90b.bat

 vf90 -O0 -o $1.o $1.f -lm

fld -o $1 $1.o

Наличие такого файла вызова позволяет запускать компиляцию и редактирование связей командой

 vf90b.bat filename

Выполнение

В однопроцессорном варианте инициализируется путем ввода имени выполняемого файла, что приводит к запуску программы.

Во время выполнения программа может потерпеть аварию, если происходят ошибки выполнения Как и в при использовании других компиляторов, логические ошибки не могут быть проверены компилятором и они зависят от программиста, находящего и удаляющего их. Единственный путь состоит в новых и новых тестированиях с данными, для которых известен результат. Нужно рассмотреть все возможные варианты исходных данных. Предварительная забота об этом должна быть осуществлена во время начального проектирования программы. Идентификация ошибок на фазе проектирования дешевле, чем на более поздних стадиях.

Для многопроцессорной задачи перед ее запуском должен быть создан паспорт с помощью команды madd. В паспорте задается имя файла, созданного загрузчиком, имя программы в program (его следует заканчивать символом "подчеркивание"), имена каталогов, где размещается абсолютный модуль, имя каталога, где размещаются файлы ввода-вывода. А также запрашиваются сведения о предполагаемом времени решения, числе требуемых процессоров и числе перезапусков задачи по аварии.

Все эти сведения вводятся в ответ на запросы системы, которые появляются после ввода команды.

madd <имя задачи>

Затем задача запускается командой run <имя задачи>

 

Примеры

Приведем примеры запусков компилятора f90 на Альфа

 Команда

f90 ax.f

приводит к компиляции файла ax.f, созданию выполняемого файла a.out. Оптимизацию компилятор проводит по умролчанию по умолчанию (см. опиции компилятора).

 

Команда

f90 -o abc ax.f bx.f cx.f

использует флаг -o для именования выполняемого файла именем abc и компилирует файлы ax.f90, bx.f90, и cx.f90 как одну программу. Межпроцедурная оптимизация распространяется на ax, bx, и cx. Создается объектный файл abc.o и выполняемый файл *abc.

 

Команда

f90 -c ax.f bx.f cx.f

использует флаг -c для поддержания связи и изготовления индивидуальных объектных файлов ax.o, bx.o, и cx.o. Межпроцедурная оптимизация не проводится.

 Команда

f90 -c -o abc.o ax.f bx.f cx.f

использует флаг -c для поддержания связи и флаг -o для создания единственного объектного файла abc.o. Межпроцедурная оптимизация проводится.

Сведения о трансляции с помощью vf90 и запуске многопроцессорных программ смотри в соответствующем разделе