Учебное пособие: Новый подход к построению методов межпроцедурного анализа программ

CALL Q(...,Ap (op1 ,...,opp ),...)

...

END

SUBROUTINE Q(...,Aq ,...)

DIMENSION Aq (lq1 :uq1 ,...,lqq :uqq )

...

END

Пусть элементы массива Aq , представляющие часть входных и выходных данных подпрограммы Q, представлены в виде области Wq , описанной с помощью набора линейных равенств и неравенств. Требуется пересчитать эту область в терминах вырезки из соответствующего фактического параметра-массива Ap .

Запишем условие Гpq того, что два элемента массивов Ap (y1 ,..., yp ) и Aq (j1 ,..., jq ) ссылаются на одну и ту же область памяти:

где .

Тогда пересечение трех областей W=Wq ÇГpq Ç{lpi £yi £upi , i =1,p} неявно задает область Wp массива Ap , соответствующую области Wq массива Aq . Для получения явного описания Wp необходимо получить проекцию (p+q)-мерной области W на p-мерное подпространство, соответствующее массиву Ap . Это можно сделать с помощью исключений Фурье-Моцкина [12,13], если равенство Гpq линейно. Определение условий его линейности рассматривается дальше.

Если равенство Гpq нелинейно, то при некоторых условиях можно получить более простое условие. Если массивы Ap и Aq имеют одинаковое число элементов в первых (d-1) размерностях (то есть {upi - lpi = uqi - lqi , 1 £ i £ d-1}), и {opi =lpi , 1 £ i £ d-1}, то добавим в описание области W равенства {yi - lpi =ji - lqi , 1 £ i £ d-1} и составим частичное уравнение ранга d:

где .

Это уравнение проще, чем Гpq , и в реальных случаях может оказаться линейным, в то время как полное уравнение таковым не является. Если количество размерностей с одинаковым числом элементов равно q, но меньше p, то в описание области W вместо условия Гd pq нужно добавить равенства {yi =opi , | i=q+1,p }.

Для того, чтобы получить проекцию (p+q)-мерной области W на p-мерное пространство, необходимо исключить переменные, введенные для описания Wq , из всех равенств и неравенств. Это можно сделать методом Фурье-Моцкина [12,13], если все ограничения, содержащие эти переменные, линейны. Так как в описание Wq входят только линейные ограничения, нелинейность по данным переменным может возникнуть только в равенстве Гpqd pq ). Кроме того, для проведения дальнейшего анализа программы важно, чтобы все получающиеся ограничения также были линейными. Поэтому нужно выделить условия на внешние переменные, при которых Гpqd pq ) будет линейным по всем переменным.

Для этого берем равенство Гpqd pq ), приводим в нем подобные, после чего приравниваем к нулю все нелинейные части. Если из получившихся равенств можно выразить переменные, введенные для описания Wq , через внешние переменные, и подстановка этих выражений в ограничения вместо переменных не входит в противоречие с заданными ограничениями на внешние переменные, то добавим к равенству Гpqd pq ) с зануленными нелинейными частями ограничения {lpi £yi £upi |1£i£p} и {lqi £ji £uqi |1£i£q}. После этого исключаем из получившихся линейных ограничений все переменные, кроме внешних, и получаем искомые ограничения на внешние переменные.

4 Определение параллелизма по графу алгоритма

Циклы, все итерации которых информационно независимы, будем называть PARDO циклами. Независимость итераций сразу говорит о возможности их выполнения в любом порядке, в частности, параллельно. Данный вид параллелизма исключительно важен на практике, прежде всего, в силу простоты использования.

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

Для того чтобы цикл обладал свойством ParDo, необходимо и достаточно, чтобы для любой тройки (Fk , Dk , Nk ) графа алгоритма данного цикла включение Dk Í Gk было верным на множестве Nk , где

Gk - область, задаваемая равенством f1 k = i1 ,

f1 k - первая компонента векторной функции Fk из тройки.

Разработан эффективный алгоритм, позволяющий проверять указанное включение Dk ÍGk , и, следовательно, определять независимость итераций циклов.

5 Пример применения техники межпроцедурного анализа

В качестве примера рассмотрим и проанализируем с использованием описанных методов следующийнебольшой фрагмент программы:

SUBROUTINE P(L, M, N)

DIMENSION A(L, M, N), B(L, M, N)

...

DO K = 2, N-1

К-во Просмотров: 174
Бесплатно скачать Учебное пособие: Новый подход к построению методов межпроцедурного анализа программ