10-openmpi, Materiały dydaktyczne, ORiSR
[ Pobierz całość w formacie PDF ]
interface programowania OPENMPI
MPI czyli Message Passing Interface stanowi specyfikację pewnego standardu wysokopoziomowego
protokołu komunikacyjnego i powiązanego z nim interface'u programowania, służącego programowaniu
współbieżnemu. Reprezentuje on znacznie wyższy poziom abstrakcji niż standardowe UNIX System V IPC
czy POSIX Threads.
Początki MPI sięgają lat osiemdziesiątych i stanowią wynik prac zespołu William'a "Bill" Gropp'a
z University of Illinois. Podobne próby i prace podejmowano także i w innych ośrodkach,
wymienić warto w szczególności California Institute of Technology oraz Ohio Supercomputer Center.
W roku 1992, przy okazji konferencji Supercomputing, udało się jej uczestnikom w końcu wypracować porozumienia w tym
zakresie – efektem tego był standard MPI-1, opublikowany w 5 maja 1994. Kolejne pojawiły MPI-1.1, MPI-1.2 aż w końcu
MPI-2. Kompletne specyfikacje standardów pod adresem
Współcześnie istnieje wiele implementacji – z natury są to implementacje typu OPEN, dla języków
programowani C/C++, FORTRAN oraz ADA – w szczególności:
❒OpenMP (Open Multi-Processing), z zasady jest to implementacja nastawiona na wielowątkowość,
równocześnie proces jest traktowany w kategoriach wątku, zatem nie jest to rozwiązanie właściwe dla
środowisk typu Distributed Memory ale Shared;
❒OpenMPI rozwijana głównie przez grupę z Indiana University, realizuje standard MPI-2
❒MPICH2, zarówno o przeznaczeniu dla architektur Shared jak i Distributed Memory, rozwijana
głównie przez Argonne National Labolatory (faktycznie jest to najbardziej pierwotna implementacja
standardu MPI).
Ponieważ jest to oprogramowanie otwarte producenci oprogramowania próbują także na tej podstawie stworzyć własną –
komercyjną – implementację, jak Sun HPC Cluster Tools.
MPI aktualnie stanowi de facto standard dla niekomercyjnych i komercyjnych aplikacji HPC (high-
performance computing).
1
Kryspin Mirota , kmirota@ath.bielsko.pl
interface programowania OPENMPI
Obliczenia Równoległe i Systemy Rozproszone
Kryspin Mirota , kmirota@ath.bielsko.pl
Obliczenia Równoległe i Systemy Rozproszone
interface programowania OPENMPI
Niniejsza część materiałów dotyczy zastosowań
Open MPI: Open Source High Performance Computing
Realizuje ona standard MPI-2. Może być wykorzystywana celem konstruowania
oprogramowania współbieżnego dla architektur SM jak i DM.
Projekt rozwijany jest – aktualnie – przez 9 instytucji:
❒Lawrence Livermore National Laboratory (USA)
❒Distributed Systems Group, University of British Columbia (KANADA)
❒Friedrich-Schiller-Universitat Jena, (NIEMCY)
❒Grid Technology Research Center, AIST (JAPONIA)
❒Platform Computing (USA)
❒Computer Architecture Group, Technische Universtaet Chemnitz (NIEMCY)
❒a ponadto także BULL (USA), Chelsio Communications (USA), Evergrid (USA)
Dodatkowo zaangażowanych jest tu jeszcze 18 firm i instytucji, z czego do bardziej znanych należą:
❒Los Alamos National Laboratory (USA)
❒Cisco Systems, Inc. (USA)
❒Intitut National de Recherche en Informatique et an Automatique (INRIA, FRANCJA)
❒IBM (USA)
❒Oak Ridge National Laboratory (USA)
❒Sun Microsystems (USA)
Obliczenia Równoległe i Systemy Rozproszone
Kryspin Mirota , kmirota@ath.bielsko.pl
2
Kryspin Mirota , kmirota@ath.bielsko.pl
Open MPI: Open Source High Performance Computing
Obliczenia Równoległe i Systemy Rozproszone
interface programowania OPENMPI
Według aktualnego rankingu top500
systemów o największej mocy obliczeniowej
➊Jaguar Cray XT5-HE Cluster, 224.162 6-rdzeniowych procesorach AMD x86_64 Opteron 2600 MHz ,
pracujący pod kontrolą systemu LINUX;
➋Roadrunner BladeCenter QS22/LS21 Cluster, 122.400 procesorów PowerXCell 8i 3200 MHz, pod
kontrolą systemu IBM System Cluster (UNIX'opodobny,POSIX);
➌Kraken XT5 - Cray XT5-HE Cluster, 98.928 6-rdzeniowych procesorów AMD x86_64 Opteron Six
Core 2600 MHz, pracujący pod kontrolą systemu LINUX;
wszystkie one wykorzystują
Open MPI: Open Source High Performance Computing
Obliczenia Równoległe i Systemy Rozproszone
Kryspin Mirota , kmirota@ath.bielsko.pl
3
Kryspin Mirota , kmirota@ath.bielsko.pl
mamy na kolejnych trzech pierwszych miejscach:
Open MPI: Open Source High Performance Computing
Obliczenia Równoległe i Systemy Rozproszone
interface programowania OPENMPI
OpenMPI jako oprogramowanie otwarte ( BSD license) można pobrać w postaci kodu źródłowego z pod
adresu
o rozmiarze 9.49MB, pochodząca z 15 stycznia 2010.
Oczywiście prawidłowe (pełne) przygotowanie do pracy OpenMPI wymaga właściwej konfiguracji wszystkich
węzłów klastra oraz oprogramowania które za pośrednictwem MPI będzie uruchamianie. Ponieważ jednak
tutaj omawiamy użycie OpenMPI więc zagadnienia te zostaną pominięte.
$ tar xzf openmpi-1.4.1.tar.gz
w bieżącym katalogu powstaje podkatalog
./ openmpi-1.4.1
./ openmpi-1.4.1
zawierający kompletne źródła, pliki pomocy i przykładu kodu a także uzupełniania.
Zmieniamy bieżący katalog
cd openmpi-1.4.1
cd openmpi-1.4.1
i uruchamiamy skrypt konfiguracyjny
$ ./configure –prefix=/usr/local/
$ ./configure –prefix=/usr/local/
Jeżeli konfiguracja zakończyła się sukcesem, to
$ make
$ make
$ make install
$ make install
to ostatnie już koniecznie z uprawnieniami root'a.
Obliczenia Równoległe i Systemy Rozproszone
Kryspin Mirota , kmirota@ath.bielsko.pl
4
Kryspin Mirota , kmirota@ath.bielsko.pl
aktualną realizacją jest
Po rozpakowaniu
$ tar xzf openmpi-1.4.1.tar.gz
Obliczenia Równoległe i Systemy Rozproszone
interface programowania OPENMPI
OpenMPI tworzy dowiązania do wrapper'a służącego kompilacji (i konsolidacji) oraz uruchomianiu plików
wykonywalnych za pośrednictwem komunikatora.
Aby sprowadzić poprawność instalacji warto spróbować skompilować któryś z plików źródłowych.
Najprostszym i najmniejszym z nich jest (dla języka C)
./openmpi-1.4/examples/hello_c.c
hello_f90.f90
).
Zanim jednak będziemy mogli skorzystać z wrappera'a należy koniecznie zaktualizować cache konsolidatora,
uruchamiając z prawami root'a
$ ldconfig -v | grep libopen
hello_f77.f
i
hello_f90.f90
$ ldconfig -v | grep libopen
grep
grep
powinien wyświetlić na konsoli w uzyskanym listingu powinna się pojawić linia
libopen-pal.so.0 -> libopen-pal.so.0.0.0
libopen-pal.so.0 -> libopen-pal.so.0.0.0
jest to bliblioteka konsolidowana dynamicznie z wrapper'em niezbędna do jego pracy. Na skutek błędu w
skrypcie instalacyjnym cache nie jest odświeżane i biblioteka ta, mimo że kopiowana na dysk jest
niedostępna.
Kompilację (i konsolidację) najwygodniej wykonać za pomocą
mpicc
mpicc
(opcje zwyczajowe, jak i w
gcc
gcc
i
$ mpicc hello_c.c -o hello
zaś uruchomienie
$ ./hello
$ ./hello
Hello, world, I am 0 of 1
Hello, world, I am 0 of 1
... program po prostu wyświetla informację na iloma procesami (wątkami) zarządza komunikator (tu:
1
) i
jaki jest numer bieżącogo (tu:
0
).
Obliczenia Równoległe i Systemy Rozproszone
Kryspin Mirota , kmirota@ath.bielsko.pl
5
Kryspin Mirota , kmirota@ath.bielsko.pl
./openmpi-1.4/examples/hello_c.c
jest także wersja C++ (
hello_cxx.cc
hello_cxx.cc
) a także dwie FORTRAN'owe (
hello_f77.f
pozostałych)
$ mpicc hello_c.c -o hello
Obliczenia Równoległe i Systemy Rozproszone
[ Pobierz całość w formacie PDF ]