Использование библиотеки классов пакета "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
...Подобные документы
Анализ уязвимостей в многопоточных программах, написанных на языке С++. Создание программного обеспечения, выполняющего анализ многопоточных программ, написанных на С++, на предмет наличия в них ошибок синхронизации типа "гонки" и "заброшенные замки".
курсовая работа [755,9 K], добавлен 20.09.2016Разработка Windows-приложений с использованием библиотеки MFC. Базовый набор классов, написанных на языке С++ и предназначенных для упрощения процесса программирования под Windows. Фундаментальные идеи объектно-ориентированного программирования.
курсовая работа [348,1 K], добавлен 02.07.2011Разработка программ средствами библиотеки tkinter на языке Python. Изучение основы работы в текстовом редакторе Word. Описание авторской идеи анимации. Использование базовых команд и конструкций. Процесс проектирования и алгоритм разработанной программы.
контрольная работа [125,3 K], добавлен 11.11.2014Исследование и оценка возможностей работы со следующими разделами библиотеки приложения Simulink пакета программ Matlab: Source, Sinks, Continuous, Math Operation. Функции по представлению полученных в результате моделирования данных в графическом виде.
лабораторная работа [438,9 K], добавлен 23.09.2022Основные приёмы и возможности алгоритмических языков программирования Fortran. Табуляция функции на языке Fortran, ее графический вид и блок-схема алгоритма. Выполнение расчетов на алгоритмическом языке Фортран. Текст (листинг) Fortran-программы.
курсовая работа [31,9 K], добавлен 15.02.2011Сравнительный анализ языков программирования высокого уровня Си и Паскаль. Реализация алгоритма обработки данных. Тестирование и отладка программы или пакета программ. Структура программы на языке Турбо Паскаль. Указатели и векторные типы данных.
курсовая работа [233,5 K], добавлен 14.12.2012Порядок составления программы, тестирующей знания пользователя по разделу физики "Электрическое поле", написанной на языке Visual C++ с использование библиотеки MFC. Листинг программы и ее практическое значение, принципы работы, структура и элементы.
курсовая работа [172,5 K], добавлен 22.06.2011Программирование на языке Паскаль: алфавит, решение задач, простейшие программы, разветвляющие программы, циклические программы, ввод-вывод, массивы, подпрограммы, строковые данные, записи, файлы, использование библиотеки CRT, графика в Паскале.
учебное пособие [211,1 K], добавлен 30.03.2008Исследование больших объемов данных, выявление зависимостей, статистические и маркетинговые исследования и построение моделей. Создание проекта разработки статистического пакета. Структура пакета, план его реализации. Выбор инструментов разработки.
курсовая работа [1,3 M], добавлен 20.10.2012Компиляция программ на языке C/C++. Компиляция нескольких файлов. Библиотеки объектных файлов. Создание статической и динамической библиотеки. Функции работы. Создание динамической библиотеки для решения системы линейных уравнений.
курсовая работа [27,4 K], добавлен 07.08.2007Разработка программы для рисования различных правильных многоугольников с помощью объектно-ориентированного языка программирования. Использование для разработки среды C++ Builder 6 и библиотеки VCL. Разработка интерфейса приложения и алгоритма его работы.
курсовая работа [616,4 K], добавлен 18.10.2010Использование в программах, написанных на языке C, Windows application programming interfaces. Роль центрального процессора. Архитектура Фон Неймана. Оперативная память. Графическая плата. Создание интерфейса программы. Разработка машинного кода.
реферат [101,5 K], добавлен 15.05.2014Схема разбора арифметического и логического выражения. Внешняя спецификация конвертора и алгоритм перевода программ на языке Паскаль в текст на языке Си. Назначение подпрограмм, особенности констант и переменных. Код программы и ее тестирование.
курсовая работа [567,5 K], добавлен 03.07.2011Анализ средств визуализации. Разработка программы-расширения для визуализатора инженерных и научных расчетов Compaq Array Visualizer на языке Фортран. Оценка экономической эффективности и конкурентоспособности созданного программного обеспечения на рынке.
дипломная работа [335,4 K], добавлен 10.09.2010Выбор метода проектирования транслятора с языка Паскаль на язык Си, разработка и кодирование алгоритма программы. Использование допустимых операторов в исходном тексте, определение типов переменных и синтаксиса логических и арифметических выражений.
курсовая работа [1,0 M], добавлен 03.07.2011Создание программы для перевода кодов с языка Pascal на язык Си. Обработка программ операторами case, assign, rewrite и write. Способы объявления файла, комментария, переменных, логических и арифметических выражений. Виды синтаксических анализаторов.
курсовая работа [461,0 K], добавлен 03.07.2011Программный комплекс для разработки программы транслирующей программу с языка Pascal на язык С++. Построение логической и арифметической модели решения. Разработка компилятора для программы. Методы отладки программы и создание для нее документации.
курсовая работа [742,6 K], добавлен 03.07.2011Создание программы для хранения и обработки данных о съеме/сдаче жилья. Написание программы на языке C++ с использованием библиотеки Qt; использование исходного кода для создания приложения под Windows, Linux, Mac OS X без дополнительных изменений кода.
курсовая работа [60,4 K], добавлен 07.03.2013Обзор технологии OpenStack, область ее применения. Реализация библиотеки классов. Реализация базовых классов и интерфейсов архитектуры. Создание виртуального сервера. Интеграция разработанной библиотеки классов и архитектура проектного решения.
дипломная работа [1,0 M], добавлен 09.08.2016Иерархия основных классов MFC (базовой библиотеки классов). Структура простой MFC программы. Работа с текстом в MFC. Функции вывода текста, установки цветов, режимов отображения, получение метрик. Применение контекста устройства, обработка сообщений.
контрольная работа [27,8 K], добавлен 11.08.2010