MPICH
Jest biblioteką, która implementuje standard MPI (Message Passing Interface (MPI). Pozwala na przekazywanie komunikatów wewnątrz procesu obliczeniowego działającego równolegle.
Protokół MPICH przeznaczony jest do sterowania procesem obliczeń równoległych w sieciach rozproszonych. Najnowsza wersja tej biblioteki MPICH3 poza zapewnieniem bardziej wydajnych mechanizmów komunikacji posiada dodatkowo:
-
poprawę stabilności MPICH,
-
całkowicie przebudowaną infrastrukturę RMA (Remote Memory Access),
-
poprawę funkcjonalności I/O
-
poprawę bezpieczeństwa
Wersja MPICH 3 jest już zaimplementowana na klastrze obliczeniowym bluocean.
Uruchamianie zadań w oparciu o MPICH 3.2
Postać kontenera:
#!/bin/bash
cTIME=`date +"%Y%m%d%H%M%S"`
f=pe.$1.$cTIME
echo "#!/bin/bash" > $f
echo "#$ -cwd" >> $f
echo "#$ -M uzytkownik@p.lodz.pl" >> $f
echo "#$ -m e" >> $f
echo "#$ -pe mpi 5" >> $f
echo "#$ -q short" >> $f
#echo "#$ -V" >> $f
#echo "#$ -j y" >> $f
#echo "#$ -o $f.out" >> $f
echo "export PATH=/opt/MPI/mpich3.2/bin:$PATH" >> $f
echo "mpiexec program_mpi" >>$f
qsub -S /bin/bash $f
parametr „#$ -pe mpi 5” oznacza deklarację jaki ma być tryb rozłożenia obliczeń oraz ile rdzeni zostanie wykorzystanych do obliczenia.
Zmienne
mpi - definiuje ilość zadeklarowanych procesów uruchamianych na jednym nodzie.
Jeżeli ilość zadeklarowanych procesów jest wyższa niż posiada nod część zadania uruchamiana jest na kolejnym nodzie.
make = rr (roud robin) – zadania uruchamiane są na nodach w zrównoważony sposób.
smp = pe (pe_slots) – zadania uruchamiane są na jednym nodzie, jeżeli liczba zadeklarowanych procesów jest wyższa niż liczba procesorów noda zadanie nie zostanie uruchomione.