![]() |
|
сделать стартовой | добавить в избранное |
![]() |
Автоматическое распараллеливание программ для распределенных систем. Статическое построение расширенного графа управления |
АннотацияВ дипломной работе рассматриваются задачи, связанные с технологией автоматического распараллеливания программ. В первой ее части обсуждаются этапы развития компьютерной науки в области параллельных вычислений, существующие архитектурные и теоретические решения. Вторая часть содержит описание проекта разработки системы автоматического распараллеливания программ на языке For ra 77, частью которого является данная дипломная работа. Третья часть посвящена одному из этапов автоматического распараллеливания – созданию внутреннего представления программы, соответствующего проблематике решаемой задачи. Реализация этого этапа является задачей данной дипломной работы. В четвертой части приведено описание программного кода дипломной работы, осуществляющего решение поставленной задачи. В приложении содержится один из примеров, использованных при тестировании программы дипломной работы, и распечатка результатов его обработки. ОглавлениеВведение2 1. Система автоматического распараллеливания.12 1.1 Назначение системы.12 1.2 Схема работы системы автоматического распараллеливания.13 1.3 Постановка задачи дипломной работы.15 2. Создание внутреннего представления программы.16 2.1 Разбор исходного текста. Система Sage .16 2.2 Внутреннее представление программы высокого уровня.21 2.3 Расширенный граф управления. Вспомогательные структуры.23 3. Построение расширенного графа управления.29 3.1 Ограничения на входную программу.29 3.2 Описание классов.30 3.3 Алгоритмы.37 Заключение.43 Библиография.44 Приложение.45 ВведениеОпределим параллельный компьютер как множество процессорных устройств, которые могут согласованно работать над решением вычислительных задач. Это определение является достаточно широким, чтобы в него можно было включить параллельные суперкомпьютеры с сотнями или тысячами процессоров, объединенные в сети рабочие станции, многопроцессорные рабочие станции. Параллельные компьютеры представляют интерес из-за возможности объединения вычислительных ресурсов (процессоров, памяти и др.) для решения важных счетных задач. Если раньше параллелелизм относился к несколько экзотическим областям науки, то дальнейшее изучение направлений развития архитектуры компьютеров, сетевых технологий и конечных приложений коренным образом изменило это представление. Использование параллельных вычислений стало повсеместным, а параллельное программирование – центральным направлением в индустрии программного обеспечения. Параллелелизм: направления развития Несмотря на постоянно увеличивающееся быстродействие компьютеров, нельзя ожидать, что они станут достаточно быстрыми для удовлетворения всех потребностей всевозможных задач вычислительного характера. Напротив, история компьютерной науки показывает, что как только новейшие архитектурные технологии начинают справляться с требованиями уже существующих приложений, очень скоро появляются новые приложения, вызывающие необходимость дальнейшего их развития. И если раньше основным побуждающим фактором создания передовых вычислительных разработок являлись задачи математического моделирования сложных систем - погодные и климатические явления, электронные цепи, производственные процессы, различные физические и химические процессы, то сейчас не меньшее значение приобрели коммерческие приложения, обрабатывающие большие объемы информации: программное обеспечение для проведения видеоконференций, медицинской диагностики, параллельные СУБД, системы виртуальной реальности.
Производительность компьютера напрямую зависит от времени, необходимого для совершения простейшей операции, и количества таких операций, совершаемых одновременно. Это время, в свою очередь, ограничено тактовой частотой процессора, – для которой существует некоторый предел, обусловленный физическими законами. Таким образом, ускорения процессоров недостаточно для дальнейшего увеличения вычислительной мощности. Хотя рост производительности компьютеров от их создания до наших дней описывается экспоненциальным законом (от нескольких десятков операций с плавающей точкой в секунду для первых ЭВМ в 1940-х до десятков миллиардов в 1990-х), наиболее значительным достижением представляется их эволюция от последовательной архитектуры к параллельной. Другим важным направлением развития, несомненно, сильно изменившим взгляд на вычислительные процессы, является большое увеличение возможностей сетей, соединяющих компьютеры. Резко возросшая пропускная способность, высокая надежность, защищенность передаваемой информации и другие успехи в этом направлении позволяют разрабатывать приложения, использующие физически распределенные ресурсы как части одной системы. Такие приложения могут, например, использовать процессорное время множества удаленных компьютеров, обращаться к распределенным базам данных, осуществлять рендеринг одновременно на нескольких графических станциях. Таким образом, можно сделать вывод о бесспорной необходимости использования принципов параллелелизма при решении задач, требующих большого объема вычислений (в том числе в реальном времени), а также о существовании позволяющих использовать такой подход архитектурных и сетевых решений. Модели параллельного программирования Основой модели компьютера фон Неймана является процессор, способный выполнять последовательность инструкций. Кроме различных арифметических операций, эти инструкции могут специфицировать адрес данных в памяти для чтения или записи, адрес следующей инструкции. И хотя вполне возможно создавать программы в рамках этой модели при помощи машинных языков, такой метод слишком сложен для большинства приложений. Поэтому на практике применяется технология модульного проектирования, при которой сложные программы конструируются из более простых компонентов, и в этих компонентах используются такие элементы абстракции высокого уровня, как структуры данных, циклы и процедуры. Несколько более высоким уровнем абстракции является технология объектно-ориентированного программирования. Высокоуровневые языки, такие, как For ra , Pascal, Ada, C, C , предоставляют возможность разработки ПО в рамках этих технологий с автоматической компиляцией текста в исполняемый код. Параллельное программирование привносит дополнительный уровень сложности: если мы станем программировать на низком уровне, не только резко увеличится количество инструкций по сравнению с последовательной программой, но и придется подробно распределять задания между, возможно, тысячами процессоров, и координировать миллионы межпроцессорных обменов. Таким образом, модульность можно назвать одним из основных требований к параллельному ПО.
Поскольку большинство существующих алгоритмов ориентировано на однопроцессорные системы, очевидна необходимость при разработке новых алгоритмов учитывать особенности одновременного выполнения многих операций: параллельность – неотъемлемое требование к алгоритмам, реализуемым в параллельном ПО. Постоянное увеличение количества процессоров в параллельных компьютерах приводит нас к выводу, что программы, рассчитанные на фиксированное число CPU, равно как и программы, предназначенные для выполнения на одном компьютере, нельзя считать приемлемыми. Следовательно, мы можем к списку требований добавить расширяемость – “эластичность” к увеличению числа процессоров, на которых выполняется программа. Если все параллельные вычислительные системы классифицировать по способу организации доступа к памяти, то можно выделить две группы: системы с общей памятью – каждый процессор (вычислительный узел) имеет непосредственный доступ к запоминающему устройству, и системы с распределенной памятью – каждый узел имеет отдельное ЗУ. Во 2-м случае обмены данными требуют достаточно высоких накладных расходов, и если для мультипроцессорных компьютеров доступ к данным другого процессора может потребовать в 10 – 1000 раз больше времени, чем к своим, то для сетевых распределенных систем порядок может быть намного выше. В связи с этим, к параллельным алгоритмам и программам предъявляется также требование локальности – оптимальное с точки зрения расходов на межпроцессорные коммуникации распределение данных. Рассмотрим несколько моделей параллельного программирования. Простейшая модель опирается на два понятия: задача и канал. При этом параллельное вычисление состоит из одной или более задач, выполняющихся одновременно, их количество может меняться в процессе выполнения программы. Каждая задача включает в себя последовательную программу и локальную область памяти, что, фактически, является виртуальной машиной фон Неймана. В дополнение к этому, задача имеет набор входных и выходных портов, определяющих ее интерфейс с окружением. Кроме чтения и записи в локальную память, задача может: посылать сообщения в свои выходные порты, принимать сообщения через свои входные порты, создавать новые задачи (приостанавливаясь до их завершения), прекращать свое выполнение. Операция посылки сообщения асинхронная, т.е. она завершается сразу независимо от реакции принимающей стороны, операция приема – синхронная, т.е. она вызывает приостановку задачи, пока сообщение не станет доступным. Пары входных/выходных портов могут быть соединены очередями сообщений, которые называются каналами. Каналы могут создаваться и удаляться во время выполнения программы, ссылки на каналы (порты) можно включать в сообщения, так что соединения достаточно динамичны. Задачи могут быть отображены на физические процессоры различными способами (в частности, все задачи на одном процессоре) без изменения семантики программы. Модель Message Passi g, вероятно, является сегодня наиболее распространенной. В этой модели программа также создает набор задач, каждая из которых содержит локальные данные, и идентифицируется уникальным именем.
Первыми, кто заговорил о смешанном хозяйстве вместо сплошного национализированного или социализированного хозяйства, были некоторые правые социалисты в Англии. Вслед за ними германские социал-демократы ясно формулировали это в своей новой программе. И сейчас это фактически господствующая точка зрения в большинстве партий демократического социализма. На съезде социалистической Рабочей партии Новой Зеландии, происходившем в мае 1961 г., была принята декларация, в которой, между прочим сказано: «Справедливое распределение национального богатства требует расширения общественной собственности и контроля и других законов для обуздания частных монополий, проведения радикальной системы налогов и защиты интересов потребителей. Но наравне с общественным сектором хозяйства необходимо иметь также частновладельческий сектор». Еще в 1961 г. известный французский социалист Жюль Мок, член Национального комитета французской социалистической партии, в статье, помещенной в швейцарском социалистическом журнале, поставил вопрос: «Действительно ли национализация ведет к социализму»? И анализ, который он дал, очень интересен и весьма поучителен
2. Маргиналы и их социальные интересы
3. Политические интересы социальных групп. Лоббизм в политической жизни России
5. Социально-экономические и экологические интересы населения
10. Организационная структура социально-экономического объекта научно-технической библиотеки
11. Построение научного исследования
12. Социальное управление и его связь с интересами классов, наций, государств
14. О роли эксперимента в разработке научных гипотез происхождения жизни
15. Научный креационизм (Теория сотворения). Обновленная и улучшенная версия
16. Социально-политический анализ Военной доктрины Российской Федерации
17. Социально-экономическая модель в Швеции: процесс становления и развития
18. Шпаргалка для сдачи экзаменов по экономической и социальной географии мира
20. Основные направления научных исследований в России и за рубежом
21. Шведская модель социальной экономики
25. Гидрогеология. Построение разреза по скважинам
26. Реформы собственности и социальная дифференциация в переходный период /Украина/
27. Социальная защита государственных служащих
28. Расходы бюджетной системы на социальные цели
29. Становление системы социальной защиты государственных служащих в Российской Федерации
30. Сравнительная характеристика условий договоров найма, социального и коммерческого найма
32. Общественно - политическое и социально - экономическое положение Китая в 20-х - 30-х годах ХХ века
33. Теория социальной пассионарности Л. Н. Гумилева
34. Социально-экономическая структура Верхнеудинска в феодальный период (середина XVII в.- 1862 год)
36. Возрождение России: социально-экономический портрет
41. Арбитражный суд как гарантия реализации экономических интересов субъектов в Российской Федерации
42. Единый социальный налог и социальная защита населения России
44. Правовое регулирование качества продукции с учетом интересов потребителей
45. Социально-юридическая система немецкого фашизма
46. Краткий курс лекций по праву социального обеспечения
47. Право социального обеспечения
48. Социальное страхование в России
49. Контрактная форма регулирования социально-трудовых отношений
50. Кадровый потенциал в свете социально-экономического развития города и района
52. Влияние туризма на экономику и социально-культурную сферу
53. Научно-педагогическое обоснование урока английского языка в 8“б” классе Лингвистической гимназии №3
57. Научный cтиль
58. Историзация мифа и социальные мотивы в повести Кристы Вольф «Кассандра»
59. Многозначность научно-технической лексики и терминов
60. Реферат по научной монографии А.Н. Троицкого «Александр I и Наполеон» Москва, «Высшая школа»1994 г.
61. Петр I, взаимосвязь политических и социально-экономических процессов
62. Министр просвещения граф С. С. Уваров. Самодержавие, Православие, Народность
63. Социально-экономические результаты отмены крепостного права в России
64. Социально-экономическая модель цивилизации древних майя
65. Научная революция Галилея - первый шаг к современной науке
68. Социально-экономический и политический строй. Внутренняя и внешняя политика Киевской Руси
69. Социально - экономическое политическое развитие России в начале 20 века
73. Построение локальной компьютерной сети масштаба малого предприятия на основе сетевой ОС Linux
74. Построение сети передачи данных
75. Управление потоками данных в параллельных алгоритмах вычислительной линейной алгебры
76. Построение verilog-модели ber-тестера для проверки каналов связи телекоммуникационных систем
77. Телекоммуникационные компьютерные сети: эволюция и основные принципы построения
78. Состав и принципы построения ЭВМ
80. Полная параллельная поддержка для систем планирования, основанных на случаях
81. Комплекс программ построения справочников по формальным языкам
85. Вычисление определённых интегралов
89. Разработка АРМ научно-технической библиотеки университета
90. Дискретная математика: "Графы"
91. Кластерный анализ в задачах социально-экономического прогнозирования
93. Приближенное вычисление определенного интеграла при помощи квадратурной формулы Чебышева
94. Построение графика функции различными методами (самостоятельная работа учащихся)
95. Вычисление двойных интегралов методом ячеек
96. Структура исчисления предикатов построение логического вывода
97. Устный счет как средство повышения интереса к уроку математики
98. Вычисление корней нелинейного уравнения
99. Графы. решение практических задач с использованием графов (С++)