Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt
Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt
Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt
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