Pierwszy przykład, który jest omawiany na zajęciach.
W laboratorium zainstalowana jest implementacja
MPICH
w wersji 1.2.6-1.
Kompiluje się skryptem mpicc, którego argumenty są identyczne jak gcc.
Przykład polecenia kompilującego plik greeting.c:
mpicc -Wall -o greeting greeting.c
Programy uruchamia się skryptem mpirun.
Przykład polecenia uruchamiającego 5 kopii (procesów) programu greeting:
mpirun -machinefile machines -np 5 ./greeting
Plik machines powinien zawierać nazwy stacji roboczych, na których ma być
uruchomiony program, np.:
green11
green10
green09
Liczba komputerów nie musi być równa liczbie procesów, które chcemy uruchomić.
Dla każdego uruchamianego nielokalnie procesu zostaniemy poproszeni
o podanie hasła.
Obowiązuje hasło z rainbow dla aktualnie zalogowanego użytkownika.
Żeby nie musieć podawać haseł, należy wykonać instrukcje z pliku key_authorization.sh.
Drugi przykład, implementujący rozproszoną wersję
algorytmu odd-even transposition-sort.
Danych jest n procesorów numerowanych od 0 do n - 1.
Na początku procesor i posiada klucz k(i),
który jest liczbą całkowitą.
Algorytm sortuje klucze, tak aby na końcu ich porządek był zgodny z numeracją
procesorów
k(n - 1) >= ... >= k(1) >= k(0).
Elementarną operacją algorytmu jest
transposition(i, i + 1), która wykonuje
porównanie i ewentualną zamianę kluczy pomiędzy procesorami i oraz
i + 1.
Algorytm wykonuje n kroków numerowanych od 0 do n-1.
W kroku parzystym wykonywane są operacje
transposition(0, 1); transposition(2, 3);
transposition(4, 5); ...
W kroku nieparzystym wykonywane są operacje
transposition(1, 2); transposition(3, 4);
transposition(5, 6); ...