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.
28 Hoofdstuk 3. Het netwerkmodel<br />
parallelle algoritm<strong>en</strong> in het netwerkmodel, omdat bij de gegev<strong>en</strong>suitwisseling communicatievertraging<strong>en</strong><br />
kunn<strong>en</strong> ontstaan. Er zijn <strong>en</strong>kele veelvoorkom<strong>en</strong>de basispatron<strong>en</strong> van interprocessorcommunicatie,<br />
die gebruikt word<strong>en</strong> als bouwst<strong>en</strong><strong>en</strong> voor e<strong>en</strong> veelheid van parallelle algoritm<strong>en</strong>.<br />
In deze paragraaf introducer<strong>en</strong> we <strong>en</strong>kele standaard communicatiepatron<strong>en</strong> <strong>en</strong> besprek<strong>en</strong> hun efficiënte<br />
implem<strong>en</strong>tatie op standaard netwerktopologieën (zoals ring, rooster met wrap-around <strong>en</strong><br />
hyperkubus).<br />
We noter<strong>en</strong> door p het aantal processor<strong>en</strong> <strong>en</strong> door m de l<strong>en</strong>gte van de uit te wissel<strong>en</strong> gegev<strong>en</strong>s.<br />
We veronderstell<strong>en</strong> dat de verbinding<strong>en</strong> tuss<strong>en</strong> de processor<strong>en</strong> bidirectioneel zijn, m.a.w. dat<br />
twee rechtstreeks verbond<strong>en</strong> processor<strong>en</strong> tegelijkertijd boodschapp<strong>en</strong> van grootte m naar elkaar<br />
kunn<strong>en</strong> stur<strong>en</strong>. Verder veronderstell<strong>en</strong> we dat e<strong>en</strong> processor slechts op e<strong>en</strong> van zijn verbinding<strong>en</strong><br />
tegelijk e<strong>en</strong> boodschap kan stur<strong>en</strong>. Analoog kan e<strong>en</strong> processor maar op e<strong>en</strong> van zijn verbinding<strong>en</strong><br />
tegelijk e<strong>en</strong> boodschap ontvang<strong>en</strong>. Maar e<strong>en</strong> processor kan wel tegelijkertijd op e<strong>en</strong> van van zijn<br />
verbinding<strong>en</strong> e<strong>en</strong> boodschap stur<strong>en</strong> <strong>en</strong> op e<strong>en</strong> andere verbinding e<strong>en</strong> boodschap ontvang<strong>en</strong>.<br />
Voor veel van de hier beschrev<strong>en</strong> bewerking<strong>en</strong> bestaan duale <strong>en</strong> andere aanverwante bewerking<strong>en</strong><br />
die zeer analoog aan de oorspronkelijke bewerking<strong>en</strong> kunn<strong>en</strong> word<strong>en</strong> uitgevoerd. De duale van<br />
e<strong>en</strong> communicatiebewerking is het teg<strong>en</strong>overgestelde van de oorspronkelijke bewerking <strong>en</strong> kan<br />
uitgevoerd word<strong>en</strong> door de richting <strong>en</strong> de volgorde van de boodschapp<strong>en</strong> in de oorspronkelijke<br />
bewerking om te ker<strong>en</strong>. Waar toepasselijk zull<strong>en</strong> we dergelijke bewerking<strong>en</strong> vermeld<strong>en</strong>.<br />
3.4.1 One-to-all broadcast<br />
In e<strong>en</strong> one-to-all-broadcast of single-node-broadcast stuurt één processor e<strong>en</strong> id<strong>en</strong>tieke boodschap<br />
naar elke andere processor. Aanvankelijk heeft <strong>en</strong>kel de bronprocessor de boodschap van<br />
grootte m; na de broadcast zijn er p kopieën van de boodschap, nl. e<strong>en</strong> kopie op elke processor.<br />
De duale bewerking hiervan is e<strong>en</strong> single-node accumulation. Hierbij heeft elke processor<br />
aanvankelijk e<strong>en</strong> boodschap van grootte m. Eén van de processor<strong>en</strong> (de bronprocessor) verzamelt<br />
deze informatie van alle andere processor<strong>en</strong> <strong>en</strong> bundelt die tot één boodschap van grootte m (via<br />
e<strong>en</strong> associatieve operator). Merk op dat de sam<strong>en</strong>gevoegde informatie na de bewerking grootte m<br />
heeft. Dit betek<strong>en</strong>t dat single-node accumulation kan word<strong>en</strong> gebruikt om de som, het product,<br />
het maximum of het minimum van e<strong>en</strong> rij getall<strong>en</strong>, of elke andere paarsgewijze bewerking op<br />
e<strong>en</strong> rij elem<strong>en</strong>t<strong>en</strong> uit te voer<strong>en</strong>.<br />
Deze communicatiepatron<strong>en</strong> word<strong>en</strong> o.m. gebruikt in parallelle algoritm<strong>en</strong> voor matrix-vectorverm<strong>en</strong>igvuldiging,<br />
Gauss-eliminatie, het bepal<strong>en</strong> van kortste pad<strong>en</strong>, het inproduct van vector<strong>en</strong>.<br />
One-to-all broadcast op e<strong>en</strong> ring<br />
De bronprocessor stuurt zijn boodschap naar zijn twee bur<strong>en</strong>, in twee ope<strong>en</strong>volg<strong>en</strong>de stapp<strong>en</strong>.<br />
Elke processor ontvangt e<strong>en</strong> boodschap op e<strong>en</strong> van zijn verbinding<strong>en</strong> <strong>en</strong> stuurt deze door naar<br />
zijn buur op de andere verbinding. Dit proces wordt herhaald totdat alle processor<strong>en</strong> e<strong>en</strong> kopie<br />
van de boodschap ontvang<strong>en</strong> hebb<strong>en</strong>.<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