normDDr (1158429), страница 13

Файл №1158429 normDDr (Раздаточные материалы) 13 страницаnormDDr (1158429) страница 132019-09-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 13)

error code 450 'in lines '<error context>'and in lines'<error context>' reassignment for variable'<error context>

Функция strdep строит на основании Таблицы функциональных зависимостей (Table of functional dependencies) Граф информационных зависимостей (Data dependencies graph (DDG)), в котором в качестве вершин присутствуют только простые вершины (simple-nodes) и пока отсутствуют iteration-nodes и ordered-groups-nodes. Каждой строке Таблицы функциональных зависимостей (Table of functional dependencies) вида

left-hand-side-variable

dependencies

ref-on-body

соответствует строка зависимостей DDG вида

graph-node

dependency-node

dependency-node

Для каждой переменной var, указанной в поле <dependency>, выбирается соответствующая строка Таблицы Где-вычисляется’ (Where-compute table

Если эта строка соответствует переменной скалярного типа, то из строки выбирается <statement number>,который и является значением поля <dependency-node>.

Если строка соответствует переменной, определенной на области, то осуществляется проверка пустоты попарного пересечения всех <name-domains>, указанных в этой строке, и <need-domain>. Значениями полей <dependency-node> являются значения <statement number>, соответствующие непустому пересечению.

Функция pre модифицирует Таблицу функциональных зависимостей (Table of functional dependencies) и приводит ее к виду

left-hand-side-variable

<name-var><new-ind-expr><need-domain>

ref-on-body

исключая все зависимости другого вида. Модифицированная Таблица функциональных зависимостей (Table of functional dependencies) будет использоваться при обработке maximum strongly connected subgraphs (MSCS).

Функция posl осуществляет редукцию DDG, связанную с заменой всех вершин DDG, входящих в ordered groups, на <ordered groups number>, и соответствующей корректировкой зависимостей. Для этой цели используется Таблица последовательных групп (Table of ordered groups). Кроме этого, функция проверяет непротиворечивость порядка вычислений, заданного для ordered groups, и информационных зависимостей для переменных из ordered groups, определенных в DDG и копирует DDG во временный граф zav.

Функция test осуществляет редукцию DDG, связанную с заменой всех вершин DDG, входящих в iteration, на <iteration number>, и соответствующей корректировкой зависимостей.

Алгоритм редукции состоит из трех этапов и использует DDG и Таблицу структуры итераций (Table of iterations structure).

На первом этапе обрабатываются только операторы, входящие в итерации, а вложенные итерации, если они есть, не рассматриваются. Для каждой итерации из Таблицы структуры итераций (Table of iterations structure) выбираются <statement numbers> операторов, входящих в <list of boundary operators>, <list of initial operators>, <body-of-iteration>,<exit-condition>. Во временный граф zavit включаются строки зависимостей из DDG

graph-node

dependency-node

dependency-node

для которых <graph-node>=<statement numbers>. При этом из списка зависимостей удаляются вершины, для которых <dependency-node>=<statement number>. Таким образом, в строках зависимостей графа zavit остаются только зависимости от операторов, не входящих в итерацию.

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

На третьем этапе, используя временный граф zavit и DDG, строится редуцированный DDG, который получается исключением всех строк зависимостей, соответствующих операторам из итераций и включением новых строк зависимостей вида

iteration-number

dependency-node

dependency-node

Кроме этого, во всех зависимостях <statement numbers> операторов, входящих в итерацию, заменяется на <iteration number> итерации, в которую эти операторы входят.

Таким образом, в результате работы функции test, построен граф DDG, временный граф zavit и временный граф zav. Две последние структуры будут использоваться при определении порядка выполнения операторов внутри итерации в процессе построения parallel layer scheme.

5.4.2Построение RDDG

Осуществляется поиск максимальных сильно связных подграфов (MSCS). MSCS - сильно связный подграф графа DDG, который не содержится ни в одном другом сильно связном подграфе графа DDG. Далее проводится редукция графа DDG: все MSCS заменяются вершинами специального типа.

Исходной информацией для поиска MSCS служит временный граф zav, вершины которого обозначим через vV, а дуги, выходящие из вершины v - через Adj(v). Алгоритм поиска MSCS (Reingold E.W, Nievergelt J., Deo N. Combinatorial algoruthms. Prentice-Hall, Englewood Cliffs, New Jersey, 1997):

for vV do num(x)=0

i=j=k=0

for vV do if num(x)=0 then FNDCYC(x,0)

procedure FNDCYC(v,u)

i=i+1

num(v)=i

for wAdj(v) do

if num(x)=0

then k=k+1; stack k  w; FNDCYC(w,v); k=k-1

else

if num(w)<num(v) AND wu

then j=j+1; MSCSj  (w, stack k , stack k-1 ,,stack t )

/*comment stack k = w, stack t = v endcomment */

endif

endif

Входная точка блока RDDG constructor - функция mssg.

Общая структура управления функции mssg приведена на следующей схеме.


m ssg angr angr1 sumzav sumzv1 angr2

perud1

Функция mssg реализует алгоритм, приведенный выше и строит Список максимальных сильно связных подграфов (List of MSCS).

Дальнейшая обработка связана с редукцией DDG и построением RDDG. Все вершины графа DDG, входящие в некоторый MSCS, заменяются на MSCS-number и, с учетом этой замены, корректируются зависимости.

Для этого рассматриваются все строки зависимостей DDG вида

graph-node

dependency-node

dependency-node

для которых <graph node>=<statement number>, <statement number>MSCS. Из этих строк формируется одна строка, которая и получает номер MSCS-number. Значения <dependency nodes> для этой строки получаются в результате объединения всех <statement numbers> операторов, от которых зависят операторы, входящие в рассматриваемый MSCS. При этом удаляются повторные вхождения <statement numbers> и номера операторов, входящие в рассматриваемый MSCS.

После того, как все MSCS просмотрены, в графе DDG зависимости от номеров операторов, входящих в некоторый MSCS, заменяются на MSCS-number этого MSCS.

Функция angr выбирает очередной MSCS из Списка максимальных сильно связных подграфов (List of MSCS).

Функция angr1 исключает из обработки MSCS, состоящий из единственного <statement number> (петля в графе DDG).

Функция sumzav объединяет все зависимости операторов, входящих в состав выбранного MSCS. Результат: <statement numders> оператров, от которых зависят операторы из MSCS. Повторные зависимости удалены.

Функция sumzv1 удаляет из полученных предыдущей функцией зависимостей <statement numbers> операторов, входящих в рассматриваемый MSCS.

Функция angr2 дополняет граф DDG новой строкой зависимостей, соответствующей MSCS (у этой строки <graph-node>=<MSCS-number>).

Функция perud заменяет зависимости от номеров операторов, входящих в некоторый MSCS, на MSCS-number этого MSCS.

5.5Анализ графа информационных зависимостей (Data dependencies graph analyser).

Функции блока Анализ графа информационных зависимостей:

  1. Частичное упорядочивание редуцированного графа информационных зависимостей (RDDG). Если существует дуга из P в Q (P,Q принадлежат V), то есть Q используеься для вычисления P, то P>Q (Q должна быть вычислена раньше P).

  2. Выявление естественного параллелизма. Строится параллельная ярусная схема Parallel layer scheme: вычисления, соответствующие вершинам RDDG и принадлежащие одному и тому же ярусу, могут выполняться параллельно и независимо. Переход от текущего яруса схемы к следующему осуществляется после того, как все вычисления на текущем ярусе закончены.

Структура элемента <layer>:

layer-number

node

node

<layer-number>::=<integer>

<node>::=<statement number> OR <iteration number><Parallel layer scheme> OR

<ordered group number> OR <MSCS number>

Алгоритм упорядочивания RDDG .

В начальный момент на первый ярус Parallel layer scheme помещается RDDG, состоящий из зависимостей вида

graph-node

dependency-node

dependency-node

Далее на второй ярус переносятся все зависимости, у которых для <graph node> выполняется условие <graph node>=<dependency node> хотя бы для одной <dependency node> хотя бы одной зависимости (другими словами, зависимости для всех операторов, от которых зависят операторы первого яруса). После этого проводится корректировка этих двух ярусов: если зависимость для оператора присутствует на втором ярусе, то она удаляется с первого яруса. Кроме этого, если на первом ярусе оказывается вершина типа <iteration number>, то для нее, используя Таблицу структуры итераций (Table of iterations structure) и временный граф zavit, рекурсивно строится параллельная ярусная подсхема (parallel layer subscheme).

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

Входная точка блока Data dependencies graph analyser - функция pord, которая и реализует данный алгоритм.

Характеристики

Список файлов учебной работы

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7029
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее