next up previous contents
Next: Портирование существующих приложений в Up: Распределение рабочей нагрузки Previous: Декомпозиция данных   Contents

Функциональная декомпозиция

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

Хотя концепция функциональной декомпозиции и проиллюстрирована выше тривиальным примером, этот термин, как правило, используется для обозначения разбиения и распределения рабочей нагрузки функцией within, относящийся к вычислительной фазе. В типовом случае вычисления приложения содержат несколько особых подалгоритмов - иногда для одних и тех же данных (МКОД или сценарий: ``много команд и одни данные''), иногда в виде конвейеризированной последовательности преобразований, а иногда - представленных неструктурированными шаблонами обменов. Парадигма обобщенной функциональной декомпозиции основаывается на гипотетическом симулировании ``продвижения'' самолета, состоящего из множества взаимосвязанных и взаимодействующих, функционально декомпозированных подалгоритмов. Диаграмма,
предоставляющая возможность взглянуть на такой пример, показана на рис. 14 (кроме того, она будет использоваться в разделах, где описывается графическое программирование PVM).

\includegraphics[scale=0.48]{pic44.eps}

Рис. 14. Пример функциональной декомпозиции

На рисунке каждое состояние, т.е. круг на ``графе'', представляет функционально декомпозированную часть приложения. Функция ввода распределяет частичные параметры задачи на различные функции 2 - 6, после порождения процессов соответствующих подпрограмм, реализующих каждый из подалгоритмов приложения. Некоторые данные могут быть переданы нескольким функциям (как в случае с двумя функциями wing) или данные могут предназначаться только для одной функции. После выполнения некоторого количества вычислений, эти функции доставляют непосредственно конечный результат в функции 7, 8 и 9, которые могут порождаться в начале вычислительного процесса и поэтому быть доступными. Диаграмма отражает первичную концепцию декомпозиции приложений по функциям с тем же успехом, что и отношения зависимости по контролю и данным. Параллелизм достигается благодаря двум причинам: параллельному и независимому исполнению модулей (функциями 2 - 6) плюс одновременному и конвейеризированному исполнению модулей в цепи зависимости (функциями 1, 6, 8 и 9).



2004-06-22