Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

malyshkin_ve_korneev_vd_-_parallelnoe_programmirovanie_multikompyuterov

.pdf
Скачиваний:
68
Добавлен:
28.03.2016
Размер:
3.12 Mб
Скачать

7. СИНТЕЗ ПАРАЛЛЕЛЬНЫХ ПРОГРАММ НА ВЫЧИСЛИТЕЛЬНЫХ МОДЕЛЯХ

После всех предшествующих рассмотрений настало время обсудить проблему конструирования параллельных программ в рамках подходящего формализма. В главе рассматривается метод синтеза (автоматического конструирования) параллельных программ на вычислительных моделях (ВМ). Рассмотрение задачи автоматического конструирования параллельных программ и обсуждение необходимых алгоритмов конструирования позволяет в строгих рамках формальной модели обсудить суть проблемы разработки параллельных программ. Большей частью глава написана по материалам книги [5].

7.1.Простые вычислительные модели

В первой главе вычислимая функция определена как функция,

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

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

238

7.1.1. Исходные соображения

В зависимости от характера формализации предметной области можно выделить несколько подходов к проблеме синтеза программ. Наиболее цельный из них в теоретическом отношении

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

программа извлекается из этого доказательства. К сожалению,

этот подход весьма сложно реализуем на практике, так как, с

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

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

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

В конце 70-х годов в Вычислительном центре СО АН

СССР началась разработка метода синтеза параллельных программ на базе вычислительных моделей. Исследования стартовали в то время, когда было объявлено о начале работ по реализации японского проекта 5-го поколения компьютеров, в

основе которого лежала именно логическая модель вычислений.

Причины, по которым не были достигнуты объявленные цели (в

математическом обеспечении) широко разрекламированного и

239

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

чтобы не питать надежд на хороший “ чистый” результат и в обозримом будущем.

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

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

Описанный подход к синтезу программ получил название

структурного синтеза программ.

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

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

240

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

оптимальность (в ряде смыслов), степень параллелизма и т.п. В

целом в процессе синтеза решается несколько задач,

укладывающихся в следующую общую схему.

Пусть даны:

класс S спецификаций входных заданий;

класс Р результирующих выходных программ;

отношение эквивалентности ~ на Р;

отношение качества > на Р, удовлетворяющее аксиомам частичного порядка.

Требуется найти алгоритм А:SР такой, что результат синтеза -

программа p=А(s), p P, - удовлетворяет спецификации s S и

является наилучшей в смысле > в классе программ {р|р A(s)}.

Таким образом, проблема синтеза заключается в разработке алгоритма, конструирующего по каждому элементу из

S некоторый элемент из Р, наилучший среди всех программ,

решающих специфицированную задачу.

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

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

241

прикладные

программы, а

не только демонстративные,

“ игрушечные”

примеры типа

задачи нахождения наибольшего

общего делителя двух целых чисел.

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

Конечно, иногда для этого приходится включать в

вычислительные модели новые необходимые решения.

Образно, идея этого подхода может быть

продемонстрирована на следующем несерьезном примере.

Представим себе

непроходимые джунгли (рис.7.1.a). Для

“ автоматического”

пересечения джунглей из пункта x0 в пункт x3

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

242

трясинах, но после них и все прочие люди смогут пользоваться тропинкой, имея лишь минимально необходимые знания о джунглях. Затем таким же образом могут появиться тропинки из y0 в y1 и из z0 в z2 (рис.7.1.в). Но одновременно появился и путь x0x1z1z2. А из x0 в x3 ведут теперь два пути: x0x1x2x3 и x0x1z1x2x3. И

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

когда на участке x1x2 путника поджидает проголодавшийся тигр.

 

x3

 

x3

 

 

 

y1

 

a

a

x2

 

 

 

Непроходимые

 

z2

 

джунгли

 

z1

 

 

 

 

 

 

x1

 

 

 

y0

 

 

z0

 

 

x0

 

x0

 

 

 

а)

б)

в)

 

Рис. 7.1.

243

x3 a3

x2

a2

x1

a1

x0

Рис. 7.2

Тропинки служат здесь образами алгоритмов. Тропинке a

соответствует последовательность шагов (операций) алгоритма

(рис.7.2). Операция a1 вычисляет значение переменной x1 из значения переменной x0 и т. д. Операция может реализоваться в программе процедурой или фрагментом кода. Тогда переменная x3 вычислится из x0 последовательностью операций x0 a1 x1

a2 x2 a3 x3. Пусть аналогично, значение переменной z2

из значения z0 (тропинка z0x1z1z2) вычисляется последовательностью операций z0 b1 x1 b2 z1 b3 z2,

а значение переменной y1 из значения переменной y0 (тропинка y0z1x2y1) — последовательностью y0 с1 z1 с2 x2 с3 y1. Тогда переменная x3 может быть вычислена двумя разными алгоритмами, соответствующим двум возможным путям x0x1x2x3

и x0x1z1x2x3, т.е. алгоритмами x0 a1 x1 b2 z1 с2 x2

244

a3 x3 и x0 a1 x1 a2 x2 a3 x3. На этом выборе

основано конструирование оптимального алгоритма.

Базой знаний в вычислительных моделях является множество алгоритмов, причем хороших алгоритмов (как тропинки в джунглях не прокладываются плохо, так и в вычислительных моделях накапливаются только хорошие алгоритмы). И комбинации хороших алгоритмов (путь x0x1z1x2x3 в

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

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

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

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

245

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

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

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

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

246

действовали различные прагматические факторы, не вошедшие в теорию. Такие факторы в практических предметных областях невозможно включить в теорию так, чтобы добиться её должной полноты и сохранить непротиворечивость.

7.1.2.Основные определения

Пусть заданы:

1.конечное множество X={x, у, ..., z} переменных для представления вычисляемых и измеряемых величин;

2.конечное множество F={а, b, ..., с} функциональных символов (операций) арности m´n, m³0, n³0, m и n,

вообще говоря, различные для разных операционных символов;

3.с каждым символом операции a арности m´n связан набор

in(a)=(x1, ..., xm) входных и набор out(a)=(y1, … yn)

выходных переменных, при этом i¹j ® yl ¹ yj.

Пара С=(X,F) называется простой вычислительной

моделью (ПВМ). Операция аÎF описывает возможность вычисления переменных out(а) из переменных in(a) с помощью некоторой процедуры. Модели удобно изображать графически.

Графическое представление операции a показано на рис.7.3

247

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]