4
01. Формирование, компиляция и первоначальный запуск проекта.
Alexander_KS edited this page 2025-04-30 13:51:02 +00:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

SAPFOR для Фортрана использует внутреннее представление исходного кода на Фортране, основанное на библиотеке SAGE++, которая написана на С++ (высокоуровневый интерфейс) и С (низкоуровневая реализация). Данная библиотека используется в компиляторе Fortran-DVMH. Поэтому, чтобы не копировать проект компилятора, необходимые библиотеки подгружаются с помощью git submodule. Для того, чтобы выгрузить и собрать SAPFOR, необходимо сделать:

  • git clone --config core.autocrlf=true текущего репозитория
  • GIT_SSL_NO_VERIFY=true git submodule update --init внутри папки, куда был клонирован репозиторий для обновления подмодулей
  • GIT_SSL_NO_VERIFY=true git submodule foreach git fetch origin
  • GIT_SSL_NO_VERIFY=true git submodule foreach git checkout main переводим все под модули на main ветку

Для создания проекта необходимо использовать CMAKE GUI (загрузить по ссылке) для Windows (7 и выше) или CMAKE в UNIX. Основной файл CMakeList.txt находится в корне проекта. Проект лучше создавать в отдельной папке, например, _bin. Для сборки под Linux необходимо из этого каталога выполнить команду cmake ../ и затем make -j 4.

Для Windows необходимо запустить установленный CMAKE GUI, далее настроить каталог, где находится CMakeList.txt и выходной каталог проекта, куда будет собран проект. Затем выбрать Configure и Generate. Проект можно создавать под ту IDE, которая нравится, но рекомендуется Visual Studio 2019 и выше.

В случае успешной сборки проекта, в каталоге проекта появится исполняемый файл: Sapfor_F.exe. Для запуска необходимо сделать следующее: запустить парсер (Sapfor_F.exe -parse) на исходном коде на Фортране, добавив флаг -spf, который включает директивы SAPFOR !$SPF в коде программы, а также можно добавить флаг -lgstd, который говорит о том, что надо игнорировать !DVM$ директивы в коде программы. Тогда запуск парсера будет выглядеть, например, так:

Sapfor_F -parse -spf jac.f (или Sapfor_F -parse -spf -lgstd jac.f)

После этого создастся проект dvm.proj и jac.dep файлы. Файл dvm.proj является текстовым и содержит список *.dep файлов (бинарные файлы), из которых состоит проект программы. В данном случае в файле dvm.proj будет только один файл jac.dep. Чтобы добавить к проекту еще один файл, необходимо к флагам парсера добавить -a dvm.proj. Парсер работает с каждым файлом по отдельности, то есть для многофайлового проекта необходимо вызвать парсер для каждого файла отдельно. Последние версии Sapfor_F поддерживают обработку нескольких файлов, а также простых масок, например, *.f90.

Для запуска SAPFOR необходим файл проекта dvm.proj и *.dep файлы. По умолчанию SAPFOR берет dvm.proj файл и начинает работу, либо надо указать с помощью опции имя файла вместо dvm.proj, в котором будет список *.dep файлов. Получить список всех опций (фаз или проходов анализа SAPFOR) можно либо по -help, либо просто запустив SAPFOR без параметров. Например, запуск прохода, который выполняет распараллеливание программы от и до, будет выглядеть так:

Sapfor -t 13