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