Научная статья на тему 'Автоматическое определение циклов ParDo в программе'

Автоматическое определение циклов ParDo в программе Текст научной статьи по специальности «Математика»

CC BY
80
15
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по математике, автор научной работы — Шульженко А. М.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по математике , автор научной работы — Шульженко А. М.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

A method for ParDo loops recognition is proposed. This method is based on the lattice graphs theory, so it can precisely recognize ParDo loops in every program from the linear class. It's suitable for use in automatic parallelization of programs.

Текст научной работы на тему «Автоматическое определение циклов ParDo в программе»

16) следует из L*s{7 = (ю), 4 = (0), 1 = (a +1,0), 2 = (1,am), 3' = (a,m)} (рис. 2).

Теорема 8 доказана.

Таким образом, в тернаре бесконечной плоскости Фано G2 выполняются аксиомы слабо-дистрибутивного тела R2 [3] характеристики 2 с a4 • ab = ba • a4 = b.

О достаточных условиях дезарговости бесконечной плоскости Фано гласит следующая

Теорема 9. Если в тернаре бесконечной плоскости Фано G2 имеет место тождество (b + c)a = ba + ca или a(b + c) = ab + ac, V a, c, или же a ■ bc, то проективная плоскость G2 дезаргова.

Доказательство. В силу теорем 8 и 1.13 в [3] в левой IPoVW-системе характеристики 2 из a-1 • ab = b и a(b + 1) = ab + a следует a(b + c) = = ab + ac V a, b, c. В условиях теоремы в тернаре плоскости выполняется и равенство a(b + c) = ab + ac V a, b, c. Следовательно, в тернаре выполняются условия теоремы Мальцева [4], и поэтому тернар плоскости Фано будет представлять альтернативное тело характеристики 2, и, следовательно, в силу теоремы Линника [5] ассоциативное тело характеристики 2, плоскость над которым дезаргова. Теорема 9 доказана.

Литература

1. Gleason A.M. Finite Fano // Mat. 1956. Vol. 78. S. 797-807.

2. Рашевский П.К. // Мат. сб. 1940. Т. 8(50): 2.

3. Хубежты И.А. О некоторых классах алгебр и плоскостей. Владикавказ (Дза-уджикау), 2005.

4. Мальцев А.И. Алгебраические системы. М., 1970.

5. ЛинникЮ.В. // УМН. 1949. № 4. Вып. 5. С. 49-65.

Северо-Осетинский государственный университет 28 сентября 2005 г.

УДК 681.3.06

АВТОМАТИЧЕСКОЕ ОПРЕДЕЛЕНИЕ ЦИКЛОВ ParDo В ПРОГРАММЕ

© 2005 г. А.М. Шульженко

A method for ParDo loops recognition is proposed. This method is based on the lattice graphs theory, so it can precisely recognize ParDo loops in every program from the linear class. It's suitable for use in automatic parallelization of programs.

Введение

Предлагается новый метод определения циклов ParDo, основанный на теории и методах построения решетчатых (минимальных снизу) графов [1-3]. Циклы, обладающие свойством ParDo, часто приходится опреде-

лять при распараллеливании программ. Если цикл обладает таким свойством, то все его итерации можно выполнять в любом порядке, в том числе и одновременно [1, 4].

Способы распознавания ParDo циклов рассматривались в [1, 4, 5]. Предлагаемый метод отличается тем, что он, с одной стороны, основан на теории решетчатых графов и позволяет точно определять ParDo циклы для любых программ из линейного класса [1, а 340]. С другой стороны, метод удобен для использования при автоматическом распараллеливании. Он основан на необходимых и достаточных условиях, которые доказываются в настоящей работе. Неравенства Банержи [4, 5] предоставляют только достаточные условия и поэтому могут не всегда выявить свойство ParDo у цикла. В [1, параграф 6.7] предлагается метод, также основанный на теории решетчатых графов. Однако не доказывается, что функции, описывающие дуги решетчатого графа, строятся алгоритмом [1, параграф 6.5-6.6] в том виде, в котором утверждение 6.11 этой книги предоставляет и необходимые условия. В настоящее время предлагаемый метод определения РаЮо циклов используется в Открытой распараллеливающей системе (ОРС) [6, 7].

1. Определение и компактное хранение решетчатого графа

Далее будем считать, что требуется выявить РаЮо циклы во фрагменте программы, принадлежащей линейному классу программ [1, с. 340]. В частности, у таких программ все индексные выражения переменных, границы циклов, условия условных операторов являются аффинными формами счетчиков внешних циклов и внешних переменных (переменные, значения которых не известны в момент компиляции программы) [1].

Как обычно, вхождением переменной будем называть всякое появление переменной в тексте программы. Любому вхождению при конкретном значении индексного выражения соответствует обращение к некоторой ячейке памяти. Если при этом обращении меняется состояние ячейки (вхождение в левую часть оператора присваивания), то такое вхождение называется генератором. Остальные - использованиями.

Два вхождения и, V порождают информационную зависимость, если при некоторых допустимых значениях индексных выражений они обращаются к одной и той же ячейке памяти. При этом V зависит от и, если вхождение и обращается к некоторой ячейке памяти раньше, чем V. В зависимости от типов вхождений (генератор/использование) различают четыре типа зависимости: потоковая, антизависимость, выходная и входная зависимость [1, 4, 5].

Пример 1.

&г(1 = 1; К = 100; 1++) &г(] = 1; И< = 100; И++)

аМИ = аШМ + ЪИШ;

и V

В данном примере вхождение V зависит от и, причем эта зависимость является потоковой. Аналогично вхождение и зависит от V, но эта зависимость является антизависимостью.

Конец примера 1.

Рассмотрим гнездо из п вложенных друг в друга циклов. Занумеруем операторы циклов в этом гнезде в соответствии с порядком вложенности, начиная с самого внешнего цикла. Обозначим счетчик /-го цикла - /,-. Будем писать v[/'ь 1'2, ... Гп] (или v[Ir], где I = (/'ь 1'2, ... 1'п)), чтобы сослаться на вхождение V при значениях счетчиков циклов 11 = 1\, 12 = 1'2, ... 1п = Гп.

Определение. Множество значений, которые может принимать счетчик циклов I = (/ь 12, ..., 1п) в указанном гнезде, называется пространством итераций данного гнезда. Для программ из линейного класса пространство итераций может быть описано как все целые точки, содержащиеся в некотором выпуклом многограннике, который называется линейным пространством итераций.

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

Определение. Пусть некоторый генератор и содержится в гнезде вложенных друг в друга циклов, пространство итераций которого у. Использование V - в гнезде вложенных друг в друга циклов, пространство итераций которого У2. Решетчатый граф, описывающий потоковую зависимость вхождения V от и, определяется следующим образом: вершины графа - объединение множеств У! и У2; дуга направлена из вершины I е У в вершину I е У2, если выполнено:

а) и[Т] и VI] обращаются к одной ячейке памяти;

б) запись и[Т] выполняется раньше, чем чтение VI];

г) не существует такой записи и[Щ, которая происходит после записи и[Т], но перед чтением VI], которая перезаписывает значение, записанное иЩ.

Решетчатый граф обладает следующим свойством: в каждую вершину входит не более одной дуги. Пусть Н - множество вершин решетчатого графа, в которые входят дуги (Н с У2). Тогда решетчатый граф может быть описан функцией Е, определенной на множестве Н, которая вершине I е Н ставит в соответствие начальную вершину I е У единственной дуги, входящей в I. В общем случае функция Е является кусочной. Поэтому функцию Е представляют в виде набора функций Ек (к = 1.^), которые определены на подмножествах Нк (к = 1.^) пространства итераций У2. Далее в работе будем говорить о наборе функций, описывающих дуги решетчатого графа.

Пример 2. Рассмотрим фрагмент программы примера 1. Решетчатый граф, описывающий зависимость вхождения V от и, изображен на рис. 1 (в данном примере множества У1 и У2 совпадают, поэтому на рисунке они совмещены).

1 2 3 4 5 /

Рис. 1

Дуги этого графа описываются только одной функцией Е1(/, ') = (у, /), область определения которой - множество Н1 описывается как все целые точки выпуклого линейного многогранника, заданного неравенствами: / < 5,' > 1, / >у.

Конец примера 2.

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

- функции имеют вид I = А * 3 + Ь, где А - числовая матрица; Ь - вектор;

- функции заданы на всех целых точках некоторых выпуклых линейных многогранников; (*)

- количество функций и выпуклых линейных многогранников, на которых задана отдельная функция, конечно, не зависит от внешних переменных и не пропорционально размерам пространства итераций.

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

Ьг(1 = 1; К = N 1++) а[2*] = ... аЩ ...;

Здесь дуги решетчатого графа, описывающего зависимость а[1] от а[21], входят только в вершины с четными координатами.

Определение [3]. Форма, полученная из параметров и целочисленных констант с помощью операций сложения, умножения на целое, деления на целое, называется квазиаффинной.

Например, квазиаффинной является форма /^2+/+1. Слагаемое /^2 есть ближайшее целое, не превосходящее //2.

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

алгоритма [2, 3]. С помощью алгоритма [1] можно построить функции, описывающие дуги решетчатого графа, только в том случае, если дуги этого графа могут быть описаны функциями, удовлетворяющими условиям (*).

Определение [1]. Говорят, что решетчатый граф, дуги которого описываются функцией Г, покрывается системой функций Г, если при любых значениях внешних переменных для любой точки пространства итераций I, в которой определена функция Г, найдется такая подсистема Г^, что значение Г(1) совпадает со значениями Гь(1).

Применяя алгоритм [1], можно построить систему покрывающих функций, которая в общем случае может описывать количество дуг большее, чем имеется в решетчатом графе.

Далее вплоть до п. 5 будем считать, что рассматриваемые фрагменты программ не содержат внешних переменных.

Описывается алгоритм построения решетчатых графов, основанный на методах В.В. Воеводина и П. Фотрье (Р. Реаийег) [1-3]. Знание этого алгоритма существенно потребуется в настоящей работе.

Пусть некоторый генератор и содержится в гнезде из п циклов, пространство итераций которого У. Использование V - в гнезде из т циклов, пространство итераций которого У2. Пусть оператор, содержащий вхождение и, находится раньше по тексту программы, чем оператор, содержащий вхождение V. Обозначим через Р(1) вектор, координатами которого являются индексы вхождения и, через Q(J) - вектор индексов вхождения V.

Рассмотрим задачу построения решетчатого графа [1, с. 364; 3], описывающего потоковую зависимость вхождения V от и. Зафиксируем входную вершину I е У2. Чтобы из вершины I е У выходила дуга в вершину I е У2, необходимо выполнение условий:

Знак «<<» обозначает «лексикографически меньше либо равно».

Система (1) при условиях (2), (3) может не иметь единственное решение. На множестве всевозможных решений I из (1-3) нужно найти то решение I0, которое является лексикографически максимальным (lex. max). Оно

I0 = lex.max I (4)

является единственным.

Задача (1)-(4) - целочисленная, так как целочисленными являются векторы I и J. Решение I0 = I0(J) задачи (1)-(4) зависит от вектора счетчиков циклов J.

Для того чтобы решить указанную задачу, сначала нужно свести условия (1-3) к совокупности систем линейных неравенств. Условия P(I) = = Q(J) и I е У, J е V2 сводятся к системе линейных неравенств, как обыч-

2. Построение решетчатого графа в ОРС

P(I) = Q(J);

I е V1, J е V2; I << J.

(1) (2) (3)

но в линейном программировании. Рассмотрим подробно, как сводится к совокупности систем линейных неравенств условие I << I.

Пусть два указанных вхождения и и V имеют d общих циклов. Системы неравенств, к которым сводится условие I << I, называются альтернативными многогранниками [1, с. 365]. Первая из этих систем имеет вид ¡к = Jk, k = 1, 2, ... d и рассматривается только в случае, если оператор, содержащий вхождение и, находится раньше по тексту программы, чем оператор, содержащий вхождение V. Все остальные альтернативные многогранники рассматриваются во всех случаях. Второй многогранник имеет вид I = Jl; ¡2 = J2; ... Ь < Jd - 1.

В каждом следующем многограннике количество равенств уменьшается на единицу, неравенство всегда одно. Последний многогранник будет иметь вид ¡1 < J! - 1.

Занумеруем все альтернативные многогранники. Пусть количество равенств в системе, описывающей некоторый альтернативный многогранник, равно т. Тогда его номер положим равным т + 1. Заметим, что номера альтернативных многогранников изменяются от 1 до d + 1. По построению любая точка I любого альтернативного многогранника удовлетворяет условию I << I. Лексикографически ближе к I будет та точка, которая находится в альтернативном многограннике с большим номером [1, с. 366].

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

Задача (1)-(4) решается следующим образом. Рассмотрим циклический процесс по к. Если оператор, содержащий вхождение и, находится раньше по тексту программы, чем оператор, содержащий вхождение V, то к изменяется от d + 1 до 1, иначе к изменяется от d до 1. На каждой итерации этого процесса выполняются нижеследующие действия:

1. Система (1) и условия (2) сводятся к системе линейных неравенств, к которой дописывается набор линейных неравенств, определяющих альтернативный многогранник с номером к. В полученной системе есть набор неизвестных - компоненты вектора I и набор параметров - компоненты вектора I.

2. Далее во множестве решений указанной системы находится лексикографический максимум относительно неизвестных с помощью параметризованных двойственного симплекс метода [2, 3, 8] и метода отсечений Гомори [8]. Эти методы позволяют находить функции, точно описывающие дуги решетчатых графов во всем классе линейных программ.

3. Если лексикографический максимум найден, то выписываются функции, определяющие дуги решетчатого графа, и области их определения. Вычтем из множества У2 объединение областей определения только что построенных функций. Если полученное множество У2 пусто, то алгоритм заканчивается. Иначе уменьшить к на единицу и перейти на п. 1.

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

3. Определение РагБо цикла

На основании критерия, предложенного в [1, с. 374], можно сформулировать следующее

Определение. Пусть рассматриваемый цикл находится на глубине вложенности к в некотором гнезде циклов. Пусть решетчатый граф О описывает зависимость между двумя вхождениями, которые находятся в теле данного цикла. Данный цикл будем называть циклом РагБо по графу О, если в графе О не существует вершин I = (¡ь ¡2, ..., ¡п1) и J = J2, ..., Jn2), для которых одновременно выполняются условия:

1. ¡/ = Ji, для всех /е [1, к - 1];

2. ¡к < Jk;

3. решетчатый граф О содержит дугу, идущую из вершины I в вершину

I.

Пример 3. Рассмотрим фрагмент программы примера 1. В нем имеется только одна потоковая зависимость - вхождения V от и. Пусть О - решетчатый граф, ее описывающий. Внешний цикл не является циклом РаЮо по графу О, так как в решетчатом графе О существует дуга из вершины (1, 2) в вершину (2, 1), причем для первых координат этих вершин выполняется: 1 < 2. Внутренний цикл имеет тип РаЮо по графу О, так как решетчатый граф О не содержит дуг из вершины I = (¡1, ¡2) в вершину I = (/ь J2), для координат которых выполняются условия: ¡1 = J! и

¡2 < J2.

Конец примера 3.

Определение. Цикл, который является циклом РаЮо по объединению решетчатых графов, описывающих все потоковые, анти- и выходные зависимости в его теле, будем называть РагБо циклом.

Как указано в [1, с. 375], итерации РаЮо цикла можно выполнять в любом порядке. Если РаЮо цикл является еще и РаЮо циклом по решетчатому графу, описывающему все входные зависимости в его теле, то в таком цикле любые операции из разных итераций цикла всегда используют разные переменные (ячейки памяти). Поэтому такие циклы эффективно реализуются на многопроцессорных системах с распределенной памятью, так как нет необходимости пересылать данные между процессорами во время вычислений [1, с. 375].

Пример 4. И снова вернемся к фрагменту программы 1. Внутренний цикл рассматриваемого гнезда имеет тип РаЮо одновременно по потоковой, выходной, входной и антизависимости. Следовательно, итерации это-

го цикла можно выполнять в любом порядке (в том числе и одновременно). Внешний цикл не имеет тип РагБо по потоковой зависимости, следовательно, его итерации не могут быть выполнены одновременно.

Конец примера 4.

4. Распознавание РагБо циклов в программе

Утверждение 1. Пусть решетчатый граф О описывает зависимость между некоторой парой вхождений, которые находятся в гнезде циклов и имеют ё общих циклов. Тогда для решетчатого графа О и целого числа 5 (1 < 5 < (ё + 1)) следующие условия эквивалентны:

А. Существует функция, описывающая дуги графа О, при построении которой использовался альтернативный многогранник с номером 5.

Б. В решетчатом графе О существуют вершины I = (1Ь 12, ..., 1п1) и

1 = (Зъ 32, • •, 3п2), для которых выполняются условия:

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

1. I = для всех /е[1, 5 - 1]; (5)

2. 15< 35, при 5 < ё;

3. Решетчатый граф О содержит дугу, идущую из вершины I в I.

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

способа нумерации альтернативных многогранников.

Утверждение 2. Пусть рассматриваемый цикл находится на глубине вложенности к в некотором гнезде циклов. Пусть решетчатый граф О описывает зависимость между парой вхождений, которые находятся в теле данного цикла. Последний является циклом РагБо по графу О, тогда и только тогда, когда не существует функции, описывающей дуги графа О, при построении которой использовался альтернативный многогранник с номером к.

Доказательство следует из утверждения 1 и определения цикла РагБо.

Пример 5. Рассмотрим фрагмент программы примера 1. Пусть О -решетчатый граф, описывающий единственную потоковую зависимость вхождения V от и. Как показано в примере 2, все дуги решетчатого графа О описываются только одной функцией, ей соответствует номер 1 альтернативного многогранника. Не существует функций, описывающих дуги графа О, которым соответствуют номера 2 и 3 альтернативных многогранников. Следовательно, по утверждению 2, цикл, находящийся на глубине вложенности к=1, не является циклом РагБо по графу О, так как существует функция, описывающая дуги графа в, которой соответствует номер 1 альтернативного многогранника. Цикл, находящийся на глубине вложенности к=2, является циклом РагБо по графу О, так как не существует функции, описывающей дуги графа О, которой соответствует номер

2 альтернативного многогранника.

Конец примера 5.

Резюмируя все вышесказанное, можно предложить следующий алгоритм определения РагБо циклов, основанный на аппарате решетчатых графов.

Пусть анализируемый цикл находится на глубине вложенности к в некотором гнезде циклов.

1. Для каждой зависимости вхождения V от и такой, что и и V лежат в теле рассматриваемого цикла и хотя бы одно из них является генератором, требуется:

а) построить решетчатый граф, описывающий зависимость V от и. Для построения графа использовать описанный в п. 2 алгоритм. Во время построения графа помечать получаемые функции номерами тех альтернативных многогранников, которые использовались при их построении;

б) если существует функция, описывающая дуги построенного графа и помеченная номером к, то данный цикл не обладает свойством РагБо. Переход на пункт 3.

2. Анализируемый цикл является циклом РагБо.

3. Конец алгоритма.

Приведенный алгоритм можно совместить с другими алгоритмами анализа информационных зависимостей в программе, использующими решетчатые графы. Кроме этого выгоднее проверять сразу несколько циклов на наличие свойства РагБо, так как построив решетчатый граф для одной пары вхождений, можно сразу установить циклы, которые данная зависимость лишает свойства РагБо.

5. Циклы РагБо и внешние переменные

Пусть рассматриваемое гнездо циклов содержит внешние переменные. Тогда решетчатый граф О имеет параметрическое описание: его вершины и дуги зависят от вектора всех внешних переменных N. Поэтому существование множества дуг графа О, вследствие которого цикл не обладает свойством РагБо по графу О, зависит от вектора внешних переменных N. Если вершины и дуги решетчатого графа О зависят от вектора внешних переменных N то область определения каждой функции, описывающей его дуги, зависит от N [2, 3].

Утверждение 3. Пусть рассматриваемый цикл находится на глубине вложенности к в некотором гнезде циклов, решетчатый граф О описывает зависимость между парой вхождений, которые находятся в теле данного цикла. Данный цикл является циклом РагБо по графу О для значения вектора внешних переменных N тогда и только тогда, когда не существует функции, описывающей дуги графа О, при построении которой использовался альтернативный многогранник с номером к, и область определения которой не пуста при значении вектора внешних переменных N.

Доказательство следует из утверждения 2 и определения цикла РагБо по графу О.

Условия для значений вектора N при которых область определения функции, описывающей дуги графа О, не пуста, можно получить, например, исключив из описания этой области переменные-счетчики циклов с помощью метода [9].

6. Сравнение с другими методами распознавания РагБо циклов

Распознавать РагБо циклы можно с помощью векторов направления зависимости [5] или, что эквивалентно, с помощью носителей зависимости [4]. Однако подобные способы имеют ряд недостатков.

Один вектор направления зависимости [5] может описывать не одну зависимость [10]. Например, один вектор направления может описывать потоковую зависимость использования V от генератора и и одновременно описывать самозависимость генератора и. Поэтому при использовании указанных абстракций невозможно точно распознать тип зависимости, по которому цикл обладает или не обладает свойством РагБо.

Вектор направления зависимости никак не учитывает ложные зависимости [10].

Эффективные методы построения векторов направления зависимости основаны на неравенствах Банержи [4, 5], которые дают достаточные условия даже в случае отсутствия внешних переменных. Поэтому с помощью этих методов не всегда можно распознать РагБо цикл. Например, не удастся обнаружить свойство РагБо у внутреннего цикла гнезда из программы примера 1.

Метод распознавания РагБо циклов, предложенный в данной работе, лишен перечисленных недостатков.

Другой известный метод распознавания РагБо циклов, основанный на теории решетчатых графов, описан в [1]. На основе утверждения [1, с. 375] производится анализ описаний функций, определяющих дуги решетчатого графа. Однако для покрывающих функций, которые точно описывают дуги решетчатого графа, удовлетворяют условиям (*), и на которые не накладываются дополнительные условия, утверждение [1, с. 375] предоставляет только достаточные условия.

Пример 6. (Показывает, что условия [1, с. 375] не являются необходимыми в случае, когда покрывающие функции точно описывают дуги решетчатого графа, удовлетворяют условиям (*), а внешние переменные отсутствуют)

Рассмотрим гнездо циклов:

Вэг(1 = 1; 1 < 100; 1++)

= 1; } < 100; ]++)

&г(к = 1; к < 100; к++) == ])

Х(1, 1, к) = Х(1, к - 1)

Потоковая зависимость Х(/,у, к-1) от Х(/, /, к) описывается решетчатым графом О, часть которого изображена на рис. 2.

Дуги решетчатого графа О могут быть точно описаны функцией Г(/,у, к) = (у,у, к-1) с областью определения 1 < / < 100, 1 <у < 100, 2 < к < < 100, / = у, удовлетворяющей условиям (*).

Очевидно, что самый внешний цикл (по /) является циклом РагБо по графу О. Если применить утверждение [1, с. 375] к функции Г, то полу-

чим, что самый внешний цикл (по /) не является циклом РагБо по решетчатому графу О, что неверно.

Предложенный в данной работе метод успешно справляется с этой проблемой. При построении единственной функции, описывающей дуги решетчатого графа зависимости X(i, j, к - 1) от X(i, i, к), использовался альтернативный многогранник с номером 3 (для всех вершин, соединенных дугами графа, выполняются условия (5) с s = 3). Следовательно, данная зависимость лишает свойства ParDo только цикл с номером 3 (т.е. цикл по к). Конец примера 6.

Построив один решетчатый граф, можно протестировать сразу несколько циклов на обладание свойством ParDo в отличие от метода [1], в котором с помощью одного решетчатого графа можно протестировать только один цикл.

Литература

1. Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. СПб., 2002.

2. FeautrierP. // Opérationnelle. Operations Research. 1988. Vol. 22. № 3. Р. 243-268.

3. Feautrier P. // International Journal of Parallel Programming. 1991. Vol. 20. № 1. Р. 23-52.

4. Аллен Р., Кеннеди К. // Векторизация программ: теория, методы, реализация. Сб. статей. М., 1991. С. 77-140.

5. Wolf M., Banerjee U. // International Journal of Parallel Processing. 1987. Vol. 16. Р. 137-178.

6. Штейнберг Б. Я. // РАСО'. 2001. Тр. междунар. конф.: «Параллельные вычисления и задачи управления». М., 2001. С. 214-220.

7. www.ops.rsu.ru

8. СхрейверА. Теория линейного и целочисленного программирования. М., 1991. Т. 1, 2.

9. Pugh W. // Communications of the ACM. 1992. Vol. 35. № 8. P. 102-114.

10. Pugh W., Wonnacott D. // Proceedings of the ACM SIGPLAN'92 Conference on Programming Language Design and Implementation. P. 140-151.

Ростовский государственный университет 11 октября 2005 г.

i Надоели баннеры? Вы всегда можете отключить рекламу.