Broadcast (paralelní vzor) - Broadcast (parallel pattern)

Přenos je primitivní kolektivní komunikace v paralelní programování k distribuci programovacích pokynů nebo dat do uzlů v klastru je to reverzní operace redukce.[1] Vysílací operace je široce používána v paralelních algoritmech, jako je násobení matice-vektor,[1] Gaussova eliminace a nejkratší cesty.[2]

The Rozhraní pro předávání zpráv implementuje vysílání v MPI_Bcast.[3]

Definice

Zpráva délky n by měl být distribuován z jednoho uzlu do všech ostatních uzly.

je čas potřebný k odeslání jednoho bajtu.

je čas potřebný pro cestu zprávy do jiného uzlu, bez ohledu na jeho délku.

Proto je čas odeslat balíček z jednoho uzlu do druhého .[1]

je počet uzlů a počet procesorů.

Vysílání binomického stromu [4]

Obrázek algoritmu binomického stromového vysílání
Vysílání binomického stromu

S Binomial Tree Broadcast se odesílá celá zpráva najednou. Každý uzel, který již zprávu přijal, ji odešle dále. To roste exponenciálně, protože v každém kroku se počet odesílajících uzlů zdvojnásobí. Algoritmus je ideální pro krátké zprávy, ale u delších zpráv klesá, protože v době, kdy dojde k prvnímu přenosu a je zaneprázdněn pouze jeden uzel.

Odeslání zprávy do všech uzlů trvá čas, jehož výsledkem je doba běhu

Zpráva Mid := uzel číslop := číslo z uzly-li id > 0      blocking_receive Mpro (i := strop(log_2(p)) - 1; i >= 0; i--)    -li (id % 2^(i+1) == 0 && id + 2^i <= p)        poslat M na uzel id + 2^i

Lineární potrubní vysílání[4]

Vizualizace algoritmu Pipeline Broadcast
Pipeline Broadcast

Zpráva je rozdělena na balíčky a posílat po částech z uzlu do uzlu . Čas potřebný k distribuci první části zprávy je čímž je čas potřebný k odeslání balíčku z jednoho procesoru do druhého.

Odeslání celé zprávy trvá .

Optimální je vybrat si což má za následek dobu běhu přibližně

Doba běhu závisí nejen na délce zprávy, ale také na počtu procesorů, které hrají role. Tento přístup svítí, když je délka zprávy mnohem větší než množství procesorů.

Zpráva M := [m_1, m_2, ..., m_n]id = uzel číslopro (i := 1; i <= n; i++) v paralelní    -li (id != 0)        blocking_receive m_i            -li (id != n)        poslat m_i na uzel id + 1

Pipelined Binary Tree Broadcast[2][4]

Vizualizace algoritmu Pipelined Binary Tree Broadcast
Pipeline Pipeline Binary Tree Broadcast

Tento algoritmus kombinuje Binomial Tree Broadcast a Linear Pipeline Broadcast, díky čemuž algoritmus funguje dobře pro krátké i dlouhé zprávy. Cílem je, aby co nejvíce uzlů pracovalo a přitom byla zachována schopnost rychlého odesílání krátkých zpráv. Dobrým přístupem je použití Fibonacciho stromy pro rozdělení stromu, které jsou dobrou volbou, protože zprávu nelze odeslat oběma dětem současně. Výsledkem je a binární strom struktura.

V následujícím budeme předpokládat, že komunikace je plny Duplex. The Fibonacciho strom struktura má hloubku asi čímž the Zlatý řez.

Výsledná doba běhu je . Optimální je .

To má za následek běh .

Zpráva M := [m_1, m_2, ..., m_k]pro i = 1 na k     -li (hasParent())        blocking_receive m_i            -li (hasChild(left_child))        poslat m_i na left_child            -li (hasChild(right_child))        poslat m_i na right_child

Vysílání Two Tree (23-Broadcast) [5][6][7]

Vizualizace vysílání ve dvou stromech

Definice

Tento algoritmus si klade za cíl zlepšit některé nevýhody modelů stromové struktury s plynovody. Normálně v modelech stromové struktury s kanály (viz metody výše) dostávají listy pouze svá data a nemohou přispívat k odesílání a šíření dat.

Algoritmus současně používá dva binární stromy komunikovat přes. Tyto stromy se budou nazývat stromy A a B. Strukturálně v binární stromy existuje relativně více ponechaných uzlů než vnitřních uzlů. Základní myšlenkou tohoto algoritmu je vytvořit listový uzel stromu A jako vnitřní uzel stromu B. Má také stejnou technickou funkci na opačné straně od stromu B ke stromu A. To znamená, že dva pakety jsou odesílány a přijímány vnitřními uzly a listy v různých krocích.

Konstrukce stromu

Příklady stromových struktur v závislosti na počtu procesorů

Počet kroků potřebných ke konstrukci konstrukce dvou paralelních prací binární stromy závisí na počtu procesorů. Stejně jako u jiných struktur může být jedním procesorem kořenový uzel, který odesílá zprávy do dvou stromů. Není nutné nastavovat kořenový uzel, protože není těžké rozpoznat směr odesílání zpráv dovnitř binární strom je obvykle shora dolů. Počet procesorů pro sestavení dvou není nijak omezen binární stromy. Nechť je výška kombinovaného stromu h = ⌈Log (p + 2)⌉. Stromy A a B mohou mít výšku . Zvláště, pokud odpovídá počet procesorů , můžeme z obou stran vytvořit stromy a kořenový uzel.

Abychom tento model vytvořili efektivně a snadno s plně sestaveným stromem, můžeme použít dva způsoby zvané „Posun“ a „Zrcadlení“, abychom získali druhý strom. Předpokládejme, že strom A je již modelován a strom B má být konstruován na základě stromu A. Předpokládáme, že máme procesory objednané od 0 do .

Řazení

Konstrukce stromu pomocí funkce „Shifting“

Metoda „Posun“ nejprve zkopíruje strom A a přesune každý uzel o jednu pozici doleva, aby získal strom B. Uzel, který bude umístěn na -1, se stane podřízeným procesorem .

Zrcadlení

Konstrukce stromu pomocí zrcadlení

„Zrcadlení“ je ideální pro sudý počet procesorů. S touto metodou může být strom B snadněji sestrojen stromem A, protože neexistují žádné strukturální transformace za účelem vytvoření nového stromu. Symetrický proces navíc usnadňuje tento přístup. Tato metoda zvládne i lichý počet procesorů, v tomto případě můžeme nastavit procesor jako kořenový uzel pro oba stromy. U zbývajících procesorů lze použít funkci „Mirroring“.

Zbarvení

Musíme najít plán, abychom se ujistili, že žádný procesor nemusí v kroku posílat ani přijímat dvě zprávy ze dvou stromů. Okraj, je komunikační spojení pro připojení dvou uzlů, a může být označen jako 0 nebo 1, aby se zajistilo, že každý procesor může střídat mezi 0 a 1 označenými okraji. Okraje A a B lze obarvit dvěma barvami (0 a 1) tak, že

  • v procesorech není připojen žádný procesor k jeho nadřazeným uzlům A a B pomocí hran stejné barvy -
  • v podřízených uzlech není připojen žádný procesor A nebo B pomocí hran stejné barvy.[7]

V každém sudém kroku jsou hrany s 0 aktivovány a hrany s 1 jsou aktivovány v každém lichém kroku.

Časová složitost

V tomto případě je počet paketů k rozdělen na polovinu pro každý strom. Oba stromy spolupracují na celkovém počtu paketů (horní strom + spodní strom)

V každém binárním stromu trvá odeslání zprávy do jiných uzlů kroky, dokud procesor nemá v kroku alespoň paket . Proto můžeme vypočítat všechny kroky jako .

Výsledná doba běhu je . (Optimální )

To má za následek dobu běhu .

ESBT-Broadcasting (Edge-disjoint Spanning Binomial Trees)[8][9]

V této části bude představen další vysílací algoritmus se základním modelem telefonní komunikace. A Hypercube vytváří síťový systém s . Každý uzel je reprezentován binárním v závislosti na počtu rozměrů. Zásadně je založen na ESBT (Edge-disjoint Spanning Binomial Trees) hyperkrychlové grafy, potrubí zprávy jsou rozděleny na pakety) a binomické stromy. Procesor cyklicky šíří pakety do kořenů ESBT. Kořeny ESBT vysílají data s binomickým stromem. Opustit vše z , jsou vyžadovány kroky, protože všechny pakety jsou distribuovány pomocí . Trvá dalších d kroků, dokud poslední listový uzel neobdrží paket. Celkem jsou nutné kroky k vysílání zpráva prostřednictvím ESBT.

Výsledná doba běhu je . .

To má za následek dobu běhu .

Viz také

Reference

  1. ^ A b C Kumar, Vipin (2002). Úvod do paralelního výpočtu (2. vyd.). Boston, MA, USA: Addison-Wesley Longman Publishing Co., Inc. str. 185, 151, 66. ISBN  9780201648652.
  2. ^ A b Bruck, J .; Cypher, R .; Ho, C-T. (1992). Msgstr "Vysílání více zpráv s generalizovanými stromy Fibonacci". [1992] Sborník ze čtvrtého sympozia IEEE o paralelním a distribuovaném zpracování. 424–431. doi:10.1109 / SPDP.1992.242714. ISBN  0-8186-3200-3.
  3. ^ MPI: Rozhraní pro předávání zpráv StandardVersion 3.0, Forum Passing Interface Forum, s. 148, 2012
  4. ^ A b C Michael Ikkert, T. Kieritz, P. Sanders Parralele Algorithme - skript (Německy), Karlsruhe Institute of Technology, s. 29-32, 2009
  5. ^ Michael Ikkert, T. Kieritz, P. Sanders Parralele Algorithme - skript (Německy), Karlsruhe Institute of Technology, str. 33–37, 2009
  6. ^ P. Sanders [1] (Německy), Karlsruhe Institute of Technology, str. 82-96, 2018
  7. ^ A b Sanders, Peter; Speck, Jochen; Träff, Jesper Larsson (2009). Msgstr "Algoritmy se dvěma stromy pro vysílání, redukci a skenování v plné šířce pásma". Parallel Computing. 35 (12): 581–594. doi:10.1016 / j.parco.2009.09.001. ISSN  0167-8191.
  8. ^ Michael Ikkert, T. Kieritz, P. Sanders Parralele Algorithme - skript (Německy), Karlsruhe Institute of Technology, str. 40–42, 2009
  9. ^ P. Sanders [2] (Německy), Karlsruhe Institute of Technology, s. 101-104, 2018