Test wydajnosci implementacji MPI na E6000

Daniel Rychcik
18-05-2001

Przetestowalem nastepujace wersje MPI dostepne w LSW:

(Dokladniejsze informacje pod adresem http://www.hpc.uni.torun.pl/doc/mpi)

Testy przeprowadzalem z uzyciem systemu kolejkujacego (polecenie bsub), po tym jak zostalem upomniany przez administratora, ze uruchamianie zadan "z reki" jest niedozwolone :). Kod zrodlowy programow jest dostepny w pliku MPI-test.tar.gz.

Napisalem nastepujace testy:

send_pairs.c

Program uruchomiony na parzystej liczbie procesorow grupuje je w pary i kazda z nich wysyla do siebie wzajemnie komunikaty o zadanej dlugosci. Ten test sprawdza mozliwosc rownoleglej komunikacji miedzy niezaleznymi grupami procesow.

send_single.c

W tym programie procesy wysylaja do siebie komunikaty cyklicznie: 1 do 2, 2 do 3, ... n-1 do n, n do 1 i tak dalej. Sprawdza on glownie przepustowosc samego kanalu komunikacyjnego.

scatter.c, gather.c, bcast.c

Te testy sprawdzaja szybkosc wykonywania odpowiednich funkcji MPI.

Programy uruchamialem odpowiednio na 4 i 10 procesorach, i w kazdym przypadku testowalem szybkosc dzialania dla komunikatow 256- i 4096-bajtowych. Programy napisalem tak, ze calkowita ilosc przesylanych danych jest w kazdym przypadku identyczna, czyli np. send_pairs.c na 4 procesorach i z buforem 256b wykonuje (10/4)*(4096/256)=40 razy wiecej operacji niz wersja 10 procesorowa z buforem 4096b.

Ilosc 4 i 10 procesorow wybralem dlatego, ze w tym samym czasie czterech innych uzytkownikow liczylo zadania jednoprocesorowe - 16=4+10+2 (dla systemu) wydalo mi sie wielkoscia dobra do testow.

Liczbowe wyniki testow wygladaja nastepujaco:

Powtarzalem testy kilka razy, bo wydaly mi sie troche dziwne, ale z reguly wychodzilo tak samo: w tescie send_pairs.c SUN MPI uwazany za najszybszy przegrywal nawet z MPICHem dzialajacym na gniazdach! W ogole z reguly najszybszy okazywal sie MPICH dzialajacy na pamieci wspolnej. Zaleznosci te widac dobrze na wykresie:



Wnioski:

Jak sie dowiedzialem, takie wyniki moga wynikac z tego, ze SUN MPI jest dostepny w dosc starej wersji, natomiast MPICH byl kompilowany niedawno z najnowszego zrodla.