Разработка и реализация методов потокового анализа распараллеливаемых программ в Преобразователе программ СБкЗ_ПП. Дипломная (ВКР). Информационное обеспечение, программирование.

Разработка и реализация методов потокового анализа распараллеливаемых программ в Преобразователе программ СБкЗ_ПП. Дипломная (ВКР). Информационное обеспечение, программирование.




⚡ 👉🏻👉🏻👉🏻 ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻


























































Информационное обеспечение, программирование

Вы можете узнать стоимость помощи в написании студенческой работы.


Помощь в написании работы, которую точно примут!

Похожие работы на - Разработка и реализация методов потокового анализа распараллеливаемых программ в Преобразователе программ СБкЗ_ПП
Нужна качественная работа без плагиата?

Не нашел материал для своей работы?


Поможем написать качественную работу Без плагиата!

Разработка и реализация методов
потокового анализа распараллеливаемых программ в Преобразователе программ
СБкЗ_ПП











. Обзор литературы по теме
«потоковый анализ программ в распараллеливающих и оптимизирующих компиляторах»


.6 Опыт реального применения
распараллеливающего компилятора


.7 Средства реализации
распараллеливающего компилятора


.8 Компиляция с переменным
набором оптимизирующих преобразований


. Описание предметной
области, решаемых задач и методов их решения


.1.2 Графы зависимостей и
минимальные графы


.1.3 Циклы ParDo и избыточные
вычисления


.1.4 Эквивалентные по
вычислениям преобразования программ


.2.2 Описание терминов
потокового анализа МСП


.3 Постановка задач и методы
их решения


.3.1 Алгоритм добавления
атрибутов ParDo


.4 Представление методов
потокового анализа программ


.4.1 Абстрактный синтаксис
языка методов потокового анализа программ


.4.2 Операционная семантика
языка методов потокового анализа программ


.4.3 Расширение базы методов
потокового анализа программ


.1 Назначение программного
средства (ПС)


.2 Архитектурно-контекстная
диаграмма СБкЗ_ПП


.3 Архитектурно-контекстная
диаграмма ПС


.4 Требования к программному
средству


.4.1 Общие функциональные
требования


.4.2 Конкретные
функциональные требования


.4.3 Требования к
программному обеспечению


.4.6 Жизненный цикл
программного средства


.5.1 Архитектура программного
средства


.5.3 Описание реализации
программного средства


.5.4 Описание использования
программного средства


. Экспериментальное изучение
свойств программного средства


. Доказательство того, что
цели, сформулированные в задании, достигнуты. Обсуждение результатов дипломной
работы


Приложение 1. Каталог
реструктурирующих преобразований программ


Приложение 2. Таблица
соответствий понятий


Приложение 3. Синтаксис языка
методов потокового анализа (расширенная БНФ)







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


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


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


Основной задачей распараллеливающего компилятора является выявление
скрытого (как правило) или явного (что редко) параллелизма. Такой анализ
проводится не по самому тексту программы, а по ее модели.


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


Задача выявления параллелизма в большинстве случаев сводится к задаче
определения различных типов зависимости между участками программы и итерациями
циклов.


Основной проблемой в сфере науки о преобразованиях программ является
невозможность своевременно выполнять компьютерные эксперименты. Цель таких
экспериментов - определить, насколько часто в реальных программах применимы те
или иные преобразования и какой эффект дает их применение. Единственным
средством проведения подобных экспериментов являются оптимизирующие
компиляторы, например, GCC [14, 23], распространяемый бесплатно (по лицензии
GPL), а из коммерческих разработок - компиляторы Intel C++ и Fortran [10].
Однако период времени, который обычно проходит от момента публикации описания
нового преобразования до момента окончания реализации оптимизирующего
компилятора, содержащего в своем наборе данное преобразование, настолько велик,
что результаты компьютерных экспериментов с этим преобразованием оказываются
мало актуальными. Кроме того, оптимизирующий компилятор обычно содержит большой
набор преобразований и встроенную стратегию их применения. Поэтому получить
результаты компьютерных экспериментов, относящихся к отдельному преобразованию
(а не ко всему набору), весьма проблематично.


Результаты потокового анализа по выявлению параллелизма используются для
применения оптимизирующих преобразований из класса реструктурирующих. В общем
случае этот класс направлен на эквивалентное преобразование программы,
позволяющее впоследствии ее распараллелить. Наиболее часто в трансляторах
используются следующие преобразования: перестановка циклов, слияние циклов,
разбиение цикла, распределение циклов. Множество используемых на практике
преобразований постоянно расширяется. Этому процессу в немалой степени
способствует появление компьютеров новой архитектуры.


Несмотря на то, что проблема оптимизации программ для компьютеров с
параллельной архитектурой существует уже более 20 лет, ее решение до сих пор
нельзя считать удовлетворительным. Было предложено много различных подходов к
оптимизации, но ни один из них не предполагает комплексного решения всего
множества возникающих проблем. Более того, как показали недавние исследования
Иллинойского университета, большинство методов потокового анализа распознают
лишь 15% из всех пар зависимостей. На этом фоне успешной выглядит система V-Ray
[15], практическое экспериментальное исследование которой показало
превосходство (порой весьма значительное) над другими системами оптимизации.
Однако V-Ray является лишь инструментом для выявления параллелизма, а анализ
результатов, выбор и применение ОП и производятся вручную и неинтерактивно, как
и постановка экспериментов. Существуют интерактивные системы, как, например,
Acovea [18] для компилятора GCC, позволяющие в диалоговом режиме управлять
стратегией оптимизации, то есть выбирать оптимизирующие преобразования. Однако
расширение множества целевых языков или преобразований потребует серьезной
модификации программы. Разрабатывается система, в которой библиотека
преобразований выделяется в отдельную самостоятельную часть - открытая
распараллеливающая система (ОРС) [17]. Система предназначена для
автоматического распараллеливания программ с процедурных языков
программирования (Фортран, Паскаль, Си) на параллельные компьютеры,
ориентированные на математические вычисления.


Помимо этого предложен новый подход - управляемый пакет оптимизаций [5].
Это пара , где Р - пакет оптимизаций, а М - менеджер пакета
оптимизаций. Пакет оптимизаций представляет собой набор оптимизаций с одним и
тем же объектом применения. Менеджер оптимизаций определяет порядок запуска
оптимизаций пакета. Но данный проект пока не реализован до конца.


С целью решения упомянутых выше проблем в области разработки и применения
оптимизирующих компиляторов в отделе интеллектуальных систем ИАПУ ДВО РАН
предлагается концепция управления информацией о преобразованиях программ в
рамках Специализированного банка знаний о преобразованиях программ (СБкЗ_ПП).
СБкЗ_ПП состоит из информационного наполнения (ИН), оболочки ИН, программного
наполнения (ПН) и блока администрирования (БА). Одной из компонент ПН является
блок потокового анализа.


Целью данной дипломной работы является разработка и реализация подсистемы
потокового анализа, управляемого знаниями, для распараллеливаемых программ в
МСП как части СБкЗ_ПП.


· Разработка представления методов потокового анализа программ.


·       Разработка требований к системе потокового анализа
распараллеливаемых программ, управляемой базой знаний.


·       Разработка проекта верхнего и нижнего уровней для системы
потокового анализа распараллеливаемых программ, управляемой базой знаний.


·       Реализация системы потокового анализа распараллеливаемых
программ, управляемой базой знаний.




· Глава 1 - обзор литературы, в котором проанализированы существующие
системы распараллеливания с акцентом на подсистему ПА, рассмотрены методы и
задачи ПА и различные внутренние представления программ.


·       Глава 2 - постановку задачи и математическую модель;


·       Глава 3 - техническую документацию программного средства;


·       Глава 4 - описание тестирования программного средства;


·       Глава 5 - Экспериментальное изучение свойств программного
средства.


·       Глава 6 - доказательство того, что цели дипломной работы, сформулированные
в задании, достигнуты. Обсуждение результатов работы.




В данном разделе рассматриваются распараллеливающие компиляторы с точки
зрения их функциональности.


Открытая распараллеливающая система (ОРС) [13] предназначена для
автоматического распараллеливания программ с процедурных языков
программирования (Фортран, Паскаль, Си) на параллельные компьютеры, ориентированные
на математические вычисления.


В работе [10] рассматривается компилятор Intel .


· Значительная оптимизацияоптимизация кода еще на высоком уровне, т.е.
прежде всего, различные преобразования циклов


·       Оптимизация вычислений с плавающей точкоймаксимальное
использование команд, реализованных на аппаратном уровне


·       Межпроцедурные оптимизацииглобальная оптимизация всей
программы, в отличие от обычной оптимизации, которая затрагивает только код
конкретных функций


·       Оптимизация на базе профилейвозможность запустить программу в
тестовом режиме, собрать данные о времени прохождения фрагментов кода внутри
часто используемых функций, а затем использовать эти данные для оптимизации


·       Поддержка системы команд SSE в процессорах Pentium III


·       Автоматическая векторизацияиспользование команд SSE и SSE2,
вставляемых автоматически компилятором


·       Поддержка OpenMP для программирования на SMP-системахна
кластере рекомендуется преимущественно пользоваться интерфейсом MPI; имеет
смысл пользоваться библиотеками, распараллеленными для общей памяти.


·       Предвыборка данныхиспользование команд предварительной
загрузки из памяти в кэш данных, которые понадобятся через некоторое время


·       "Диспетчеризация" кода для различных
процессороввозможность генерации кода для различных процессоров в одном
исполняемом файле, что позволяет использовать преимущества новейших процессоров
для достижения на них наибольшей производительности, при сохранении двоичной
совместимости программ с более ранними процессорами; на нашем кластере это пока
не актуально, т.к. используются только процессоры Pentium III, а также не
предполагается передача и запуск на других машинах программ, откомпилированных
на кластере.


Основной целью проекта V - Ray [15] является развитие
математической технологии и программных средств, обеспечивающих достижение двух
основных свойств параллельных приложений: эффективности и переносимости. Это
включает в себя:


· разработку системы V-Ray - средства анализа и преобразования программ;


·       разработку новых технологий, обеспечивающих развитие
переносимых параллельных приложений:


·       разработку математических технологий оптимизации программ для
широкого спектра компьютеров.


Основным программным средством является V-Ray system. Она позволяет не только
оптимизировать существующие программы, но и получить эффективные реализации
программ для различных аппаратных платформ путем анализа лежащего в основе
программ алгоритмического подхода.


Анализ программ при помощи V-Ray system осуществляется за несколько этапов. На первом этапе
система определяет основные машинно-независимые свойства программ, а именно,
потенциал параллелизма и локальность использования данных. Она позволяет
определить влияние на качество программ четырех основных черт архитектуры компьютеров:


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


Лежащая в основе системы V-Ray математическая технология
гарантирует точность анализа для широкого класса программ. Это в частности
означает, что если система не помечает некоторый цикл как параллельный, то
действительно существует зависимость между итерациями цикла, и никакие другие
средства (препроцессоры, анализаторы и т.д.) не смогут доказать ее отсутствие.


Все изменения исходного кода делаются на основе эквивалентных
преобразований, которые гарантируют не только корректность исполнения
полученной программы, но и не влекут за собой изменения ошибок округления.


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


Основным понятием V-Ray технологии является граф алгоритма -
ациклический ориентированный граф, вершины которого соответствуют отдельным
срабатываниям операторов программы. Две вершины графа соединяются направленной
дугой, если результат операции, соответствующей начальной вершине, используется
в качестве аргумента операции, соответствующей конечной вершине. Таким образом,
понятие графа алгоритма опирается на два основных понятия: отдельные
срабатывания операторов программы и точное описание информационных зависимостей
между ними.


Иерархический граф управления. Система предоставляет возможность
посмотреть структуру отдельных процедур, составляющих проект с разным уровнем
детализации. На данном рисунке представлен иерархический граф управления одной
из процедур. Вершины этого графа соответствуют либо линейным участкам, либо
циклическим конструкциям. Дуги соответствуют передаче управления. На вершинах,
обозначающих циклы, выводятся цифры, которые соответствуют количеству вложенных
циклов.циклы. Можно определить, какие циклы являются параллельными (pardo).
Хождение по иерархии. Структура каждой циклической вершины может быть
изображена с помощью аналогичного графа.


Связь с исходным текстом. Есть возможность посмотреть текст исходной программы,
соответствующий каждой вершине графа.


Разные термины представления. Граф может быть построен с точностью до
линейных участков, где каждая вершина соответствует линейному участку
изображаемой программной единицы или циклической конструкции, или с точностью
до операторов, где каждая вершина - один оператор фортрана. В графе управления
можно оставить только вызовы процедур и таким образом получить структуру
вызовов.


Разные типы зависимостей. Система позволяет также построить граф
зависимости по данным по всем 4 типам зависимостей или их комбинациям. Граф
может быть построен с использованием графа алгоритма, построенного с помощью
V-Ray технологии или без его использования, так как не всегда возможно
построение графа алгоритма.


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


Вложенность циклов. Для нахождения параллелизма важно знать циклическую
структуру процедур. Данный граф предоставляет возможность оценить максимальную
вложенность циклов в каждой процедуре


Операции: рост, из, в. Есть возможность построить граф вызовов шаг за
шагом. На первом этапе показываются только те процедуры, которые вызываются
непосредственно из главной программы. Дальше - те, которые удалены от главной
программы не более (или не менее) чем на два шага и т.д. Можно построить
подграф, отображающий только те процедуры, которые вызывают выбранную процедуру
(учитывая весь путь вызова) или которые вызываются из выбранной процедуры.


Циклический профиль, который для каждого вызова процедуры показывает
сумму объемлющих оператор вызова циклов и максимального уровня вложенных циклов
вызываемой процедуры. Выбирая строчку в списке, на графе выделяется
соответствующий путь.


Граф использования общей памяти. Данный граф отображает использование
общей памяти (COMMON-блоков) - какие блоки в каких процедурах используются


Одной из ключевых компонент кластерного уровня суперкомпьютеров программы
«СКИФ» является система автоматического распараллеливания вычислений - « Т-система »
[1]. За годы выполнения программы «СКИФ» была реализована большая часть идей,
заложенных основателями разработки Т-системы ещё в начале 80-х годов. Созданная
версия Т-системы обладает открытой и расширяемой архитектурой, легко
адаптируемой к стремительно меняющимся аппаратным платформам современных
суперкомпьютеров; Т-приложения - приложения, написанные на входном языке
программирования Т-системы Т++ - могут быть запущены на широком наборе
программно-аппаратных конфигураций, в том числе, на различных мета-кластерных
системах.


Т-система основывается на парадигме функционального программирования для
обеспечения динамического распараллеливания программ. При этом в Т-системе
найдены и реализованы весьма эффективные формы как для собственно организации
параллельного счета (синхронизация, распределение нагрузки), так и для сочетания
функционального стиля с императивными языками программирования (в Т-системе
используется гладкие расширение привычных для большинства программистов языков
C, C++, Fortran).


Работа выполнена в рамках программы «СКИФ» Союзного государства и при
поддержке программы фундаментальных научных исследований ОИТВС РАН
"Высокопроизводительные вычислительные системы, основанные на
принципиально новых методах организации вычислительных процессов" и
программы фундаментальных исследований Президиума РАН "Разработка фундаментальных
основ создания научной распределенной информационно-вычислительной среды на
основе технологий GRID"


За последние два года Т-система была существенно доработана с учетом
опыта её внедрения и эксплуатации в ходе первых трёх лет программы «СКИФ».
Современная версия Т-системы имеет ряд ярких отличительных черт, прежде всего,
к ним относятся:


Минимальные отличия диалекта языка программирования Т++ - входного языка
Т-системы - от базового языка С++. Различия так невелики, что поддерживается
режим компиляции Т-программ без использования Т-системы - с генерацией
последовательно исполняемого кода.


Микроядерная архитектура среды исполнения параллельных программ с
возможностью динамического расширения.


Динамическое связывание Т-приложений с используемой средой коммуникаций.
Поддерживается пересылка данных по семи различным реализациям MPI и PVM.


Поскольку для большинства Т-приложений производительность вычислений
является критическим фактором, разработаны две технологии компиляции
Т-программ:


· Конвертирование программ на Т++ в код на С++ с последующей компиляцией
оптимизирующим компилятором, наилучшим для целевой платформы.


·       Компиляции на основе фронт-енда компилятора GNU,
обеспечивающую наиболее полную поддержку входного языка Т++ и ряда часто
используемых расширений С++.


Архитектура среды исполнения Т-системы


Архитектура системы OpenTS построена по “микроядерному” принципу: так
называемая исполняемая спецификация содержит в себе определение всех
необходимых базовых сущностей (классов и шаблонов классов в терминологии C++),
а также реализацию методов классов по-умолчанию. Глубокая проработка отдельных
аспектов (реализуемая зачастую как переопределение методов) выполняется в
отдельных модулях - расширениях Т-системы, которые, как и пользовательская
программа, взаимодействуют с исполняемой спецификацией - микроядром.


Микроядро системы, называемое «Т-Суперструктурой», или
функционально-ориентированная супервычислительная надстройка, структурно
организована как три программных уровня S, M и Т:уровень


· Создать высокопроизводительную надстройку над стандартными средствами
управления памятью (кэширующий аллокатор, механизмы подсчета ссылок) и потоками
исполнения (кэширование тредов).


·       Ввести абстракцию данных и обеспечить высокоэффективый разноприоритетный
транспорт для их доставки в виде активных сообщений.


·       Поддержать “суперпамять”, или распределенную,
программно-управляемую память, доступную для всех существующих в распределенной
супервычислительной среде потоков.


S-уровень может быть по-разному реализован для разных архитектур.уровень


· Поддержать мобильные потоки исполнения, объекты и ссылки


·       Поддержать “копирование по необходимости” (Copy-On-Write) для
данных суперпамяти.


·       Поддержать операцию блокирования и освобождения мобильных
объектов.


·       Поддержать иерархию досок объявлений с информацией о
нераспределенных задачах и незадействованных процессорных и прочих ресурсов.


· Реализовать понятия неготового значения и ссылки на неготовое значение


·       Реализовать понятие Т-функции - мобильной функции, являющейся
гранулой параллелизма.


В качестве базового уровня поддержки сущностей Т-системы была создана и
реализована концепция «суперпамяти» - специализированной общей памяти для
организации обменов данными между Т-функциями. Для Т-величин, хранящихся с
ячейках «суперпамяти» реализован подсчёт ссылок и распределённая сборка мусора.
С целью устойчивой работы сборщика мусора в условиях сетевых коммуникаций,
реализован нетривиальный подсчёт ссылок на объекты.


Приложения и пользовательские библиотеки


К настоящему времени, с использованием современной версии Т-системы
созданы и создаются ряд приложений, в том числе в ходе работ по мероприятиям
программы «СКИФ». Вот некоторые из них:


· Инструментальное средство построения динамических интеллектуальных систем
«Миракл» - в рамках выполнения мероприятия 20 программы «СКИФ»


·       Система «MultiGen» - оценка биологической активности веществ


·       Программа численного моделирования разрушения кильватерной
волны


·       Программа для численной оценки скорости приближения к
глобальному аттрактору уравнений Навье-Стокса в задаче о двумерной каверне


·       Программа моделирования фолдинга белков


·       Программа синтеза радиолокационного изображения из голограммы
РЛС космического базирования - в рамках выполнения работ по мероприятию 13
программы «СКИФ».


Разработка вычислительных приложений для распределённых вычислительных
сред и , в частности, для GRID, является достаточно непростой задачей в первую
очередь из-за сложности балансировки нагрузки в гетерогенной среде. Т-система,
в силу обеспечения динамического распараллеливания, предоставляет программисту
возможности прозрачного использования гетерогенных конфигураций: сложность
выравнивания нагрузки «скрыта» от него в планировщике Т-системы,
распределяющего нагрузку между процессорами в кластере или мета-кластере.
Т-система предоставляет следующие возможности для обеспечения распределённых
вычислений:


Поддержка мета-кластерных реализаций MPI: MPICH-G2, IMPI, PACX-MPI


Обеспечение возможности пользовательского расширения стандартного
алгоритма планирования - через механизмы расширения Т-системы.


Информационная система ТРАНСФОРМ (ИС ТРАНСФОРМ) [11] по
преобразованиям программ создается для нужд лаборатории конструирования и
оптимизации программ ИСИ СО РАН. Система предназначена для накопления и
систематизации информации по преобразованиям программ и интеграции работы
сотрудников лаборатории. Предполагается при помощи ИС ТРАНСФОРМ выпускать
аналитические обзоры, обучать специалистов и внедрять преобразования программ в
повседневную практику программирования.


· Гибкость создаваемой системы приобретает первостепенное значение, для
достижения которой необходимо добиться наиболее точного отражения характерных
черт предметной области (ПрО). Поскольку база данных является основой ИС, то
требуемые возможности должны быть заложены в схему базы данных, что позволит в
дальнейшем корректировать режимы использования ИС. Для ее решения как первый
этап предлагается инфологическая схема, дающая представление об области
преобразований программ (не учитывая ограничений, накладываемых конкретной
СУБД) и призванная представить ясное, общедоступное описание БД для уточнения
требований и облегчения взаимодействия с пользователями системы. В работе
используется модель, называемая "объекты-связи". Она определяется в
терминах: атрибут, объект, структурная связь, запросная связь. Под атрибутом
понимается логически неделимый элемент структуры информации, характеризуемый
множеством атомарных значений. Каждый атрибут идентифицируется именем. Объект
инфологической схемы соответствует некоторой сущности реального мира,
представляющей интерес для ПрО. Под Структурной связью понимается иерархическое
отношение между объектами двух типов: владельцем и подчиненным. Для изображения
информационных структур используются диаграммы. Запросная связь - pro некоторая
операция, предусматривающая в алгоритме процесса переход от экземпляров одних
объектов, называемых исходными, к множеству экземпляров объекта, называемого конечным
в запросной связи.


В работе [6] рассматривается проект системы Прогресс.


Исходя из перспективности параллельных архитектур, разработчики считают
целесообразным разработку системы, ориентированной:


· на исследование эффективности применения различных систем преобразований
в процессе трансляции с императивных и функциональных языков для разных классов
программ и ЭВМ (включая ее зависимость от форм промежуточного представления
программ, наборов трансформаций, выбора контекстных условий и стратегий применения
преобразований);


·       на быстрое прототипирование оптимизирующих компиляторов для
целевых архитектур (VLIW- и суперскалярные, мультипроцессоры с распределенной
памятью и т.д);


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


В качестве входных языков предполагается использовать Фортран-77,
Модула-2, Си++, а также язык функционального программирования SISAL (версии 2.0
или SISAL-90). Предполагается, что языки расширены за счет средств
аннотирования программ формализованными комментариями. Эти средства должны
позволять пользователю управлять процессом преобразования программы (например,
заданием дополнительной информации о свойствах программы), а системе -
комментировать результирующую программу информацией о процессе преобразования
программы. Предусматривается возможность реализации в рамках расширенного языка
преобразования последовательных программ в параллельные для параллельных версий
входного языка (например, перевод программы на языке Фортран 77 в программу на
языке Фортран 90).


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


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


Считается целесообразным исследование таких форм промежуточного
представления программ, как абстрактное синтаксическое дерево, управляющий
граф, SSA-форма, граф программных зависимостей, иерархический граф заданий,
идеограф, сеть программных зависимостей, граф потока зависимостей, а также
представления IF1 и IF2, применяемые в компиляторах языка SISAL.


С функциональной точки зрения выделяются следующие компоненты
разрабатываемой системы:


Транслирующая подсистема - переводит входную программу, представленную в
текстовом виде, в основное промежуточное представление, ядром которого является
абстрактное синтаксическое дерево - АСД. Основное промежуточное представление
доступно во время работы любой подсистемы.


Подсистема промежуточных представлений - осуществляет переход от основного
к другим промежуточным представлениям (управляющий граф, граф программных
зависимостей, SSA-форма, иерархический граф заданий, временная сеть Петри и
др.), а также переводы программы из одного промежуточного представления в
другое (если такой перевод возможен). Подсистема поддерживает также набор
базовых операций, в частности, позволяющих осуществлять доступ к любым
конструкциям с
  Дипломная (ВКР). Информационное обеспечение, программирование.
Сочинение по теме Как Владимир Набоков детскую книжку читал
Реферат: Понятие бытия в философии Э. Фромма. Скачать бесплатно и без регистрации
Сочинение На Тему Химия В Повседневной Жизни
Реферат по теме Конструкторское обеспечение производства
Виды И Формы Проверки Знаний Учащихся Реферат
Реферат На Тему Пути Объединения Российского Государства
Пособие по теме Інвестиційне проектування
Реферат: «Готический стиль в архитектуре»
Реферат: Реклама и продвижение товаров в Интернете
Реферат: Химия никеля
Контрольная работа по теме Решение задач с использованием производных
Дипломная работа по теме Влияние совершенствования системы оплаты труда на деятельность организации
Курсовая работа по теме Перевозка строительных грузов
Дипломная работа по теме Разработка программы кодовой связи
Реферат: Благоустройство санитарно-защитной зоны вокруг одиночного стационарного источника загрязнения а
Герой 21 Века Итоговое Сочинение
Напишу Дипломную Работу На Заказ Авито
Дипломная работа по теме Проектирование многоэтажного кирпичного административного здания
Курсовая работа по теме Совершенствование системы формирования и распределения прибыли (на примере ОАО 'Ойл-Продакшн')
Реферат: Нефтяная и газовая промышленность
Похожие работы на - Кабардино-балкарский этнический конфликт
Реферат: Острый инфекционный гастроэнтероколит легкая степень тяжести
Курсовая работа: Разработка мероприятий по повышению эффективности маркетинговой деятельности предприятия на примере

Report Page