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