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

  1. príprava prostredia (adresáre, Makefile, konfigurácia MPI)
  2. kompilácia a ladenie paralelného programu

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

Spojazdnite MPI:
- nastavte cestu pre mpirun: /work/students/mpi/bin/mpirun
  napríklad spravte si symbolický link v adresári, ktorý sa už nachádza na ceste
- pridajte si do $MANPATH cestu /work/students/mpi/man
  napríklad skopírujte si riadok odo mňa: ~dobrucky/.cshrc

2.
Skompilujte príkazom make.
Dalo sa to aj inak - bez Makefile, a to prikazom mpicc -o calcpim calcpim.c dboard.o.

Zadajte na vykonanie skompilovaný program: mpirun -np 2 calcpim.

Problémy:
- rehash
- nesedia cesty (konfiguračný súbor ...) (man mpi)
- arrakis si pýta heslo (vygenerujte si osobné kľúče)

Potom zvýšte počet procesov MPI (-np x) a pozorujte spomalenie vykonania programu. Čo ho spôsobilo?

Úloha:
to isté vykonať na skutočne paralelnom MPI (NETBSD: sc05, sc06, ...). Vtedy ale treba v Makefile zmeniť cestu ku MPI inštalácii (~dobrucky/SUN.mpich) a tiež odtiaľ zavolať mpirun - napr. spraviť si symbolický link
ln -s ~dobrucky/SUN.mpich/bin/mpirun mpirunsun
Ak chcete využiť viac než 2 SUN-y, je potrebné začínať na nejakom 'slc' a nie na sc05, sc06, pretože oni sa navzájom 'nevidia' (oddeľuje ich arrakis, skúste ping).

Úloha 2:
pokúsiť sa to vykonať na heterogénnom MPICH (arrakis, sc05, sc06, slc10...). Vtedy ale treba prepracovať Makefile a pozrieť príručku MPI.

Zdrojáky si môžete stiahnuť aj tu.


poznámky k inštalácii MPICH (1.2.1) na sc05 (NetBSDSparc):
- vyžaduje to asi 30MB voľného disku a najmä aspoň 5500 voľných inodov (fajlov)
- upraviť súbor romio/adio/common/ad_fstype.c ako pri arrakisovi
- v súbore mpid/ch_p4/p4/usc/usc.c pridať definiciu NETBSD v riadku 91:
  defined(I86_SOLARIS) || defined(NETBSD) || \
podobne doplniť riadok 201
a ešte za riadok 11 pridať niečo ako:
  (#if defined(NETBSD) | #include <sys/time.h> | #endif)
- nedokončí sa síce podpora pre C++, ale dá sa to nainštalovať

./configure -prefix=$HOME/SUN.mpich
make
make install

joe ~/SUN.mpich/share/machines.netbsd ... pridať sc06
  prípadne pridať aj slcXX, ale vtedy je potrebné spustiť mpirun z nejakého slcXX a nie zo scXX

 po inštalácii som mal:
Filesystem  blocks   quota   limit   grace   files   quota   limit grace
     /home   52002*  20000   71000   7days    6089*   4000    6100 7days
 a po zmazani zdrojákov aj inštalácie:
Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
     /home   10379   20000   71000             638    4000    6100    

poznámky k inštalácii MPICH (1.2.1) na dec3 (NETBSDPMAX):
- všetky ako na sc05 (NetBSDSparc)
- neprepísal machine.netbsd, keďže si mylne myslí, že je to tá istá architektúra ->nie je => budú problémy pri heterogénnom spúšťaní aplikácií

./configure -prefix=$HOME/DEC.mpich
make
make install         alebo: make instal PREFIX=/home/guests/dobrucky/DEC.mpich

joe ~/DEC.mpich/share/machines.netbsd ... vyhodiť sc05 a vložiť dec3, decdl1 a decdl3