Научная статья на тему 'О реализации алгоритма Форда-Фалкерсона в вычислительной системе с многими потоками команд и одним потоком данных'

О реализации алгоритма Форда-Фалкерсона в вычислительной системе с многими потоками команд и одним потоком данных Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
947
68
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
МАКСИМАЛЬНЫЙ ПОТОК / АЛГОРИТМ ФОРДА-ФАЛКЕРСОНА / МНОГО ПОТОКОВ КОМАНД И ОДИН ПОТОК ДАННЫХ / ПРОЦЕССОР ОБРАБОТКИ СТРУКТУР

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Попов А. Ю.

Алгоритмы оптимизации на сетях и графах находят широкое применение при решении практических задач. Однако, вместе с масштабным внедрением информационных технологий в человеческую деятельность усугубляются требования к объёмам входных данных и скорости поиска решения. Несмотря на то, что к настоящему времени исследованы и реализованы большое количество алгоритмов для различных моделей ЭВМ и вычислительных систем, решение ключевых задач оптимизации для реальных размерностей задач остаётся затруднительным. В связи с этим поиск новых и более эффективных вычислительных структур, а также модификация известных алгоритмов являются актуальными.

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

Текст научной работы на тему «О реализации алгоритма Форда-Фалкерсона в вычислительной системе с многими потоками команд и одним потоком данных»

Наука и Образование. МГТУ им. Н.Э. Баумана. Электрон. журн. 2014. №9. С. 162-180.

Б01: 10.7463/0914.0726416

Представлена в редакцию: 19.05.2014 © МГТУ им. Н.Э. Баумана

ХДК 004.2; 004.31

О реализации алгоритма Форда — Фалкерсона в вычислительной системе с многими потоками команд и одним потоком данных

Попов А. Ю.1*

В работе рассматривается реализация алгоритма поиска максимального потока на графе для разработанной в МГТУ им. Н.Э. Баумана вычислительной системы с многими потоками команд и одним потоком данных (МКОД). Ключевой особенностью данной архитектуры является глубокая аппаратная поддержка операций над множествами и структурами данных. Функции хранения и доступа к ним реализованы на специализированном процессоре обработки структур (СП). Преимуществом такой системы является возможность параллельного исполнения частей вычислительных задач, связанных с доступом к множествам структурам данных одновременно с арифметически-логической обработкой информации. Приведены форматы команд процессора обработки структур, предложена методика модификации алгоритмов при реализации в МКОД-системе, предложены варианты модификации архитектуры МКОД-системы, ведущие к повышению ее производительности.

Ключевые слова: максимальный поток; алгоритм Форда — Фалкерсона; много потоков команд и один поток данных; процессор обработки структур

Введение

Алгоритмы оптимизации на сетях и графах находят широкое применение при решении практических задач. Однако, вместе с масштабным внедрением информационных технологий в человеческую деятельность усугубляются требования к объемам входных данных и скорости поиска решения. Несмотря на то, что к настоящему времени исследованы и реализованы большое количество алгоритмов для различных моделей ЭВМ и вычислительных систем, решение ключевых задач оптимизации для реальных размерностей задач остается затруднительным. В связи с этим поиск новых и более эффективных вычислительных структур, а также модификация известных алгоритмов являются актуальными.

В работе рассматривается реализация алгоритма поиска максимального потока на графе для разработанной в МГТУ им. Н.Э.Баумана вычислительной системы с многими потоками команд и одним потоком данных (МКОД). Ключевой особенностью данной архитектуры

Наука и Образование

МГТУ им. Н.Э. Баумана

Сетевое научное издание

ISSN 1994-0448

* alexpopovfilbmstu.ra 1МГТУ им. Н.Э. Баумана, Москва, Россия

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

В предыдущих работах представлены общие принципы организации вычислительного процесса и особенности выполнения программ в МКОД системе, представлена структура и принципы функционирования процессора обработки структур, показаны общие принципы решения графовых задач в такой системе и проведены экспериментальные исследования эффективности полученных алгоритмов.

В данной работе приведены форматы команд процессора обработки структур, предложена методика модификации алгоритмов при реализации в МКОД системе, предложен вариант алгоритма Форда — Фалкерсона поиска максимального потока на графе для МКОД модели вычислительной системы, предложены варианты модификации архитектуры МКОД системы, ведущие к повышению ее производительности.

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

В ходе проекта, проводимого в МГТУ им. Н.Э.Баумана были разработаны новые принципы построения вычислительных систем, которые позволяют увеличить количество совмещаемых операций при обработке множеств и структур данных. Для этого в архитектуру вычислительной системы были внесены существенные изменения, был разработан специализированный блок обработки множеств и структур данных: процессор обработки структур (рис. 1). Этот устройство обрабатывает лишь ту часть информации, которая определяет взаимные отношения хранимых данных, т.е. структурную часть структур данных. Предпо-

Рис. 1. Проект по созданию универсальной вычислительной системы с аппаратной поддержкой обработки множеств и структур данных

ложим, к примеру, что в алгоритме необходимо хранить множество ключей и соответствующих им значений. Тогда, если нужно выбрать элемент с ключом к, процессор обработки структур (СП) выполняет поиск и выборку элемента по структурной составляющей, после чего передает информационную составляющую (сами данные, ассоциированные с ключом к) центральному процессору. Таким образом, действия, исполняемые двумя процессорами, могут выполняться параллельно и независимо, а общий поток команд обработки данных для такой вычислительной системы разделяется на два потока команд: обработки информационной составляющей и обработки структурной составляющей структуры данных. Указанная вычислительная система, как показано в [1, 2, 3], относится к классу «много потоков команд и один поток данных». Примеров разработки и широкого применения ВС данного класса нет, так как до данного проекта не были определены архитектурные принципы, позволяющие применять такую систему для решения широкого круга задач. Применение же структур данных достаточно широко и универсально. Однако, реализация новых архитектурных принципов выявила несовместимость подходов к разработке алгоритмов на сетях и графах, принятых для общеизвестных вычислительных систем (например, систем с многими потоками команд и многими потоками данных), что привело к необходимости создания методики разработки или модификации алгоритмов других моделей вычислительный систем для модели МКОД.

При этом следует учитывать, что в МКОД системе предусмотрены два режима работы процессора обработки структур:

• режим сопроцессора — управляющие команды для обработки множеств и структур данных формируются в центральном процессоре системы и поступают через очередь управляющих команд (рис. 2);

Рис. 2. Архитектура вычислительной системы с многими потоками команд

и одним потоком данных

• режим МКОД — команды выбираются процессором обработки структур из локального ОЗУ команд. СП также имеет независимую память для хранения структур, что обеспечивает параллельность и независимость арифметически-логической обработки ЦП и обработки множеств и структур данных в СП.

Анализ способов повышения производительности для МКОД систем показывает, что как при доминирующей арифметической обработке, так и при доминирующей обработке структур данных, для увеличения производительности необходимо:

• сокращение времени обработки структур данных при аппаратной реализации в СП;

• сокращение временных затрат на приём и передачу данных;

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

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

2. Подходы к созданию методики модификации алгоритмов

Основным отличием между версиями алгоритмов, представленных в обобщенном виде (например, в псевдокоде), и для МКОД системы, является необходимость в последней представлять информацию в виде структур данных, а действия алгоритма в виде операций над этими структурами. При традиционном подходе применение структур данных оговаривается в ходе дополнительных исследований, хотя и имеет существенное влияние на вычислительную сложность алгоритмов. Так, например, в [6, 7] целесообразность выбора тех или иных структур данных приводит к возникновению новых модифицированных версий алгоритмов, позволяет снизить оценку вычислительной сложности. Исследование операций над структурами данных и их выбор для конкретных алгоритмов, проведенный в [8], показали, что подходы к применению структур данных опираются на небольшой набор команд, таких как: добавление, удаление, поиск, пересечение и т. д.. Именно эти команды и легли в основу набора машинных инструкций процессора обработки структур в МКОД системе. Таким образом, в МКОД системе нет необходимости производить выбор конкретных структур данных, так как их хранение и обработка уже реализована аппаратно. Ниже представлены основные этапы методики.

Этап 1. Представление информационных моделей алгоритма в виде структур данных. Как известно, структуры данных представляют собой абстрактное представление об отображении в оперативную память двух множеств: ключей и ассоциированных с ними данных. В некоторых случаях наличие ключей в структуре уже приобретает информативный характер и используется в алгоритмах. Представление алгоритма в виде операций над структурами данных требует принятия решений о количестве применяемых структур, а также о соответствии информации, используемой в алгоритме, ключам и данным структур. Указанный переход представляет процесс, аналогичный подготовке информации к хранению в реляционной базе данных. В частности, определяются составные ключевые поля, собранные в виде конкатенации данных.

Пример 1 (представление графа G(V, E)). Пусть в алгоритме требуется вести обход графа, например, методом поиска в глубину. Тогда основной операцией будет поиск вершин v £ Adj [u], инцидентных указанной, и последующий переход к обработке всех связанным вершин. Но, поскольку степень вершин различна, требуется также хранить количество исходящих ребер count. Поле G.KEY хранит номера вершин u и порядковый номер ребра. Поле данных G.DATA хранит номер инцидентной вершины v и вес ребра с, как показано в табл. 1.

Таблица 1

Пример представления графа G(V, E) (G.KEY[u,i], G.DATA[v,c])

G.KEY G.DATA

u, 0 count

u, 1 Vi,c

u,count vcount,c

Если в алгоритме требуется поиск ребер, соединяющих вершины (u,v), граф может быть представлен другим образом. Поле G.KEY в этом случае составляется из номера вершины u и v, а поле данных G.DATA хранит вес ребра с (табл. 2). Чтобы упростить обход всех ребер, инцидентных вершине, в структуру могут быть добавлены специальные маркеры с нулевым индексом вершины v. Это позволит найти стартовую позицию в структуре данных по записи G.KEY[u,0], за которой будут располагаться остальные записи, получить которые можно простым обходом соседних вершин по команде NEXT.

Т аб л иц а 2

Пример представления графа G(V, E) (G.KEY[u,v], G.DATA[c])

G.KEY G.DATA

u,0 0

u,v c

Этап 2. Представление алгоритма в базисе операций над структурами данных.

На данном этапе все действия алгоритма должны быть представлены в виде действий над выбранными ранее структурами. В настоящий момент в МКОД системе реализовано 15 команд обработки множеств и структур данных (табл. 3).

Таблица 3

Базовые операции над структурами данных

Команда MHCMOKO^ Операнды* Результаты*

Поиск SEARCH R К - С К 3

Добавление INSERT R К 3 С К 3

Удаление DELETE R К - С К 3

Удаление структуры DELSTR R - - С - -

Максимум MAX R - - С К 3

Минимум MIN R - - С К 3

Мощность POWER R - - С К 3

И AND R A B С - -

ИЛИ OR R A B С - -

НЕ NOT R A B С - -

Срез ЬБ LS R A К С - -

Срез ЬБЕО LSEQ R A К С - -

Срез ОЯ GR R A К С - -

Срез ОЯЕО GREQ R A К С - -

Следующий NEXT R К - С К 3

Переход по тегу JT Тег Адрес - - - -

* Я — номер структуры результата; А, В — номера исходных структур; К — ключ; 3 — значение; С — статус.

Все указанные команды изменяют регистр статуса, по которому можно определить, было ли выполнение команды успешным. В результате команд SEARCH, DELETE, MAX, MIN, NEXT в очередь данных попадают ключ и значение найденных записей (KEY, DATA), которые могут быть использованы ЦП в алгоритме. Операнды R, A и B являются номерами структур, над которыми выполняются команды: операнд R указывает на номер структуры, в которой будет сохранен результат; структуры A и B используются в И-ИЛИ-НЕ операциях и срезах в качестве исходных.

Результатом выполнения второго этапа методики является алгоритм, который может быть реализован в МКОД системе в режиме сопроцессора. В этом случае центральный процессор исполняет команды арифметически-логической обработки и передает команды обработки структур в очередь управляющих команд (см. рис. 2). Результаты исполнения команд извлекаются из «очереди данных на чтение».

Пример 2 (Выполнение базовых операций над структурами данных).

Поиск по ключу: Data ^ SEARCH(G, Key);

Добавление: INSERT(G, Key, Data);

Объединение структур: OR(Result, Source_A, Source_B).

Этап 3. Выделение в алгоритме потоков арифметико-логической обработки и обработки структур. На данном этапе общий алгоритм разделяется на два взаимосвязанных потока операций, выполняемых на центральном процессоре и процессоре обработки структур. Для обеспечения эквивалентности результатов с последовательным вариантом необходимо включить в состав потока ЦП элементы синхронизации: команды обработки очередей PUT и GET. Приведем краткое описание процесса выполнения команд в режиме МКОД. Обработка команд начинается со стадии загрузки из локального ОЗУ процессора обработки структур кодов операций, операндов и тегов (тег — это бит достоверности, указывающий на готовность операнда к исполнению). Команды СП содержат различное количество операндов и, соответственно, тегов (см. табл. 3). В последней версии МКОД реализовано 6 форматов команд, содержащих от 1 до 3 операндов. Команда СП может быть выполнена когда все необходимые операнды валидны, т.е. их теги установлены. Если какой-либо операнд не является валидным, СП ожидает его поступления из ЦП. Последовательность передаваемых тегов для СП не имеет значение, так как вместе со значением тега передается его порядковый номер. Однако, для упрощения псевдокода алгоритма примем порядок передачи тегов «слева-направо», а номера тегов указывать не будем. Наиболее сложными в аппаратной реализации и временной сложности являются И-ИЛИ-НЕ команды и команды среза. Время выполнения таких команд может существенно отличаться в зависимости от заполнения памяти структур СП и линейно зависит от размерности задачи (O(n)). Остальные команды выполняются за время 0(1).

Пример 3 (разделение алгоритма на потоки ЦП и СП: команда поиска). Пусть необходимо выполнить поиск в структуре G по ключу, значение которого заранее для СП неизвестно. Данную ситуацию будем отображать знаком «?», что означает, что тег операнда не валиден, в результате чего для выполнения команды требуется получить его по шине данных из ЦП. Результат выполнения команды SEARCH отправляется в очередь данных в ЦП:

Data ^ SEARCH(G, Key)

Поток ЦП Поток СП

PUT(Key) = ^ SEARCH(G,?)

Data ^ GET ^

Далее рассмотрим применение данной методики на примере алгоритмов нахождения максимального потока в транспортной сети.

3. Задача нахождения максимального потока в транспортной сети

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

Задача формулируется следующим образом. Дан граф G(V, E) (рис. 3), в котором вес ребер интерпретируется как пропускная способность c(u, v). Задача состоит в поиске максимального потока из вершины - источника s в сток t. На графе определены потоки f (u, v) для ребер из u в v, для который соблюдаются следующие правила:

• поток из u в v не превосходит пропускной способности. f (u, v) ^ c(u, v);

• отрицательный поток эквивалентен аналогичному потоку в обратном направлении: f (u,v) = -f (v,u);

• поток не изменяется при прохождении через узел: J2v f (u,v) = 0 ^^ fin(u) = fout(u) для всех узлов u (за исключением вершин s и t).

Рис. 3. Архитектура вычислительной системы с многими потоками команд и одним потоком данных

Рассматриваемый в данном исследовании алгоритм основан на итерационном поиске некоторого потока на остаточной сети Gf(V,Ef), т.е. сети с пропускной способностью Cf (и, у) = с(и, у) — f (и, у), которая получена из графа G(V, Е) благодаря сокращению пропускной способности ребер, входящих в ранее найденные потоки.

4. Алгоритм Форда — Фалкерсона

Алгоритм Форда — Фалкерсона состоит в поиске на остаточной сети дополняющего потока из 5 в ¿, который увеличивает суммарный найденный поток. После этого остаточная сеть модифицируется и итерация повторяется. Если дополняющий поток найти невозможно, то это означает, что найденный суммарный поток является максимальным. Ниже приведен псевдокод алгоритма, выраженный в общих терминах операций над множествами и графами.

Алгоритм 1. ФОРД-ФАЛКЕРСОН(G(V,E),s,t)

1: flow ^ 0 > Максимальный поток

2: f (u, v) ^ 0 для всех ребер (u, v) £ E > Инициализация потоков

3: Gf ^ G > Остаточная сеть

4: ЦИКЛ ПОКА (path ^ ПОИСК В ШИРИНУ^f ,s,t) = 0) > Дополняющий путь

5: ЦИКЛ (u, v) £ path > Поиск потока для найденного пути path

6: ЕСЛИ cf (path) > c(u, v) ТО

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

7: cf (path) ^ c(u,v)

8: ВСЕ ЕСЛИ

9: ВСЕ ЦИКЛ

10: ЦИКЛ (u, v) £ path > Изменение остаточной сети

11: f (u, v) ^ f (u, v) — cf (path) > Пропускная способность прямого потока

12: f (v, u) ^ f (v, u) + cf (path) > Пропускная способность обратного потока

13: ВСЕ ЦИКЛ

14: flow ^ flow + cf (path)

15: ВСЕ ЦИКЛ ПОКА

16: РЕЗУЛЬТАТ ^ flow

Алгоритм использует метод поиска в ширину для отыскания пути на остаточной сети Gf, который подробно описан в [7]. Пусть граф G(V,E) задан подобно примеру 2, что обеспечивает обход графа операциями ^ЫБХ^структура, ключ). Необходимо на основе G создать структуру остаточной сети, которая будет использоваться для следующих операций:

• поиск всех вершин, инцидентных вершине u;

• определение потока для всех ребер, исходящих из вершины;

• изменение пропускной способности ребер;

• добавление обратных ребер (v,u) к вершине v для найденных потоков и их изменение.

В связи с этим в качестве ключа может быть выбраны индексы вершин u и v G.KEY[u, v],

как это было показано ранее в табл. 2. Поле данных будет состоять из остаточной пропускной способности ребра: G.DATA[c]. Для определения остаточного пути потребуется хранить множество достижимых из s вершин, что целесообразно сделать в отдельной структуре P, которая будет создаваться в ходе поиска пути по методу поиска в ширину, а после очередной операции будет удаляться операцией DELSTR(P). Для метода поиска в ширину характерно раскрашивание вершин в цвета:

• черный цвет означает то, что вершина достигнута при поиске и алгоритм приступил к рассмотрению всех связанных с ней вершин. Кодируем данный цвет числом «0».

• серый цвет вершины означает что данная вершина добавлена в список , но связанные с ней вершины еще не рассмотрены. Кодируем данный цвет числом «1».

• белый цвет означает то, что вершина еще не рассмотрена и путь к ней не определен. Данный тип вершин будет отсутствовать в структуре P, что и будет указывать на это состояние.

Таким образом, алгоритм поиска в ширину будет вести поиск «серых» вершин (значение «1»), добавлять инцидентные с ними вершины в структуру P, менять цвет рассмотренной вершины на «черный» (значение «0»). Поле ключа P.KEY состоит из цвета color и номера вершины v: P.KEY[color, v]. Поле данных P.DATA содержит номер u предыдущей вершины в пути: P.DATA[u]. Таким образом, алгоритм Форда — Фалкерсона представлен ниже.

Алгоритм 2. ФОРД-ФЛЛКЕРСОН (G(V, E), s, t) /псевдокод ЦП в режиме сопроцессора/

1: flow ^ 0 > Максимальный поток

2: P ^ ПОИСК В mHPHHY(G,s,i) 3: ЦИКЛ ПОКА SEARCH(P,[0,t]) = 0

4: v-index ^ t > Вычисление Cf

5: Cf ^ ж

6: ПОВТОРЯТЬ > Вычисление потока из s в t

7: path ^ SEARCH(P,[0,v_index]) > Обход потока

8: u-index ^ path.DATA.u > Предшествующая вершина

9: u ^ SEARCH(G,[u_index,v_index]) > Поиск вершины графа

10: Cf ^ min(u.DATA.c — Cf)

11: v-index ^ u-index

12: ЦИКЛ ПОКА (path = s)

13: v-index ^ t > Изменение остаточной сети

14: ПОВТОРЯТЬ > Вычисление потока из s в t

15: path ^ SEARCH(P,[0,v_index])

16: u-index ^ path.DATA.u

17: u ^ SEARCH(G,[u_index,v_index]) > Поиск вершины u

18: v ^ SEARCH(G,[v_index,u_index]) > Поиск вершины v

19: INSERT(G,[u_index,v_index],[u.DATA.C — Cf ])

20: INSERT(G,[v_index,u_index],[v.DATA.C + Cf ])

21: v-index ^ u-index

22: ЦИКЛ ПОКА (path = s)

23: DELSTR(P)

24: P ^ ПОИСК В ШИРИНУ(^,0 25: ВСЕ ЦИКЛ ПОКА 26: РЕЗУЛЬТАТ ^ flow

Следует заметить, что несмотря на использование псевдокода, он описан в низкоуровневых командах МКОД системы. Это свидетельствует о высокой аппаратной поддержке действий со структурами данных и упрощении программирования сложных структур при использовании данной технологии. Пример заполнения структур и первая итерация алгоритма Форда — Фалкерсона показаны на рис. 4. В начале работы алгоритма в строке 1 устанавливается нулевой максимальный поток. Далее начинается цикл поиска остаточного пути. В строках 2 и 24 используется алгоритм поиска в ширину для нахождения пути из вершину ^ в ¿, результатом которого является структура Р. Если в структуре есть запись о вершине ¿, то путь найден. Далее в строках 3-12 итерационно происходит обход найденного пути и определяется величина потока Cf.

б

Рис. 4. Этапы выполнения алгоритма Форда — Фалкерсона на графе: а — начальное состояние структуры О; б — остаточная сеть и состояние структур О и Р после первого шага алгоритма

а

В цикле в строках 14-22 выполняется модификация остаточной сети G. Путь, как и ранее, обходится в обратной последовательности, от вершины t к вершине s. В строке 15 происходит поиск очередной вершины потока, который используется в строке 16 для определения индекса предшествующей вершины и. Далее происходит поиск в остаточной сети записей о ребре (u, v) и обратном ребре (v, и). Далее выполняется изменение информации об остаточной пропускной способности в этих ребрах в строках 19 и 20. После обработки потока структура P удаляется. Алгоритм поиска в ширину приведен ниже.

Алгоритм 3. ПОИСК В 0HPHHy(GF,s,t) /псевдокод ЦП в режиме сопроцессора/

1: INSERT(P,[1,s],[0]) > Инициализация P, цвет «серый» 2: ПОВТОРЯТЬ

3: path ^ MAX(P)

4: ЕСЛИ path.KEY.color = 1 ТО > Еще есть не пройденные вершины u

5: uJudex ^ path.KEY.v > Индекс вершины v

6: u ^ NEXT(G,[u_mdex,0]) > Вершины u

8

9:

ЦИКЛ ПОКА u.KEY.u == uJndex v-index ^ u.KEY.v

ЕСЛИ (v.DATA.c>>0) И (SEARCH(P,[0,v_index])==0) ТО

> Индекс вершины V

11:

10:

1К8ЕЯТ(Р,[1^_т^ех],[и_т^ех]) ВСЕ ЕСЛИ

12:

13:

и ^ ^ЕХТ(О,[илт!ех^лт1ех]) ВСЕ ЦИКЛ ПОКА

> Переход к следующему ребру

14: ВСЕ ЕСЛИ

15: и ^ ЭЕЬЕТЕ(Р,[1,ил^ех]) > Изменяем цвет вершины и

16: 1К8ЕЯТ(Р,[0,и_т&х],и.ВАТА.и))

17: ЦИКЛ ПОКА (ил^ех = £) И (ра1Н.КХ.со1от=\) > Пока не достигнем £ или существует путь 18: РЕЗУЛЬТАТ ^ Р

Алгоритм поиска в ширину предполагает проход по графу от исходной вершины в по каждому из ребер. В строке 1 инициализируется состояние структуры Р добавлением вершины в серого цвета. Далее цикл в строках 2-17 повторяется до тех пор, пока не будет найден путь или не будут просмотрены все вершины графа. Так как ключ поиска в структуре Р в старшей части содержит поле цвета, максимальный ключ в строке 3 будет выбран в первую очередь серого цвета со значением «1». Только если таких вершин нет, будет выбрана вершина черного цвета, в том числе вершина 1 Если выбрана вершина серого цвета, происходит обработка связанных с ней вершин (строки 5-13). Новая вершина добавляется в Р только после проверки остаточного потока и цвета вершины в строке 9.

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

Рассмотрим набор операций над структурами данных, которые используются в алгоритме Форда — Фалкерсона. В алгоритме 2 наиболее часто используется команда поиска 8ЕАР.СН(структура,ключ). Операнды команды задают одну из нескольких структур в памяти процессора обработки структур, а также ключ поиска. В последней версии СП возможно одновременное хранение до семи различных структур. Соответственно, номера структур, указанные в алгоритме в виде Р или О, представляют собой определенные це-

5. Анализ работы алгоритма в режиме МКОД

лые числа от 1 до 7 (структура 0 зарезервирована и не может использоваться в командах). Команда Ш8ЕКГ(структура,ключ,значение) также начинается с поиска по ключу. Если в структуре уже существует запись с указанным ключом, то происходит замещение ранее записанных данных на те, что указаны в команде. Команда перехода 1Т(тег,адрес) служит для синхронизации ЦП и СП. Поле «тег» — это битовое поле, которое определяет результат ветвления. Если тег равен нулю, переход по адресу не происходит, а код начинает выполняться со следующей команды за командой ветвления. Если тег равен единице, то происходит переход по адресу, указанному в команде. Тег также может быть не задан, что обозначается символом «?». Возможны несколько вариантов реализации команды:

• безусловный переход — 1Т(тег,адрес). Так как команда не ожидает операндов, она выполняется в СП незамедлительно.

• условный переход по тегу — 1Т(?,адрес). Процессор обработки структур ожидает из ЦП только тег направления перехода. По нулевому тегу совершается переход по указанному адресу, а по единичному тегу — переход к следующей команде. ЦП исполняет команду РиТ(тег), по которой тег посылается в СП.

• условный переход по адресу — 1Т(тег,?). Процессор обработки структур ожидает адрес перехода, и при его поступлении выполняет переход. ЦП исполняет команду РЦТ(адрес), по которой адрес перехода посылается в СП.

• условный переход по адресу и тегу — 1Т(?,?). Процессор обработки структур ожидает тег и адрес перехода. Данный случай менее востребован в алгоритмах. ЦП исполняет команду РЦТ(тег,адрес).

Ниже представлен алгоритмы для обоих потоков. Слева показан поток ЦП, а справа — поток СП.

Алгоритм 4. ФОРД-ФАЛКЕРСОН (0(У,Е),з,г) /псевдокод в режиме МКОД/

Поток ЦП Поток СП

1: flow — 0

2: P — ПОИСК В ШИРИНУ^,s,t)

3: ЦИКЛ ПОКА GET = 0 > ffJabell: SEARCH(P, [0.t])

4: PUT(0) > JT(?, ff_label4)

5: v Judex — t

6: Cf —— ж

7: ПОВТОРЯТЬ

8: PUT(1) > JT(?, ff_label2)

9: path — PUT([0, v Judex]) > ffJabel2: SEARCH(P, ?)

10: u-iudex — path.DATA.u

11: PUT([u Judex,v Judex*]) > SEARCH(G, ?)

12: u — GET

13: Cf — min(u.DATA.c—Cf)

14: v Judex — u-iudex

Наука и Образование. МГТУ им. Н.Э. Баумана 174

15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:

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

ЦИКЛ ПОКА (path = s)

PUT(0)

v Judex ^ t ПОВТОРЯТЬ

PUT(1) PUT(vJndex) path ^ GET u-iudex ^ path.DATA.u PUT([uJudex,v Judex*]) u ^ GET

PUT([u-iudex*,v Judex*]) v ^ GET

PUT([u-iudex*,v Judex*]) PUT(u.DATA.c - cf ) PUT(v Judex*,u-iudex*) PUT(v.DATA.c + cf ) v-iudex ^ u-iudex ЦИКЛ ПОКА (path = s) PUT(0)

P ^ ПОИСК В 0ÈPÈHy(G,s,t) 36: ВСЕ ЦИКЛ ПОКА 37: РЕЗУЛЬТАТ ^ flow

о JT(?, ff_label2)

о JT(?, ff_label3) о ffJabel3: SEARCH(P, ?)

о SEARCH(G, ?)) о SEARCH(G, ?)

о INSERT(G, ?, ?) о INSERT(G, ?, ?)

о JT(?, ff_label3) о DELSTR(P)

о JT(1, ff_label1) о ffJabel4:

Остановимся более подробно на организации структурных конструкций при взаимодействии двух процессоров (табл. 4). Так как управление переходами осуществляет центральный процессор, код СП должен быть построен таким образом, чтобы соответствовать таким общепринятым операторам, как условия и циклы. При этом в код ЦП добавляются команды PUT для передачи тегов с условиями переходов. Возможны несколько вариантов организации каждого типа команд, однако представленные ниже варианты наиболее приемлемы по размерам передаваемых данных, так как требуют передачи только тега без использования адресов.

Алгоритм поиска в ширину, использующий указанные конструкции, показан ниже.

Алгоритм 5. ПОИСК В ШИРИПУ(С, s,t) /псевдокод ЦП в режиме МКОД/ Поток ЦП Поток СП

1: > INSERT(P,[1,s],[0])

2: ПОВТОРЯТЬ

3: PUT(1) > JT(?,bfs_label1)

4: > bfsJabell: MAX(P)

5: path ^ GET 6: ЕСЛИ path.KEY.color = 1 ТО

7: PUT(0) > JT(?,bfs_label4)

8: u-index ^ path.KEY.v

9: PUT([u_index,0]) > NEXT(G,?)

10: u ^ GET

11: ЦИКЛ ПОКА u.KEY.u == u.index > bfsJabel2:

12: PUT(0) > JT(?,bfs_label4)

13: v.index ^ u.KEY.v

14: PUT([0,vJndex]) > SEARCH(P,?)

15: ЕСЛИ (v.DATA.c>>0) И (GET==0) ТО

16: PUT(0) > JT(?,bsf_label3)

17: PUT([1,v_index*])

18: PUT([u_index*]) > INSERT(P,?,?)

19: ВСЕ ЕСЛИ

20: PUT(1)

21: PUT([u_index*,v_index*]) > bsf_label3: NEXT(G,?)

22: u ^ GET

23: ВСЕ ЦИКЛ ПОКА > JT(1,bfs_label2)

24: PUT(1)

25: ВСЕ ЕСЛИ

26: PUT(1)

27: PUT([1,u_index*]) > bfs_label4: DELETE(P,?)

28: u ^ GET

29: PUT([0,u_index*])

30: PUT(u.DATA.u) > INSERT(P,?,?)

31: ЦИКЛ ПОКА (u-index = t) И (path.KEY.co1or=1)

32: PUT(0) > JT(?,bfs_label1)

33: РЕЗУЛЬТАТ P

Как видно из приведенных алгоритмов, при решении задачи отыскания максимального потока по методу Форда — алкерсона и при принятых базовых принципах функционирования МКОД системы не достигается высокой параллельности при выполнении двух потоков. Это происходит в связи с тем, что потоки оказываются сильно связанными из-за пересылки большого количества данных. Однако, легко заметить, что часть команд использует повторно посылаемые данные, ранее уже использованные при обращении к структурам. Такие данные отмечены символом <<*>>. В алгоритмах 5 и 4 количество команд, основанных на использовании повторно полученных данных достаточно велико и составляет около 30%. Общее количество команд, зависимых только от локальных данных СП составляет около половины от всех команд:

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

Т а б л и ц а 4

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

для исполнения в ЦП и СП

Пример конструкции Поток ЦП Поток СП

ПОВТОРЯТЬ Действие ЦИКЛ ПОКА (Условие) ПОВТОРЯТЬ РиТ(1) Действие ЦИКЛ ПОКА (Условие) РиТ(0) ХТ(?,метка1) метка1 :Действие ХТ(?,метка1)

ЦИКЛ ПОКА (Условие) Действие ВСЕ ЦИКЛ ПОКА ЦИКЛ ПОКА (Условие) РиТ(0) Действие ВСЕ ЦИКЛ ПОКА РиТ(1) метка1: ХТ(?,метка2) Действие ХТ(1,метка1) метка2:

ЕСЛИ (Условие) Действие ВСЕ ЕСЛИ ЕСЛИ (Условие) РиТ(0) Действие ВСЕ ЕСЛИ РиТ(1) ХТ(?,метка1) Действие метка1:

ЕСЛИ (Условие) Действие ИНАЧЕ Действие ВСЕ ЕСЛИ ЕСЛИ (Условие) РиТ(0) Действие ИНАЧЕ РиТ(1) Действие ВСЕ ЕСЛИ ХТ(?,метка1) Действие ХТ(1,метка2) метка1 :Действие метка2:

Т а б л и ц а 5

Количество независимых и мало зависимых команд обработки структур и множеств

Алгоритм Общее количество команд обработки структур Количество независимых команд Количество команд, использующих повторно полученные данные

Форд-Фалкерсон 9 1 3

Поиск в ширину 8 2 3

Заключение

Проведенные исследования реализации алгоритма Форда — Фалкерсона показывают, что МКОД системы способна решать подобные задачи на графовых моделях как в режиме сопроцессора, так и в случае независимого исполнения потоков ЦП и СП. На основе общей схемы алгоритма удалось получить модифицированную версию, представленную в базисных операциях над структурами данных, а также версию с двумя потоками команд и одним потоком данных. Это позволяет сделать следующие выводы:

• Разработанная методика модификации алгоритма была уточнена и продемонстрирована на одном из общих и важных алгоритмов оптимизации на сетях и графах.

• Выбранные шаблоны преобразования структурных операторов языка высокого уровня позволяют получить модификацию структурированных алгоритмов к виду, реализуемому в МКОД системе.

• Возможно и целесообразно создание средств автоматизированного преобразования и оптимизации программ на языках высокого уровня к МКОД формату.

• Необходимо совершенствовать структуру МКОД системы и процессора обработки структур. В частности, целесообразно включить в структуру процессора блок регистров, а также блок генерации составных ключей. Это позволит существенно повысить независимость потоков СП и ЦП и сократит объем межпроцессорного взаимодействия.

Список литературы

1. Попов А.Ю. Электронная вычислительная машина с многими потоками команд и одним потоком данных: пат. 71016 РФ. 2008. Бюл. № 5. 1 с.

2. Попов А.Ю. Реализация электронной вычислительной машины с аппаратной поддержкой операций над структурами данных // Вестник МГТУ им. Н.Э. Баумана. Сер. Приборостроение. 2011. Спец. вып. Информационные технологии и компьютерные системы. С. 83-87.

3. Попов А.Ю. Электронная вычислительная машина с аппаратной поддержкой операций над структурами данных // Аэрокосмические технологии: тр. Второй Междунар. науч.-техн. конф., посвященной 95-летию со дня рождения академика В.Н. Челомея (РФ, Москва-Реутов, 19-20 мая 2009 г.). Т. 1 / ОАО "ВПК "НПО машиностроения"; МГТУ им. Н.Э. Баумана. М.: МГТУ им. Н.Э. Баумана, 2009. С. 296-301.

4. Попов А.Ю. Применение вычислительных систем с многими потоками команд и одним потоком данных для решения задач оптимизации // Инженерный журнал: наука и инновации. 2012. № 1. Режим доступа: http://engiournal.ru/catalog/it/hidden/80.html (дата обращения 01.08.2014).

5. Попов А.Ю. Исследование производительности процессора обработки структур в системе с многими потоками команд и одним потоком данных // Инженерный журнал: наука и инновации. 2013. №11. Режим доступа: http://engiournal.ru/catalog/ it/hidden/1048.html (дата обращения 01.08.2014).

6. Кнут Д. Искусство программирования. В 3 т. Т. 3. Сортировка и поиск: пер. с англ. 2-е изд. М.: Вильямс, 2000. 832 с.

7. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ: пер. с англ. М.: МЦНМО, 2000. 960 с.

8. Попов А.Ю. Модели и алгоритмы автоматизированной декомпозиции схем ЭВМ: дис. . .. канд. техн. наук. М., 2003. 176 с.

Science ¿Education

of the Bauman MSTU

Science and Education of the Bauman MSTU, 2014, no. 9, pp. 162-180.

DOI: 10.7463/0914.0726416

Received: 19.05.2014

© Bauman Moscow State Technical University

ISSN 1994-0448

On the implementation of the Ford — Fulkerson algorithm on the Multiple Instruction and Single Data computer system

Popov A. Yu.1'*

alexpopovi5lbmstu.ru

1Bauman Moscow State Technical University, Moscow, Russia

Keywords: maximum flow, Ford — Fulkerson algorithm, MISD computer system, structure processor.

Algorithms of optimization in networks and direct graphs find a broad application when solving the practical tasks. However, along with large-scale introduction of information technologies in human activity, requirements for volumes of input data and retrieval rate of solution are aggravated. In spite of the fact that by now the large number of algorithms for the various models of computers and computing systems have been studied and implemented, the solution of key problems of optimization for real dimensions of tasks remains difficult. In this regard search of new and more efficient computing structures, as well as update of known algorithms are of great current interest.

The work considers an implementation of the search-end algorithm of the maximum flow on the direct graph for multiple instructions and single data computer system (MISD) developed in BMSTU. Key feature of this architecture is deep hardware support of operations over sets and structures of data. Functions of storage and access to them are realized on the specialized processor of structures processing (SP) which is capable to perform at the hardware level such operations as: add, delete, search, intersect, complete, merge, and others. Advantage of such system is possibility of parallel execution of parts of the computing tasks regarding the access to the sets to data structures simultaneously with arithmetic and logical processing of information.

The previous works present the general principles of the computing process arrangement and features of programs implemented in MISD system, describe the structure and principles of functioning the processor of structures processing, show the general principles of the graph task solutions in such system, and experimentally study the efficiency of the received algorithms.

The work gives command formats of the SP processor, offers the technique to update the algorithms realized in MISD system, suggests the option of Ford-Falkersona algorithm to search the maximum flow on direct graph for MISD model of the computing system and the options to update an architecture of MISD system that lead to its increasing performance.

References

1. Popov A.Iu. Elektronnaia vychislitel'naia mashina s mnogimi potokami komand i odnim potokom dannykh [Electronic computer with multiple instruction streams and single data stream]. Patent RF, no. 71016, 2008. (in Russian).

2. Popov A.Iu. Implementation of an electronic computer with hardware support for operations on data structures. Vestnik MGTU. Ser. Priborostroenie = Herald of the Bauman MSTU. Ser. Instrument Engineering, 2011, Spec. iss. Informatsionnye tekhnologii i komp'iuternye sistemy [Information technology and computer systems], pp. 83-87. (in Russian).

3. Popov A.Iu. Electronic computer with hardware support for operations on data structures. Aerokosmicheskie tekhnologii: tr.Vtoroi mezhdunarodnoi nauchno-tekhnicheskoi konfer-entsii, posviashchennoi 95-letiiu so dnia rozhdeniia akademika V.N. Chelomeia [Aerospace Technology: proceedings of the Second International Scientific and Technical Conference dedicated to the 95th anniversary of the birth of Academician V.N. Chelomei], RF, Reutov-Moscow, 19-20 May 2009, Vol. 1. Moscow, Bauman MSTU Publ., 2009, pp. 296-301. (in Russian).

4. Popov A.Iu. Application of computer systems with multiple instruction streams and single data stream for solving optimization problems. Inzhenernyy zhurnal: nauka i in-novatsii = Engineering Journal: Science and Innovation, 2012, no. 1. Available at: http://engiournal.ru/catalog/it/hidden/80.html, accessed 01.08.2014 (in Russian).

5. Popov A.Iu. The study of the structure processor performance in the computer system with multiple-instruction streams and single-data stream. Inzhenernyy zhurnal: nauka i innovatsii = Engineering Journal: Science and Innovation, 2013, no. 11. Available at: http://engiournal.ru/catalog/it/hidden/1048.html, accessed 01.08.2014. (in Russian).

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

6. Knuth D.E. The Art of Computer Programming. Vol. 3. Sorting and Searching. 2nd ed. Reading, Massachusetts, Addison-Wesley, 1998. (Russ. ed.: Knuth D.E. Iskusstvo programmirovaniia. V 3 t. Vol. 3. Sortirovka i poisk. Moscow, Vil'iams Publ., 2000. 832 p.).

7. Cormen T.H., Leiserson C.E., Rivest R.L. Introduction to Algorithms. MIT Press and McGraw-Hill, 1990. (Russ. ed.: CormenT.H.,LeisersonC.E.,RivestR.L. Algoritmy: postroenieianaliz. Moscow, MTsNMO Publ., 2000. 960 p.).

8. Popov A.Iu. Modeli i algoritmy avtomatizirovannoi dekompozitsii skhem EVM. Kand. diss. [Models and algorithms for automated decomposition of the computer scheme. Cand. diss.]. Moscow, 2003. 176 p. (in Russian).

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