Рассмотрим теперь схему программы, соответствующую модели параллелизма данных. Предположим, что в программе имеются блоки двух типов: Ssи Sp(рис. 2.19 а). Алгоритм,
блока SKможет выполняться только в последовательном, режиме одним процессором, а блок Spдопускает разбивку на n независимых модулей S1...,Sn, каждый из которых может выполняться на отдельном процессоре.
Сеть Петри показана на рисунке 2.19 б. Мы видим, что блок Ssодновременно передает данные и управление модулям S,,...,Sn(это происходит при срабатывании перехода tt).
Модули выполняются независимо, однако дальнейшие вычисления могут начаться только после завершения выполнения всех модулей (т.е. должны сложиться условия для срабатывания перехода t2). Таким образом, с помощью сети Петри можно описать нетривиальные особенности параллельного выполнения модулей. С помощью стандартных блок-схем это было бы сделать затруднительно.
На примере данной схемы можно вывести известную формулу Амдала, которая характеризует эффективность параллельных алгоритмов.
Пусть блок Ssтребует для своего выполнения времени t, а блок Spпри его вьполнении на одном процессоре -времени tp. Тогда общее время решения задачи на одном процессоре составит t,=ts+ tp. Если же блок Spвыполняется параллельно на п одинаковых процессорах, то время его выполнения в идеальном случае (при равномерной загрузке всех процессоров) составит tp / n, а общее время решения задачи будет t2=ts+tp/n.
Коэффициент ускорения вычислений составит
ts+tp I
k = t,lt2= sp =------------ -, (2.19)
ts+tp/n s + p/n
ts tp
где s = ——;p = ——— _ относительные доли
ts + tp ts + tp
последовательной и параллельной частей (s + p = 1).
Выражение 2.19 носит название формулы Амдала.
Мы видим, что чем больше величина р, тем больший эффект дает эффект распараллеливания вычислений. При малых p ускорение вычислений за счет увеличения числа процессоров будет незначительным. Например, при р = 0,5 и п = 10 получим k = 1,82, т.е. десятикратное увеличение числа процессоров уменьшает время вычислений менее чем в 2 раза.