Использование библиотеки классов пакета "Sage" для анализа программ, написанных на языке Фортран

Использование библиотеки классов Си++ пакета SAGE для анализа больших последовательных программ, написанных на языке ФОРТРАН 77, для превращения их в параллельные программы. Структура данных, используемых пакетом для внутреннего представления программы.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 28.10.2018
Размер файла 57,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Показать все программные единицы, используемые в данном проекте. Функция перечисляет все программные единицы вместе с формальными параметрами.

Показать все переменные, объявленные в данной программной единице. Функция перечисляет имена всех переменных, объявленных в данной программной единице, вместе с признаками: глобальная, локальная, эквивалентная, формальный параметр.

Показать все COMMON-блоки, объявленные в данном проекте. Функция перечисляет имена всех COMMON-блоков, объявленных в данном проекте.

Показать COMMON-блоки, объявленные в заданной программной единице. Функция предъявляет все COMMON-блоки, объявленные в данной программной единице, вместе с перечнем принадлежащих им переменных.

Показать синонимы для указанной переменной (в конкретной программной единице). Функция предъявляет все синонимы данной переменной, возникшие в результате использования предложений EQUIVALENCE и использования разных имен для переменных, занимающих одинаковые позиции в одноименных COMMON-блоках, объявленных в разных программных единицах.

Показать связь формальных и фактических параметров для заданной программной единицы. Функция для каждого формального параметра предъявляет список пар <имя1><имя2>, где имя1 - имя программной единицы, содержащей вызов данной программной единицы, а имя2 - имя переменной, использованной в качестве фактического параметра вызова. Списки строятся только для тех фактических параметров, которые представляют собою ссылки на простые переменные.

3.4 Использование графического пакета GraphViz

Кажется привлекательным располагать возможностью представлять некоторую информацию об изучаемой программе в графическом виде. Для этой цели мы пытались приспособить программные продукты DOT, TWOPI и NEARTO созданные в компании ATT [6,7]. Эти три программы используют один входной интерфейс, но рисуют графы по-разному. Программы запускаются из командной строки, в которой задается имя входного файла и совокупность управляющих опций. Входной файл - текстовый, и в нем описано множество связанных пар объектов в форме имя узла -> имя узла. Для каждой пары программа рисует два узла, имеющих форму некоторой геометрической фигуры (по умолчанию - эллипс), помещает внутри каждой фигуры имя узла и соединяет узлы линией со стрелкой (ребро графа).

Программа DOT работает с направленными графами, и ее алгоритм размещения узлов основан на понятии “ранг узла”. Ранг это - численная характеристика узла. Ранг узла, находящегося слева от стрелки меньше ранга узла, находящегося справа от стрелки. Ранги узлов вычисляются последовательно по мере сканирования входного файла. Узлы одного ранга размещаются на одном (по умолчанию горизонтальном) уровне. Чем больше ранг, тем (по умолчанию) ниже уровень. В пределах одного уровня места узлов подбираются так, чтобы обеспечить минимально возможное число пересечений ребер получаемого графа и минимальную их длину. Имеется много опций для управления видом получаемого графа. Опции выбора формы, цвета контура и цвета заливки узлов. Опции вида и цвета линий для ребер графа. Опции, позволяющие помещать произвольные надписи на узлах и ребрах. Опции, позволяющие задавать позиционирование уровней рангов снизу вверх, сверху вниз, слева направо или справа налево. Опции, управляющие формой и положением стрелок на концах ребер графа. И много других.

Программа TWOPI работает во многом похожим образом, но размещает узлы графа на концентрических окружностях, а не на прямых линиях. При этом узлы с большим рангом размещаются на окружностях большего радиуса.

Программа NEARTO работает с ненаправленными графами и использует иной алгоритм размещения узлов графа. Алгоритм предполагает, что ребра графа обладают упругостью, и узлы графа располагаются так, чтобы “энергия” системы была минимальной.

Мы встроили программу DOT в нашу программу анализа для наглядной демонстрации цепочки вызовов программных единиц. Пример полученного графа приведен в Приложении 1.

Заключение

Наш ограниченный опыт работы с пакетом SAGE показал пригодность использования пакета для анализа ФОРТРАН _ программ в условиях интерактивной среды, при некоторой его доработке. Дополнительные доработки улучшили бы его функциональность:

· Попытаться преодолеть ограничения, которые парсер накладывает на размер исходных программ. Возможно, эти ограничения являются следствием использования компилятора компиляторов Bison, в котором сохранились следы от его предназначения для старых 16-разрядных вычислительных машин. Для этого надо Bison погрузить в современную инструментальную среду и изучить его исходные тексты.

· Попытаться изменить парсер так, чтобы он для предложений END, ENDIF, ENDDO и THEN порождал бы соответствующие узлы dep-дерева - для каждого предложения свой узел, а не один CONTROL_END для всех, как сейчас. Это упростило бы разработку программ анализа.

· Дописать методы классов SAGE, которые объявлены, но не реализованы.

· Перевести на русский язык сообщения, выдаваемые компонентами пакета SAGE пользователю.

· Переписать некоторые компоненты SAGE, используя современный стиль программирования на языке C++ с целью придания пакету большей стройности.

· В случае использования пакета для работы только с языком ФОРТРАН, удалить все, что связано с языком Си. Размер пакета значительно уменьшится, его структура будет намного яснее, а работа надежнее.

Сейчас на вход парсера подается текст на языке ФОРТРАН, возможно содержащий ошибки. Парсер не все ошибки обрабатывает корректно. Правильно было бы предварительно пропускать входной текст через специальную программу, осуществляющую синтаксический контроль входного текста (ФОРТРАН - компилятор), и только после этого передавать текст на вход парсера.

Авторы выражают благодарность К.Н. Ефимкину за многие полезные обсуждения и поддержку данной работы.

Литература

1. Воеводин В.В., Воеводин Вл.В. Параллельные вычисления - СПб.:

БХВ-Петербург, 2002.

2. www.parallelsp.com

3. www.nas.nasa.gov/tools/CAPO

4. C. Ierotheou, S.P. Johnson, M. Cross, P.F. Leggett, “Computer Aided Parallelisation Tools (CAPTools) - conceptual overview and performance on the parallelisation of structured mesh codes”, Parallel Computing, Vol. 22, pp 163-195, 1996.

5. www.extreme.indiana.edu

6. www.graphviz.org

7. www.research.att.com/sw/tools/graphviz/download.html

Размещено на Allbest.ru

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.