Научная статья на тему 'Дослідження паралельних схем алгоритму Данцига для обчислювальних систем зі спільною пам'яттю'

Дослідження паралельних схем алгоритму Данцига для обчислювальних систем зі спільною пам'яттю Текст научной статьи по специальности «Математика»

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

Аннотация научной статьи по математике, автор научной работы — Погорілий С. Д., Мар'яновський В. А., Бойко Ю. В., Верещинський О. А.

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

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

Formalization of Dantzig algorithm for the shortest ways search in connected oriented graph using mathematical means of V.M. Glushkov modified systems of algorithmic algebras is performed. Conceptions of paralleling for architectures with shared memory, which are based on minimization of loss on synchronization and parallel data proceeding are proposed. Transformation of algorithm is performed, set of parallel schemes are obtained and their comparative analysis is performed

Текст научной работы на тему «Дослідження паралельних схем алгоритму Данцига для обчислювальних систем зі спільною пам'яттю»

С.Д. ПОГОРІЛИЙ, В.А. МАР’ЯНОВСЬКИЙ, Ю.В. БОЙКО, О.А. ВЕРЕЩИНСЬКИЙ

ДОСЛІДЖЕННЯ ПАРАЛЕЛЬНИХ СХЕМ АЛГОРИТМУ ДАНЦИГА ДЛЯ ОБЧИСЛЮВАЛЬНИХ СИСТЕМ ЗІ СПІЛЬНОЮ ПАМ’ЯТТЮ

Abstract: Formalization of Dantzig algorithm for the shortest ways search in connected oriented graph using mathematical means of V.M. Glushkov modified systems of algorithmic algebras is performed. Conceptions of paralleling for architectures with shared memory, which are based on minimization of loss on synchronization and parallel data proceeding are proposed. Transformation of algorithm is performed, set of parallel schemes are obtained and their comparative analysis is performed.

Key words: routing, Dantzig algorithm, modified systems of algorithmic algebras, parallel regular scheme, paralleling.

Анотація: Виконано формалізацію алгоритму Данцига пошуку найкоротших шляхів у зв’язному орієнтованому графі з використанням математичного апарата модифікованих систем алгоритмічних алгебр В.М. Глушкова. Запропоновано концепції розпаралелювання для архітектур зі спільною пам'яттю, що ґрунтуються на мінімізації витрат на синхронізацію та паралельну обробку даних. Проведено трансформацію алгоритму, отримано набір паралельних схем та виконано їх порівняльний аналіз.

Ключові слова: маршрутизація, алгоритм Данцига, системи алгоритмічних алгебр, паралельна регулярна схема алгоритму, розпаралелювання.

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

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

1. Вступ

Однією із найважливіших і найактуальніших у сьогоденні областей застосування задачі пошуку найкоротших шляхів у ґрафах є маршрутизація пакетів у комп'ютерних мережах. Деякі з перших INTERNET-протоколів маршрутизації, наприклад, RIP (Routing Information Protocol) [1], використовували так званий вектор відстаней. Така схема роботи гарантувала збіжність оцінених маршрутизаторами відстаней до істинних по проходженні певного часу, надаючи, таким чином, інформацію про найкращі шляхи. Для подолання певних проблем, пов'язаних з цим алгоритмом, була розроблена маршрутизація з урахуванням станів каналів зв'язку (Link-State Routing). При такій маршрутизації кожен маршрутизатор підтримує інформацію про ґрафове представлення топології всієї мережі і обчислює свою таблицю маршрутизації, використовуючи алгоритм пошуку всіх найкоротших шляхів у ґрафі. Недоліком такого підходу є додаткові витрати пам'яті та часу на обчислення, але, не зважаючи на це, такий вид маршрутизації визнано ефективним і формалізовано у вигляді протоколу маршрутизації з визначенням найкоротшого маршруту (Open Shortiest Path First protocol, OSPF) [1 ].

Стрімке зростання досліджень у галузі комп'ютерних мереж, виникнення нових архітектур сучасних мікропроцесорів дозволяють розв'язати задачу маршрутизації на якісно новому рівні. У статті формуються паралельні схеми алгоритму Данцига для застосування у маршрутизаторах нового покоління.

2. Системи зі спільною пам’яттю

Багатопроцесорні та багатоядерні системи на сьогоднішній день належать до класу систем, здатних обробляти великі обсяги інформації в режимі реального масштабу часу. Одним із можливих

© Погорілий С.Д., Мар'яновський В.А., Бойко Ю.В., Верещинський О.А., 2009 ISSN 1028-9763. Математичні машини і системи, 2009, № 4

варіантів архітектури є системи зі спільною пам'яттю (Symetric Multiprocessing, SMP) [2]. Основна ідея такої архітектури полягає у наявності спільної ділянки пам'яті для кількох процесорів. Вона використовується для обміну інформацією, і всі процесори здійснюють однакову адресацію для всіх комірок пам'яті. Саме тому така система називається симетричною.

Однією із найбільших переваг SMP є простота та універсальність у програмуванні. Звичайно використовують модель кількох паралельних гілок (проте, зауважимо, ніщо не заважає організувати міжпроцесорний обмін даними). Створюючи процеси (потоки) і плануючи їх роботу, можна досягти значного виграшу в часі роботи. Уся підсистема працює під керуванням єдиної операційної системи. Зокрема, у Windows підтримка SMP забезпечується, починаючи з версії NT 4.0 [3].

Типовим прикладом SMP є сучасні багатоядерні процесори фірми Intel (Core Duo, Core 2 Duo, Core 2 Quad тощо). Використання цих процесорів в універсальних обчислювальних системах, де ступінь розпаралелювання є невеликим, дозволяє одержати суттєве підвищення коефіцієнта продуктивності.

Таким чином, використання систем SMP дозволяє значно оптимізувати виконання обчислень, що дозволяє успішно використовувати їх для розв'язку задач маршрутизації, особливо при великих навантаженнях на локальні маршрутизатори.

З. Алгоритм Данцига

Опис алгоритму. Одним із найефективніших методів пошуку всіх найкоротших шляхів у зваженому орієнтованому ґрафі є алгоритм Данцига [4, 5].

Розглянемо схему роботи алгоритму. Ідея полягає в послідовному обчисленні за допомогою рекурентної процедури підматриць найкоротших шляхів Dm зростаючої розмірності mXm . Кожна

така матриця, фактично, є матрицею найкоротших шляхів підґрафа з вершинами від 0 до m — І.

Введемо низку позначень:

N - розмірність ґрафа, який відзеркалює топологію мережі; (1)

{i..k} - множина цілих чисел від i до k ;

gj- довжина ребра з вершини i в j ;

dj - довжина найкоротшого знайденого шляху з i в j ;

im •

dij - шлях з вершини i до j через вершину m ;

isEdge(i, j) - предикат, значенням якого буде істина, якщо існує ребро з вершини i в j ;

isWay(i, j) - предикат, значенням якого буде істина, якщо існує шлях з вершини i в j ;

edgeNum(i, j) - кількість ребер на шляху з i в j ;

setWay(i, j, m) - встановлення шляху d™ .

Кожну ітерацію алгоритму можна розділити на три послідовні кроки:

1. Пошук найкоротших шляхів з вершини m до j < m.

Шлях можна розбити на дві частини: від т до деякої проміжної вершини і ^ті) та від і до і

(йі ).

Тоді

Лщ = Т^ктг + Лг] ). (2)

■) г є|0,т-1) ■)

2. Пошук найкоротших шляхів з вершин і < т до т .

Шлях можна розбити на дві частини: від і до деякої проміжної вершини і ) та від і до т

(Е3т ) .

Тоді

а-т %Й-1|К' + ) ■ (3)

3. Пошук найкоротших шляхів з вершин і < т до і < т з урахуванням наявності нової вершини т.

Шлях можна розбити на дві частини: від і до вершини т (йіт) та від т до і (йт].).

Тоді

й т т = тіпш тт + й.,й ). (4)

і т \ і т т. ц / ' '

Останній крок рекурентної процедури дає матрицю Пм , яка, власне, і буде матрицею

найкоротших шляхів ґрафа.

Послідовна схема алгоритму. Формалізуємо алгоритм Данцига шляхом формування схеми з використанням апарату систем алгоритмічних алгебр Глушкова(САА) [6-8].

Використовуючи позначення (1), сформуємо ряд кон'юнктивних умов для скорочення запису формули алгоритму:

а1 (т, і, і) = isEdge(m, і) а і^Шау(і,і), (5а)

а2 (т, і, і) = isEdge(і, т) а isWay(i, і), (5б)

а3(т,і, і) = isWay(i, т)А isWay(m, і). (5в)

Умови а , а2, а3 вказують на існування відповідно шляхів йт, й3іт, йт.

Використовуючи (5), запишемо умови оптимальності шляхів йт, й-т, й™ на відповідному

кроці ітераційного процесу:

Д = ^Шу™ і)) V ^ й і < йт] ) V

V ((gmг + йу = ) А (edgeNum(i, і) + 1 < е^еШт(Щ і))) ,

Д2 = (іШУ(і\ т)) V {^]т + й у < йтг ) V

V ((g]m + йу = йт ) а (edgeNum(i, і) +1 < edgeNum(i, т))) ,

Дз = ) V (йт + йт < й і) V

V ((й іт + йті = й і ) а (edgeNum(i, т) + edgeNum(m, і) < edgeNum(i, і))) .

(6а)

(6б)

(6в)

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

Оперуючи умовами (5) та (6), запишемо кожен з кроків алгоритму у вигляді формули:

1. SubDanc1(m) = { { ( ( setWay(т, і, і) V Е) V Е)х (+ + і)}х (+ + і)}. (7а)

уг{і..т| ії{і..т} а Д

2. SubDanc2(m) = { { ( ( setWay(і, т, і) V Е) V Е) х (+ + і)}х (+ + і)} . (7б)

ії{1. .т 1 ії{1. т} а2 Д2

3. SubDanc3(m) = { { ( ( setWay(i, і, т) V Е) V Е)х(+ + і)}х (+ + і)}, (7в)

ії {1. .т 1 ії{1. т| аз Дз

де операція (++) означає інкрементацію змінної на одиницю.

Використовуючи позначення, можна сформувати послідовну регулярну схему(ПРС) алгоритму Данциґа:

Dancig = { SubDanc1(m) х SubDanc2(m) х SubDanc3(m) х (+ + т)} . (8)

т> N

Принцип обробки даних. У роботі виконується парадигма розпаралелювання алгоритму за даними, тобто кожен потік обробляє певну частину інформаційної множини, не перетинаючись на цьому етапі з іншими робочими потоками. Таким чином, для подальшої роботи необхідно сформулювати деякі засади роботи алгоритму із даними, розміщеними в пам'яті.

Інформація про ґраф зберігається у вигляді двох матриць. Перша з них - матриця суміжностей ґрафа. Вона являє собою набір вхідних даних для алгоритму і є незмінною до кінця його роботи (доступ лише на читання). Друга матриця - матриця маршрутів. У комірці з координатами (і, і) зберігається номер вершини, до якої необхідно перейти після і -ої на шляху до і. Таким чином, шлях розбивається на 2 частини: з і до деякої проміжної вершини к та з к до і . Якщо к = і, необхідно пройти просто по відповідному ребру між вершинами. За допомогою цієї матриці в динамічному режимі розраховуються довжини найкоротших шляхів між довільними парами вершин. В остаточному варіанті одержана матриця і є результатом роботи алгоритму.

Як зазначено, алгоритм Данцига можна розбити на три незалежні кроки:

1. Пошук найкоротшого шляху йт .

2. Пошук найкоротшого шляху .

3. Пошук найкоротшого шляху й" .

Важливо відзначити, що крок 3 може бути виконаний лише після повного завершення двох попередніх. Перші два етапи схематично зображені на рис. 1а та рис. 1б. Як бачимо, для обрахунку

кожного нового елемента йт (й™т) слід опрацювати цілий стовпчик (рядок) підматриці Dm

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

т N

а)

т N

ей-

Матриця суміжностей

Матриця маршрутів

б)

Рис. 1. Обробка даних на перших двох етапах алгоритму Далі пропонується така схема роботи.

Нехай маємо 2 N робочих потоків. На першому етапі роботи вони рівномірно поділяють матрицю на рядки (рис. 2а), а на другому - на стовпчики (рис. 2б). При цьому області даних, що обробляються різними потоками, не перекриваються навіть при читанні, що теж може дещо уповільнити роботу алгоритму.

а) б)

Рис. 2. Схема роботи алгоритму на перших двох етапах

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

Другий крок виконується лише після повного завершення першого, що змушує вводити

додаткову точку синхронізації. Для усунення цього доцільно дещо вдосконалити схему, зображену

на рис. 2. Розіб'ємо робочі потоки на 2 групи по N потоків. При цьому перша група виконує крок 1, а друга, відповідно, крок 2. При цьому кількість інформації, яка припадає на один потік, зростає (рис. 3).

і т N На третьому кроці, на кожній ітерації циклу,

порівнюються лише 2 елементи матриці. Тому в даному випадку розбиття може бути майже довільним, наприклад, на квадратні підматриці.

Але для уникнення затримок, внаслідок

одночасного доступу різних потоків до одних і тих же даних, оптимальним буде розбиття на рядки, як показано на рис. 2а.

1

ч ч

\ ч

ч ч

ч \ ч

ч V V ч ч ч ч V ч N

ч ч 4

: групи потоків

Рис. 3. Альтернативна схема роботи

4. Формування паралельної схеми алгоритму Данцига Розбиття матриці даних. Введемо деякі нові поняття, які знадобляться при реалізації розпаралелювання алгоритму.

Нехай потрібно розділити матрицю тхт на N приблизно рівних частин прямокутної форми, як зображено на рис. 4 [9].

Ьі позначає перший рядок і -ї частини, а єі - останній. Їх можна обчислити за такими співвідношеннями:

Ьшм = (і _ 1) х]™ / N [+1, (9)

єш,1я = і х]т / N [. (10)

Таким чином, отримано межі областей, які визначатимуть область пам'яті, що оброблятиметься одним із паралельних потоків (зрозуміло, в аналогічний спосіб можна розбити матрицю на стовпчики).

Синхронізація потоків. Введемо узагальнену точку синхронізації кількох паралельних потоків - фактично, бар'єр який затримує виконання потоків, поки їх не набереться достатня кількість. Такий об'єкт можна представити формулою

BN (і) = Т (1) х S (1) х... х S (1_1) х S (1+1) х... х S (1) = Т (1) х

Ьн

Єн

Рис. 4. Розбиття матриці даних

( \

N

П 5 (1)

і=1 \ І фі

(11)

де Т(1) - контрольна точка;

£(1) - точка синхронізації (може інтерпретуватися як порожній цикл);

N - кількість потоків; і - номер потока, який синхронізується.

Таким чином, кожен потік для проходження бар'єра повинен

подолати ^ _ 1) точку синхронізації, перед цим попередньо розблокувавши свою власну. Схематично роботу бар'єра зображено на рис. 5. Коли будь-який з потоків потрапляє у бар'єр, він не зможе подолати його, поки кожен з решти потоків не розблокує власну контрольну точку.

Рис. 5. Внутрішня організація бар'єра

Еквівалентні перетворення схеми алгоритму. Застосуємо апарат тотожніх перетворень САА-М до схеми (8) [8].

Спочатку розв'яжемо деяку узагальнену задачу. Нехай маємо а-ітерацію (вважатимемо, що на початку ітераційного процесу змінна і ініціалізується одиницею, а на кожному кроці циклу неявно інкрементується на одиницю):

I = { А}, (12)

Щ1.М }

де оператор А опрацьовує деяку частину вхідних даних. Введемо позначення:

у = і їі .і }, (13)

к

у = і ї {1.^} = А г. .

і=1

Таким чином, ми розбили інтервал {1.^} на к приблизно однакових частин. Внесемо умову у всередину ітерації у вигляді фільтра:

1 = {УА} = {УАУ А... Аукх А} = {уУу2 V... Vу х А}. (14)

у у у

Скористаємося властивістю фільтрації для локально замкнутих умов у для розділення фільтра, після чого винесемо оператор диз'юнкції за ітераційні дужки:

__ _ __ _ к ( _ Л

1 = {(у^V...Vn)хА} = {уАVУ2AV...vnA} = V {уА} і.

у у 1=1 \у )

(15)

Оскільки в кожний довільний момент часу може бути виконана лише одна з умов типу

і є {Ь1 ’ ..в: ’ } , то можна сказати, що "і, і:

у а у, = 5і А у .

(16)

Як бачимо з (16), істинність будь-якої з умов у виключає можливість істинності будь-якої упри і ф ] , що фактично є умовою локальної замкнутості. Тому можемо замінити умову ітерації

для кожної з гілок на відповідний фільтр:

V

1=1

{А}

уу )

Таким чином, цикл було розбито на к паралельних гілок за допомогою синхронної диз'юнкції. Зауважимо, що кожна гілка працює лише зі своєю частиною інформаційної множини, недоступною для інших. За означенням це власне і є асинхронна диз'юнкція:

к

І =

{А} і .

\уі )

(18)

Введемо об'єкт для синхронізації гілок:

({ А}] = V({ А}х(Т(1)хS(1)х...хS(1)хS(1+l).х..хS(1l))} = V({ А}хBN(І)} . (19)

у у ) І=1 \П ) І=1 \уі )

V

І=1

Формула (19) являє собою асинхронну а-ітерацію обробки даних, яка виконується N гілками, які, у свою чергу, синхронізуються після виконання операцій. Застосуємо її' до послідовної регулярної схеми (8). Це дозволить розбити кожен із трьох внутрішніх циклів на паралельні гілки:

2 N ( Л

SuЬDanc1(m) = V { { ( ( $віШау(т, і, і) V Е) V Е) х (+ + і)} х (+ + і)} х В21Я (і)

1=1 уії{Ьі..ві} ії[1.т} а ь

/

(20)

ьїх

= V/ (PSuЬ1(m,2N,і)хВ2N(і)).

1=1

2 N ґ

SuЬDanc2(m) = V { { ( ( sвtWay(і, т, і) V Е) V Е)х (+ + і)}х (+ + і)}хВ2N (і) і =

1=1 ^іе[Ьі..ві} ]Є[1..ш} а2 02 )

2 N

(21)

=V ^и^та N, і) х в2 N (і)) .

і=1

2 N ( Л

SuЬDanc3(m) = \у { { ( ( sвtWay (і, і, т) V Е) V Е) х (+ + і)} х (+ + і)} хВ21Я (і)

і=1 уії[Ьі..ві} ]є[1..ш} а

)

2 N

(22)

у р^зті N, і) х В2 N (і)).

V

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

і=1

Підставляючи вирази (20), (21) та (22) у (8), отримаємо

(2N Л (2 N Л

Dancig = { V {PSuЬ1(m,2N, і) хВж (і)) і х V {PSuЬ2(m,2N, і)х В2N (і)) і х

ш^ у і=1 ) \ і=1 )

(2N Л

х V (PSuЬ3(m,2N, і) хВ2N (і)) і х (+ + т)}.

у і=1 )

(23)

Отримана формула (23) - паралельна схема алгоритму Данцига, яка представлена на рис. 3. Як бачимо, всередині зовнішньої а-ітерації для виконання кожного з трьох послідовних кроків відбувається розщеплення на паралельні гілки. Для покращання ефективності доцільно винести асинхронну диз'юнкцію за межі ітераційного процесу:

Dancig = { XV (PSuЬ 1(т,2N, і) х Вш (і) х PSuЬ2(m,2N, і) х В2N (і) х PSuЬ3(m,2N, і) х Вш (і))х

ш^ і=1

2.N

х(++т)} = V/ { PSuЬ1(m,2N,і)хВш(і)хPSuЬ2(m,2N,і)хВш(і)хPSuЬ3(m,2N,і)х

і=1 ш>:ы

хВ2N (і)х(++т)} .

а)

б)

Схеми (23) та (24) можна інтерпретувати, як зображено на рис. 6а та рис. 6б, де умовно зображено одну ітерацію багатопоточної обробки даних для кожного випадку.

Використаємо (23) для отримання схеми, зображеної на рис. 4.

Поділимо робочі потоки на дві групи: перша буде виконувати крок 1 алгоритму, а друга - крок 2. Введемо умову о, істинність якої означає належність до першої групи, хибність - до другої. Запишемо

Рис. 6. Варіанти розпаралелювання алгоритму м°дифік°вану схему (23):

Dancig = { V/ (PSuЬ1(m, N, і) х В^і))} х (V (PSuЬ2(m, N, і) х В^^і))! х

ш>N у і=1 ) у і=1 )

ґ 2 N

(25)

х[ V(PSuЬ3(m,2N,і)хВ2N(і)) іх(+ + т)}.

у і=1

Введемо фіктивні гілки для вирівнювання кількості потоків та зведемо перші два кроки до спільної диз'юнкції:

Бап^ = { V((Р£иЬ1(т,N. І)хБ^(І)V-Е)]]х V((РіїиЬ2(т,N,І)хБ(^'>(І)V£)1]х

т>N у І=[ V® )) V І=1 V® ))

СШ ]

х V {PSuЬ3(m,2N,І)хБш (І)) ]х (+ + т)} =

V І=1

(2 N ґ

(1)П\ ч/£Лх^ РСі.ЬК™ М1\хЦ(2)І

= { XV [ (PSuЬ1(m, N. і) х В^(і) V Е) х (PSuЬ2(m, N. і) х В™ (і) V Е) ]| х

ш>Nу і=1 уо

( 2 N

(26)

х

■V (PSuЬ3(m,2N,l)хВш (і)) ]х(++т)}.

V і=1 )

Перейдемо від а-диз'юнкцій до фільтрів, а потім скористаємося умовою дистрибутивності синхронної диз'юнкції:

Dancig = | v ((wPSub1(m,N,l)xB^y) v wE)x(wPSub2(m,N,l)xB^(l) v coE)) Ix

m>N у l=i J

x

x

{2М Л

у (Р8иЬ3(т,2N, І)хВ2N (І)) Іх(++т)} =

V і=і )

{ (у((шР8иЬ1(т,N,І)хВ^(І)чшРШ2(т,N,1)хВ^)(І))]\х

т> N VІ=1 )

(2N Л

у (Р8иЬ3(т,2N,І)хВ2N(І)) Іх(++т)}.

V І=1 )

Замінимо фільтри знову на а-диз'юнкцію й об'єднаємо бар'єри В® та В^, а також

винесемо оператор асинхронної диз юнкції:

2 N

Dancig = v I I I (PSub1(m, N,l) v PSub2(m, N,l))xB2N (l) \ \x

l =1 m>N \\w

(28)

х ((Р8иЬ3(т ,2 N, І) х В2 N (І) ))х (+ + т)}.

Отриману формулу (28) схематично зображено на рис. 7. Основною її перевагою є менша

і кількість синхронізацій у порівнянні із (23) та (24), що

[ безперечно покращить ефективність роботи алгоритму.

SubDancl SubDanc2

&2N

SubDanc3

В2

5. Висновки

У статті проаналізовано підхід до розв'язку задачі маршрутизації у комп'ютерних мережах, який ґрунтується на алгоритмі Данцига. Виконано формалізацію алгоритму

з використанням математичного апарату САА-М і отримано послідовну регулярну схему (8).

Сформовано концепцію розпаралелювання алгоритму для систем зі спільною пам'яттю. Проаналізовано два підходи: в першому випадку

зменшується навантаження на кожну з паралельних гілок, а в другому за рахунок зростання навантаження значно зменшуються витрати на синхронізацію гілок. Виконано трансформацію ПРС (8) за допомогою САА-М. Паралельні регулярні схеми (23), (24) представляють перший варіант, а (28) - другий.

Використання математичного апарату САА-М В.М. Глушкова дозволяє зосередитись на концепціях та методах трансформації паралельних схем алгоритмів, абстрагуючись від конкретних деталей програмної реалізації. При цьому отримані схеми є теоретичною базою для створення відповідного програмного забезпечення.

Рис. 7. Остаточна схема розпаралелювання

СПИСОК ЛІТЕРАТУРИ

1. Сик Дж., Ли Л., Ламсдэйн Э. С++ Boost Graph Library. Библиотека программиста / Пер. с англ. Р. Сузи. -СПб.: Питер, 2006. - 304 с.

2. Лісовець В., Цегелик Г. Метод M-паралельного послідовного пошуку записів у файлах баз даних і його ефективність // Вісник Львівського університету. Сер. прикл. матем. та інформ. - 2007. - Вип. 13. - С. 177 -186.

3. Джонсон М. Харт Системное программирование под Windows / Пер. с англ. - 3-е изд. - М.: Издательский дом «Вильямс», 2005. - 592 с.

4. Майника Э. Алгоритмы оптимизации на сетях и графах. - М.: Мир, 1981. - 324 с.

5. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. - М.: Центр непрерывного математического образования, 2000. - 960 с.

6.Погорілий С.Д. Програмне конструювання: Підручник / За ред. О.В. Третяка. - 2-е вид. - К.: Видавничо-поліграфічний центр «Київський університет», 2005. - 483 с.

7. Погорілий С.Д., Калита Д.М. Оптимізація алгоритмів маршрутизації з використанням систем алгоритмічних алгебр // УсиМ. - 2000. - № 4. - С. 20 - 30.

8. Многоуровневое структурное проектирование программ. Теоретические основы, инструментарий / Е.Л. Ющенко, Г.Е. Цейтлин, В.П. Г рицай и др. - М.: Финансы и статистика, 1989. - 342 с.

9. Богачёв К.Ю. Основы параллельного программирования. - М.: БИНОМ. Лаборатория знаний, 2003. - 342 с.

Стаття надійшла до редакції 28.05.2009

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