Автоматическое распараллеливание программ для распределенных систем. Статическое построение расширенного графа управления

void CountOpers () – подсчет числа операций для каждого узла графа.

void ExportData (ofstream&, ofstream&) – экспорт графа и индексной информации в потоки.

void ImportData (ifstream&) – импорт данных от блока распределения вычислений, подлежащих вставке в граф;

void Build (SgStatement*, SgStatement*, int, int) – построение графа.

void U

nparse () – произвести вставку добавленных в граф данных во внутреннее представление Sage++;

3) Класс cProgramGraphNodeSg – представляет узел графа управления.

cProgramGraphNodeSg () – конструктор класса, создает новый узел.

SgStatement *poSt1, *poSt2, *poSt3 – принимают значения после построения графа.

Для линейного участка: poSt1 – 1-й оператор блока, poSt2 – последний оператор.

Для цикла: poSt1 – оператор заголовка цикла, poSt2 – оператор, завершающий цикл (ENDDO)

Для ветвления: poSt1 – IF, poSt2 – ELSE, poSt3 – ENDIF.

int Level – уровень вложенности, внешнему уровню соответствует 0.

int IsParal – признак возможности распараллеливания.

long int LoopId – для элементов типа “цикл” содержит номер соответствующего цикла из списка.

float Ver1, Ver2 – для элементов типа “ветвление” вероятность перехода соответственно по 1-й и 2-й ветви.

float Opers[df_OPERS_COUNT] – массив, в каждом элементе которого содержится количество соответствующих индексу элемента операций в блоке. Например, Opers[0] - число сложений, Opers[1] – вычитаний.

long int Id () – уникальный номер узла.

int NodeType () – тэг типа узла.

long int ExportData (ofstream&) – экспорт узла в файловый поток, возвращает количество записанных байт.

void ImportData (ifstream&) – импорт данных из файлового потока.

void Unparse () – произвести вставку добавленных в узел данных во внутреннее представление Sage++.

4) Класс cLoopListSg – представляет список циклов программы.

cLoopListSg (cSymbolTabSg*) – конструктор класса, создает пустой список циклов, параметр – таблица символов, на которую будет ссылаться список.

cSymbolTabSg *SymTab () – таблица символов, используемая списком.

cLoopListNodeSg *CurNode () – указатель на текущий элемент списка.

int GoStart (), GoEnd (), GoRight (), GoLeft (), GoId (long int) – переместить указатель на текущий узел соответственно на 1-й узел, последний узел, влево, вправо, на узел с заданным номером. Возвращает 1 при удачном переходе, 0 в противном случае.

void Analyse () – произвести необходимый анализ элементов списка.

void Build (SgStatement*, SgStatement*, int) – построить список.

void ExportData (ofstream&) – экспорт списка в файловый поток.

5) Класс cLoopListNodeSg – представляет элемент списка циклов.

cLoopListNodeSg () – конструктор класса, создает новый элемент.

long int Id () – номер элемента.

SgStatement *poSt1, *poSt2 – ссылки соответственно на оператор заголовка цикла и на оператор завершения цикла.

cSymbolSg *poCounterSym – ссылка на переменную-счетчик цикла.

cExpressionSg *poStartExpr, *poEndExpr, *poStepExpr – начальное, конечное выражения счетчика и выражение шага цикла.

long int IterNum – количество итераций цикла.

int Level – уровень вложенности.

int IoOp, GotoOp – флаги наличия в теле цикла операторов ввода\вывода и операторов перехода за тело цикла.

cVarListElemSg *LVar[df_MAX_LRVAR_COUNT], *RVar[df_MAX_LRVAR_COUNT] – списки обращений к переменным и элементам массивов на модификацию и на чтение соответственно.

sReduct RedVar[df_MAX_REDVAR_COUNT] – список редукционных переменных, содержащихся в теле цикла.

void AnalyseHead (cSymbolTabSg *) – произвести анализ заголовка цикла.

void AnalyseBodyVars (cSymbolTabSg*) – произвести анализ обращений к переменным и элементам массивов в теле цикла.

void AnalyseRedVars (cSymbolTabSg*) – произвести поиск редукционных переменных в теле цикла.

void AnalyseIoOp () – определить присутствие в теле цикла операций ввода\вывода.

void AnalyseGotoOp () – определить присутствие в теле цикла операторов перехода за тело цикла.

long int ExportData (ofstream&) – экспорт элемента в файловый поток, возвращает количество записанных байт.

6) Класс cSymbolTabSg – представляет таблицу символов. Реализована в виде двунаправленного списка элементов класса cSymbolSg.

cSymbolTabSg () – конструктор класса, создает пустую таблицу.

cSymbolSg *FirstSym () – указатель на 1-й элемент списка.

void ExportData (ofstream&) – экспорт таблицы в файловый поток.

7 ) Класс cSymbolSg – представляет элемент таблицы символов.

cSymbolSg () – конструктор класса, создает новый элемент.

long int Id () – уникальный номер элемента.

SgSymbol *poSgSym – ссылка на соответствующий элемент таблицы символов Sage++.

int Variant () – тэг вида элемента: переменная или массив.

int Type – код типа.

char *Name – строка имени.

int Dim () – размерность (для массива).

int DimLen (int i) – длина по i-му измерению (для массива).

cSymbolSg *LinkRight () – следующий в списке элемент.

cSymbolSg *LinkLeft () – предыдущий в списке элемент.

long int ExportData (ofstream&) – экспорт элемента в файловый поток.

int operator == (cSymbolSg&), operator != (cSymbolSg&)

8) Класс cExpressionSg – представляет выражение. Текущая реализация класса позволяет хранить только выражения вида c1*V+c0, где c1,c0 – константы, V – переменная.

cExpressionSg (SgExpression*, cSymbolTabSg*) – конструктор класса, параметрами являются подлежащее разбору выражение, представленное объектом Sage++, и таблица символов, которая будет дополнена входящим в состав выражения идентификатором.

int Variant () – тэг вида выражения.

cSymbolSg *poVariable – ссылка на переменную выражения.

int IntC0 (), IntC1 () – значения констант, приведенные к типу int.

float RealC0 (), RealC1 () – аналогично, float.

double DoubleC0 (), DoubleC1 () – аналогично, double.

long int ExportData (ofstream&) – экспорт выражения в файловый поток.

int operator == (cExpressionSg&), operator != (cExpressionSg&)

9) Класс cArrayRefSg – представляет ссылку на элемент массива.

cArrayRefSg (SgArrayRefExp*, cSymbolTabSg*) – конструктор класса, параметрами являются подлежащая разбору ссылка на элемент массива, представленная объектом Sage++, и таблица символов, в которую будут добавлены входящие в ссылку переменные и имя массива.

Страница:  1  2  3  4  5  6  7  8  9  10 


Другие рефераты на тему «Программирование, компьютеры и кибернетика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы