Дипломная работа: Система автоматизации распараллеливания гибридный анализ
· идентификатор цикла, в который происходит переход
· идентификатор оператора, на который происходит переход
· номер строки оператора, на который происходит переход
· вероятность перехода
e. Структура, содержащая информацию о вызове функции в операторе, заключает в себе:
· идентификатор вызова функции в базе данных
· информацию о программной единице, вызов которой происходит в операторе
· список информаций о параметрах программной единицы
· список доступов к памяти для параметров данного вызова программной единицы
· список структур, каждая из которых содержит информацию о выражениях для параметров данного вызова программной единицы
f. Структура, содержащая информацию о доступе к переменной в операторе, заключает в себе:
· идентификатор доступа к переменной в базе данных
· информацию о переменной, к которой осуществляется доступ
· тип доступа к переменной
· список структур, содержащих выражения для размерностей массива в момент доступа, для переменной массива
Общая схема организации представления базы данных отражена на Рисунке 6. Пунктирные стрелки указывают на возможное использование элементами одного хранилища информации элементов другого, сплошные – на связь хранилищей с интерфейсом представления базы данных. Через интерфейс осуществляется создание, удаление и корректировка элементов хранилищей.
|

ИИ
Также с помощью интерфейса осуществляется заполнение хранилищ информацией базы данных САПФОР и создание новой базы данных САПФОР по информации, содержащейся в хранилищах.
4.2 Возможные зависимости по данным
Основным свойством информации о зависимостях по данным, полученной в результате статического анализа текста программы, является безопасность. То есть, в спорных ситуациях, когда метод статического анализа не может доказать наличие или отсутствие зависимости, предполагается наличие зависимости. Именно для таких случаев в базе данных САПФОР введен способ фиксации возможных зависимостей по данным [10] (Тип зависимости VAR_DEP_POS в таблице depends базы данных говорит о возможном наличии зависимости по определенной переменной). Такая организация базы данных способствует проведению анализа программы сразу несколькими анализаторами, причем каждый следующий анализатор будет проводить анализ программы только для циклов, в которых обнаружена возможная зависимость по данным, и только для тех переменных, по которым возникла эта зависимость. Для проведения подобного анализа необходимо решить следующие проблемы:
1. Определить, какую информацию о цикле (о переменной) необходимо выделить из базы данных САПФОР, чтобы легко отличить в анализируемой программе данный цикл (переменную)
2. Разработать алгоритм частичного анализа программы, то есть, анализа зависимостей по интересующим нас переменным между витками интересующих нас циклов.
3. Разработать алгоритм сравнения двух баз данных САПФОР одной программы с последующим замещением неточной информации из первой базы данных на точную информацию из второй базы данных
Любой цикл программы однозначно определяется названием файла, содержащего цикл, и номером строки цикла в этом файле. А любая переменная программы однозначно определяется названием файла, содержащего программную единицу, в которой описана переменная, номером строки начала этой программной единицы в файле, а также именем, типом и размерностью переменной. Вся перечисленная информация содержится в базе данных САПФОР, следовательно, первая проблема сводится к получению необходимой информации из базы данных. Рассмотрим возможные решения второй и третьей проблемы в следующих пунктах.
4.3 Частичный анализ
В 2008 году Остапенко Г.Ю. в рамках дипломной работы разработал алгоритм динамического анализа последовательных программ, написанных на языке FORTRAN, соответствующий требованиям системы автоматизированного распараллеливания САПФОР, и на основе этого алгоритма программно реализовал динамический анализатор [5]. Доработаем динамический анализатор возможностью проведения частичного анализа программы.
4.3.1 Принципы работы динамического анализатора.
Общая схема работы динамического анализатора показана на Рисунке 7.
|

1. исходный текст программы поступает на вход инструментатору
2. инструментатор вставляет в текст программы вызовы функций динамического анализатора
3. проинструментированная программа подаётся на вход стандартному компилятору Fortran
4. скомпилированная программа линкуется со статической библиотекой динамического анализатора, и на выходе получается исполняемая программа с вызовами динамического анализатора