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.

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

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

Saved successfully!

Ooh no, something went wrong!