Дипломная работа: Система автоматизации распараллеливания гибридный анализ
6. полученная при анализе информация об исходной программе помещается в базу данных системы САПФОР
В качестве инструментатора в динамическом анализаторе используется инструментатор FortranDVM/OpenMPпрограмм [8]. Этот инструментатор предоставляет для нужд динамического анализа информацию об объявлениях скалярных переменных и массивов, об обращениях к памяти переменных и массивов для чтения и записи, о начале, новой итерации и конце цикла, о местоположении цикла в программе и его параметрах, об объявлениях и вызовах функций и процедур, о формальных и фактических параметрах функций.
Обнаружение зависимостей по данным между итерациями циклов в динамическом анализаторе осуществляется по алгоритму, использующему дерево контекстов. Реализация этого алгоритма определила внутреннее представление программы - в виде дерева, которое хранится в памяти компьютера до конца анализа и отражает всю информацию о ходе выполнения программы.
Опишем указанный алгоритм:
Для каждой переменной (элемента массива) хранятся все её точки чтения и записи. При очередном доступе на чтение (на запись) выполняется следующий анализ:
1. определяем ячейку памяти, к которой происходит доступ на чтение ar (на запись aw 1 );
2. для каждой предшествующей записи в ячейку памяти aw (для каждого предшествующего чтения ar и каждой предшествующей записи aw 2 ) определяем виртуальную точу доступа VP(aw ) (виртуальные точки доступа VP(ar ) и VP(aw 2 ));
3. находим контекст CL (контексты CLr и CLw ) – длиннейший общий подпуть контекстов C(ar ) и C(aw ) (C(aw 1 ) и C(ar ), C(aw 1 ) и C(aw 2 ));
4. находим контекст Cm (контексты Cmr и Cmw ) – длиннейший контекст, являющийся подконтекстом контекста CL (контекстов CLr