03.07.2013 Views

Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt

Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt

Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

30 Hoofdstuk 3. Het netwerkmodel<br />

3.4.2 All-to-all broadcast<br />

E<strong>en</strong> all-to-all broadcast of multinode broadcast is e<strong>en</strong> veralgem<strong>en</strong>ing van de one-to-all broadcast,<br />

waarbij elke processor gelijktijdig e<strong>en</strong> one-to-all broadcast uitvoert. E<strong>en</strong> processor stuurt<br />

dezelfde boodschap van grootte m naar alle andere processor<strong>en</strong>, maar verschill<strong>en</strong>de processor<strong>en</strong><br />

stur<strong>en</strong> verschill<strong>en</strong>de boodschapp<strong>en</strong>. De duale bewerking is multinode accumulation, waarbij<br />

elke processor de bestemming is van e<strong>en</strong> single-node accumulation.<br />

Deze communicatiepatron<strong>en</strong> word<strong>en</strong> o.m. gebruikt bij parallelle algoritm<strong>en</strong> voor matrixbewerking<strong>en</strong>,<br />

zoals matrixverm<strong>en</strong>igvuldiging, <strong>en</strong> bij reductie <strong>en</strong> het bepal<strong>en</strong> van prefixsomm<strong>en</strong>.<br />

E<strong>en</strong> e<strong>en</strong>voudige manier om e<strong>en</strong> all-to-all broadcast uit te voer<strong>en</strong> bestaat in het uitvoer<strong>en</strong> van<br />

p one-to-all broadcasts, één die in elke processor start. Wanneer dit e<strong>en</strong>voudigweg rechtlijnig<br />

geïmplem<strong>en</strong>teerd wordt, leidt deze b<strong>en</strong>adering op sommige architectur<strong>en</strong> tot e<strong>en</strong> communicatietijd<br />

van p maal de tijd voor e<strong>en</strong> one-to-all broadcast. Maar dikwijls is het mogelijk om de<br />

communicatieverbinding<strong>en</strong> van het netwerk efficiënter te gebruik<strong>en</strong> <strong>en</strong> de one-to-all broadcasts<br />

gelijktijdig te lat<strong>en</strong> uitvoer<strong>en</strong>. Daarbij probeert m<strong>en</strong> ook om boodschapp<strong>en</strong> die over hetzelfde<br />

pad gestuurd word<strong>en</strong>, sam<strong>en</strong> te voeg<strong>en</strong> tot één <strong>en</strong>kele boodschap (met als grootte de som van<br />

groottes van de individuele boodschapp<strong>en</strong>) <strong>en</strong> dus tegelijkertijd te stur<strong>en</strong>.<br />

All-to-all broadcast op e<strong>en</strong> ring<br />

In het eerder gezi<strong>en</strong>e algoritme voor one-to-all broadcast op e<strong>en</strong> ring zijn slechts twee communicatieverbinding<strong>en</strong><br />

terzelfdertijd actief tijd<strong>en</strong>s elke stap. Bij all-to-all broadcast kunn<strong>en</strong> alle<br />

verbinding<strong>en</strong> de ganse tijd actief gehoud<strong>en</strong> word<strong>en</strong>, omdat we er voor kunn<strong>en</strong> zorg<strong>en</strong> dat elke<br />

processor op elk mom<strong>en</strong>t informatie heeft die hij kan doorgev<strong>en</strong>. Dit werkt als volgt.<br />

In de eerste stap stuurt elke processor Pi zijn eig<strong>en</strong> boodschap door naar zijn buur Pi+1. In de<br />

volg<strong>en</strong>de stapp<strong>en</strong> stuurt processor Pi alle binn<strong>en</strong>kom<strong>en</strong>de boodschapp<strong>en</strong> van zijn andere buur<br />

Pi−1 door naar Pi+1. Dit duurt totdat alle boodschapp<strong>en</strong> overal verspreid zijn. Dit algoritme is te<br />

beschouw<strong>en</strong> als e<strong>en</strong> soort pipelining van meerdere one-to-all broadcasts.<br />

Doordat de communicatie circulair in één richting verloopt, ontvangt elke processor de p − 1<br />

vereiste boodschapp<strong>en</strong> van de andere processor<strong>en</strong> in p − 1 stapp<strong>en</strong>. De totale communicatietijd<br />

is dus Θ(mp).<br />

All-to-all broadcast op e<strong>en</strong> rooster met wraparound<br />

Ook hier is het algoritme gebaseerd op het algoritme voor all-to-all broadcast op e<strong>en</strong> ring <strong>en</strong><br />

werkt het in twee fas<strong>en</strong>.<br />

In fase 1 doet elke processor Pi, j e<strong>en</strong> all-to-all broadcast van zijn eig<strong>en</strong> boodschap op rij i. Op<br />

die manier verzamelt elke processor de √ p boodschapp<strong>en</strong> van grootte m van zijn eig<strong>en</strong> rij. Vervolg<strong>en</strong>s<br />

word<strong>en</strong> op elke processor de binn<strong>en</strong>gekom<strong>en</strong> boodschapp<strong>en</strong> sam<strong>en</strong>gesteld tot e<strong>en</strong> boodschap<br />

van m √ p lang. In fase 2 doet elke processor Pi, j dan e<strong>en</strong> all-to-all broadcast van zijn<br />

<strong>Algoritm<strong>en</strong></strong> <strong>en</strong> Datastructur<strong>en</strong> <strong>III</strong> Veerle.Fack@UG<strong>en</strong>t.be

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!