Strona projektu MPI

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); ...