Cieľ: vypočítať číslo PI=3.1415926...

  1. príprava prostredia (adresáre, Makefile)
  2. kompilácia (na každej architektúre zvlášť)
  3. ladenie paralelného programu

1.
Skopírujte si celý adresár ~dobrucky/calcpi (3 súbory) niekam k sebe, trebárs tiež priamo do domovského adresára.

Editujte súbor Makefile. Nastavte si cestu kam budete ukladať object subory a vykonateľné programy pre PVM.

2.
Skompilujte príkazom make.
Úloha: ako vykonáte kompiláciu na všetkých 3 typoch architektúr bez prihlasovania/odhlasovania respektíve bez preskakovania z okna do okna? (man ssh)

3.
Naštartujte PVM najskôr na jednom stroji (arrakis). Otvorte si druhé okno, kde priamo v shell-i zadáte na vykonanie skompilovaný program calcpi.

Problémy:
- rehash
- nesedia cesty (konfiguračný súbor PVM - 'hostfile' - môže definovať inú cestu ep=...)
  default ep=$HOME/pvm3/bin/$PVM_ARCH:$PVM_ROOT/bin/$PVM_ARCH (man pvmd)
- nespúšťajte program z PVM konzoly (pvm> spawn calcpi)
  Prečo? Bude mať 'master' proces vtedy PVM-rodiča?

Potom pripojte viac procesorov do PVM a pozorujte spomalenie vykonania programu. Čo ho spôsobilo?

Úloha:
skúsiť vyvážiť záťaž podľa "rýchlosti" procesorov:
funkcia pvm_config vráti hodnoty sp pre všetky procesory
a podľa nich potom nastaviť hodnotu darts
predtým treba ešte identifikovať svoj host, a teda svoje sp
  funkciou pvm_tidtohost a prehľadaním tabuľky vrátenej funkciou pvm_config
Alebo menom zisteným funkciou gethostname (man gethostname)
Potom si do hostfile napíšte odhadnuté rýchlosti procesorov, napríklad skopírovaním odo mňa (~dobrucky/hostfile).


Podrobné informácie o algoritme a pôvodné zdrojové kódy nájdete tu. K nim je potrebné spraviť nejaký Makefile a môžete si vyskúšať modifikovaný program.
Pokus s naháňaním presnosti: po 10^9 pokusoch (throws) bolo pi=3.14157621 a pritom po 99.10^7 pokusoch to bolo 3.14158094
Zhrnutie: táto metóda nie je veľmi presná ;-)