From e20b3c526f4b8253ab2f3b904b0b77a1d0d52a69 Mon Sep 17 00:00:00 2001 From: Alexander_KS Date: Thu, 14 Sep 2023 13:50:37 +0000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20=D0=9A=D0=BE=D0=BC=D0=BF=D0=B8=D0=BB=D1=8F=D1=86=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=B8=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0..md | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 %D0%9A%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F-%D0%B8-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0..md diff --git a/%D0%9A%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F-%D0%B8-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0..md b/%D0%9A%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F-%D0%B8-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0..md new file mode 100644 index 0000000..3571977 --- /dev/null +++ b/%D0%9A%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F-%D0%B8-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0..md @@ -0,0 +1,20 @@ +SAPFOR для фортрана использует внутреннее представление исходного кода на фортране, основанное на библиотеке SAGE++, которая написана на С++ (высокоуровневый интерфейс) и С (низкоуровневая реализация). Данная библиотека используется в компиляторе Fortran-DVMH. Поэтому, чтобы не копировать проект компилятора, я использовал относительные пути для того, чтобы использовать эту библиотеку в данном проекте. Для того, чтобы выгрузить и собрать SAPFOR, необходимо сделать git clone текущего репозитория, чтобы каталоги соответствовали следующей структуре: + +- **dvmhrepo**\dvm\fdvm\trunk\ +- **dvmhrepo**\sapfor\experts\Sapfor_2017\ + +В случае использования Windows (7 или выше) необходимо, чтобы каталоги **dvm** и **sapfor** лежали в одной папке и, желательно, обладали такой же структурой, как приведена выше, потому что под эту структуру настроены относительные пути в CMakeList по умолчанию (для смены путей необходимо модифицировать paths.txt). Для простоты использования рекомендуется выгрузить полностью каталоги dvmhrepo\dvm и dvmhrepo\sapfor в одну папку. В дальнейшем будет проще обновлять репозиторий. + +Для создания проекта необходимо использовать **CMAKE GUI** (загрузить по [ссылке](https://cmake.org/)) для Windows (7 и выше) или CMAKE в UNIX. Основной файл CMakeList.txt находится в каталоге **dvmhrepo**\sapfor\experts\Sapfor_2017. Если структура каталогов иначе, чем предложена выше, то необходимо скопировать **paths.default.txt** в **paths.txt** и изменить значения путей на соответствующие. Проект лучше создавать в отдельной папке, например, **_bin**. Для сборки под линукс необходимо из этого каталога выполнить команду **cmake** ../ и затем **make -j**. + +Для 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 ` \ No newline at end of file