MPI není programovací jazyk. MPI definuje sadu knihovních rutin, které lze volat z programů C a Fortran. Programy MPI obvykle využívají přístup jednoho programu a více dat. Souběžně běží více instancí nebo úrovní MPI stejného programu. Každá pozice počítá jinou část většího problému a používá MPI ke komunikaci dat mezi pozicemi. Z pohledu programátora MPI mohou úrovně běžet na stejném uzlu nebo na různých uzlech; komunikační cesta může být odlišná, ale to je pro program MPI transparentní.
Spouštěcí mechanismy aplikací MPI nejsou součástí standardu. Ukazujeme, jak zacházet s programy Intel MPI na Linuxu, ale většina ostatních distribucí má podobnou sémantiku a podobné vlastnosti. Základní způsob spouštění programu Intel MPI je (s
$ mpirun –n < N > ./prg.x
To bude stačit pro uzel sdílené paměti nebo cluster se standardním systémem správy dávek. Pokud narazíte na níže uvedenou chybu:
mpirun.openmpi: command not found
můžete zkusit nainstalovat níže uvedený balíček podle vaší volby distribuce.
Distribuce | Příkaz |
---|---|
Debian | apt-get install openmpi-bin |
Ubuntu | apt-get install openmpi-bin |
Kali Linux | apt-get install openmpi-bin |
Raspbian | apt-get install openmpi-bin |
Shrnutí
Programovací model MPI se přirozeně hodí pro clustery obsahující koprocesory Intel Xeon Phi. Programátor může urychlit jednotlivé řady MPI přenesením klíčových výpočetních jader na koprocesor. Je však třeba dbát na to, aby nedocházelo ke konfliktům zdrojů a aby se zvýšené množství komunikace amortizovalo. Alternativně má koprocesor vlastnosti pouze jiného uzlu clusteru, i když s jinými výpočetními schopnostmi než hostitel, a úrovně MPI mohou běžet nativně na koprocesoru. Oba přístupy zavádějí nové stupně heterogenity a pravděpodobnost nerovnováhy zátěže jako překážku výkonu.