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

malyshkin_ve_korneev_vd_-_parallelnoe_programmirovanie_multikompyuterov

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

fa модуль modа. Такая фиксация уменьшает мобильность

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

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

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

Нужно уметь также изменять интерпретацию некоторых операций. Пусть, например, на ПВМ С определен (V,W)-план Т,

задающий алгоритм вычисления определенного интеграла с подынтегральной функцией fa =I(а), операция а используется в Т.

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

Для решения указанных задач используется понятие

298

структурной интерпретации ПВМ. Пусть G — конечное множество ПВМ, в каждой ПВМ В=(XB,FB), В G, существует

(VB,WB)-план ТB. Структурной интерпретацией ПВМ С=(XC,FC)

называется функция SI, которая сопоставляет:

1)каждой операции b, b FC, − вычислительную модель

В=SI(b), В G;

2)каждой переменной x in(b) − переменную v=SI(x), v VB;

каждой переменной у out(b) − переменную w=SI(y), w WB,

и, кроме того,

u (u ((VB (WB)→x(x in(a) out(a) u=SI(x))).

Операция b называется структурированной операцией и

говорится, что операция b раскрывается ПВМ В. Далее предполагается также, что в В нет операции b и при раскрытии структурированных операций В никогда не встретится операция b. Таким образом, все ПВМ из G должны быть описаны до момента определения структурированной операции b. Здесь это чисто техническое ограничение, введенное для упрощения описаний1. В отличие от структурной интерпретации SI

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

1 Если снять это ограничение, то будет определен класс рекурсивных ВМ [5]. В контексте текущего рассмотрения они мало интересны и потому не обсуждаются.

299

, d w 1
, ..., d x n
, ..., d w m
}ÍDCÇDB.
{d x1

естественным образом.

Пусть заданы интерпретация IB ПВМ В в области интерпретации DB и интерпретация IC ПВМ С в области интерпретации DC, причем функция fb =IC(b) вычисляется алгоритмом, заданным (VB,WB)-планом ТB. Если t=b(ti,...,tn) —

некоторый терм из множества TVW , построенного на ПВМ С,

in(b)={x1,...,xn}, out(b)={y1,...,ym}, то при вычислении dyi =val(t,yi),

i=1, ..., т,

сначала

вычисляются

d

=val(tj,xj),

j=1,

..., n,

 

 

 

 

xj

 

 

 

 

 

переменные

vj=SI(xj)

получают

значения

dxj ,

а

затем

dw =val(ti¢,wi),

ti¢ÎТB,

wi=SI(yi),

и

переменные

yi

получают

i

 

 

 

 

 

 

 

 

 

значения dw , которые и обозначаются dy .

 

 

 

 

i

 

 

 

i

 

 

 

 

 

Для корректности этого доопределения необходимо, чтобы выполнялось условие

Интерпретации IC и IB называются согласованными. Таким образом, структурная интерпретация SI(b)=В задает внутреннюю структуру операции b, а в качестве алгоритма вычисления функции fb=IC(b) может быть взят любой (VB,WB)-план,

построенный па ПВМ В.

Раскрытием b называется построение множества ТB. При раскрытии b могут выполняться оптимизирующие преобразования структурированной операции. Рассмотрим

300

C1=ОПCÅОПB,

несколько таких преобразований. Введенные в начале параграфа обозначения сохраняют свой смысл. Предполагается также, что ПВМ С=(XC,FC) и В=(ХB,FB) представлены таблицами ТХC и ОПС,

ТХB и ОПB соответственно и, кроме того, операция b

используется в некотором (V,W)-плане Т, построенном на С. При всех преобразованиях структурная интерпретация переменных из

XC не изменяется.

Открытая подстановка. Строится ПВМ С1=(X1,F1),

ТХC1=ТХCÅТХB, значок Å обозначает объединение таблиц, при этом если и=SI(z), и uÎVBÈWB,

ZÎ(in(b)Èout(b)), то переменная и переименовывается и получает имя z везде, где и встречается в ТХC1 и ОПC1. Строка и из ТХC1

вычеркивается, а в строке z множество

A(z)={аÎ(FCÈFB)½zÎin(a)}, a comp(z)={аÎ(FCÈFB)½zÎout(a)}.

Строка b также вычеркивается из ОПC1, а операция b удаляется из всех множеств. Предполагается, что в С и в B нет одноименных переменных и операций. Такое раскрытие аналогично открытой подстановке макроопределения вместо макровызова. При планировании на C1 будет построено и множество TB.

Раскрытие структурированной операции b открытой подстановкой возможно не всегда, в частности, тогда, когда функция fa должна в синтезированной ПП вычисляться процедурой. В этом случае планирование на ПВМ В (построение

TB) ведется отдельно от планирования на ПВМ С.

301

x8

 

x9

 

 

b

y8

 

y9

g3

 

g4

y3

y4

y1

g2

 

g1

y5

 

y6

x5

 

x6

Рис. 7.21.

302

 

x10

 

d

 

x8

 

b

x5

x6

c

f

x3

x2

a

x1

Рис. 7.22.

Чистка структурированной операции. Пусть в Т используется лишь часть out(b) выходных переменных операций b, т. е.

выполняется строгое включение out(b) out(b). Множество переменных ПВМ В, которые соответствуют в структурной интерпретации переменным из out(b), обозначим WB. ТОгда из

ТХB и ОПB могут быть в нисходящей части алгоритма планирования на В удалены переменные и операции, которые не используются в термах, вычисляющих WB, при этом вместо VB

303

может быть взято меньшее в общем случае множество VB VB.

Такая чистка b делается описанным алгоритмом планирования и может существенно улучшить ПП, реализующую Т, так как из термов Т можно удалить подтермы, вычисляющие переменные из множества in(b)\in(b) (через in(b) обозначено множество тех переменных из in(b), которым в структурной интерпретации соответствуют переменные из VB). Кроме того, в ПП вместо процедуры, реализующей (VB,WB)-план TB, может быть использована процедура, реализующая (VB,WB)-план TB для которого справедливо строгое включение TB TB.

На рис. 7.21 приведена ПВМ В, раскрывающая структурированную операцию b ПВМ, показанной на рис. 7.17,

терм t на рис. 7.22 вычисляет переменную x10 из переменных {x1,

х2}. Так как в t для вычисления x10 используется из двух выходных переменных операции b только одна переменная x8, то при раскрытии b строятся только термы, вычисляющие y8=SI(x8),

вданном случае построится терм y5g2y3g3y8 и,

следовательно, переменная y6 не нужна для вычисления y8. После

чистки операции b образуется операция b', in(b')={х5}, out(b')={x8}, и в t становится ненужным подтерм x2fx6. В

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

чем t, термом x1ax3cx5b′→x8dx10.

Выделение подопераций. В ПП, реализующей (V,W)-план Т, нет

в общем случае необходимости ожидать вычисления значений

304

всех переменных из in(b) для того, чтобы начать выполнение modb, реализующего (VB,WB)-план ТB. Выполнение modb может начаться, когда известны значения лишь части переменных из in(b) (смешанные или частичные вычисления). Это можно делать динамически, но здесь рассматриваются только статические методы конструирования программ и потому частичность вычислений выливается в изменений структуры ВМ.

Для конструирования такого modb используется прием выделения подопераций, когда b разделяется на несколько структурированных операций. Выделение подопераций производится в процессе планирования на ПЭВМ C.

Алгоритм планирования модифицируется следующим образом. Всякий раз, когда завершено построение множества VI, i=0, ..., k, в восходящей части алгоритма планирования строится множество V bi =ViÇin(b). Если оно пусто, то планирование на С продолжается дальше, если же нет — планирование на С

прерывается, образуется множество Vb1, 0 = SI(х), и

x Vb1

начинается планирование на В (восходящая часть алгоритма), при котором строятся множества переменных V bi , j1 и операций

F bi , ji , j1=0, ..., k1; k1 таково, что F b1 , k1 =Æ. В этот момент планирование на В завершается, образуется структурированная операция b1, SI(b1)=В1, где В1 — есть ПВМ, определяемая всеми

305

Vi+1

переменными и операциями из множеств V b

, j

и F b

, j , т. е.

 

 

 

 

 

 

 

i

1

i

1

 

 

 

 

 

 

 

 

 

 

 

V

 

,

F

 

.

 

 

 

B1= j1

b1

, j1

 

j1

b1

, j1

 

 

 

 

Множество in(b1) содержит все переменные из V b1 , a out(b1)

все переменные уÎXC такие, что SI(у)ÎW b1 , где

 

 

 

k1

 

 

 

 

 

W =

 

V

, j1

\ V

,0

 

b1

 

 

b1

 

b1

 

 

 

j1=1

 

 

 

 

и все переменные из

W b .

Из

Fb удаляются все операции,

 

 

 

 

 

1

 

 

 

 

 

 

 

 

k1

 

 

 

попавшие в множество

 

Fb , j

. Структурированная операция

 

 

 

 

j1 =0

1

1

 

 

 

 

 

 

 

 

b1 называется подоперацией структурированной операции b.

Операция b1 добавляется в FC и FI, переменные out(b1) — в ХC и в

(при необходимости переменные из W b1 могут быть переименованы).

Если zÎWb, то считается, что SI(z)=z. После этого возобновляется планирование на С с прерванного места. Если

при некотором l, k>l>i,

окажется,

что множество

V b2 =(VlÇin(b))\(in(b1)Èout(b1))

непустое,

то вновь следует

прервать планирование на С; образовать множество переменных

V b 2 , 0

=

 

 

(W b1 V b1 , 0 );

 

SI ( x )

 

 

x V b 2

 

 

306

построить множества Vb2 , j2 и Fb2 , j2 , j=0, ..., k2, Fb2 ,k2 = ;

образовать подоперацию b2, SI(b2)=В2, где ПВМ В2 определена

всеми переменными и операциями из множеств Vb , j

и Fb , j ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

2

2

2

in(b2) содержат все переменные из V b

out(b1) in(b1),

а out(b2)

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

все

 

переменные

у XC

 

такие,

что

(SI(y) W b

) (y (in(b1) out(b1))), и все переменные W b ,

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

k 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

 

 

 

 

\ (W b

 

 

 

 

 

 

, 0 ) .

 

W b

 

V b

 

, j

 

V b

, 0

V b

 

 

 

 

2

 

 

j 2 = 1

2

 

2

 

1

1

 

 

 

2

 

 

 

 

Операция b2 добавляется в FC и Fl переменные out(b2) - в

XC и Vl+1. Если y W b ,

 

то SI(y)=у,

I(b2) задается ( V b

, 0 , W b

)-

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

2

 

2

планом,

из

FB

Удаляются

операции,

вошедшие

в

 

множество

k 2

j2 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Fb2 ,

Затем

возобновляется планирование

на

С и т.

д.

j2 = 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

После завершения восходящей части алгоритма планирования на

С из ТХC и ОПC удаляется b. В результате после планирования в таблицах ТХC и ОПC появляются подоперации структурированной операции b, если, конечно, они не будут удалены в нисходящей части алгоритма планирования на С. Для всех оставшихся в таблицах структурированных операций после завершения планирования (когда станет известно, какие из их выходных переменных используются в термах из TVW ) проводится чистка.

307

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