Posiadam heterogeniczny klaster obliczeniowychciałby wykonywać równoległe zadania obliczeniowe przy użyciu OpenMPI. Ponieważ nie wszystkie węzły w klastrze mogą uruchamiać ten sam plik wykonywalny (z racji tego, że są heterogeniczne), chciałbym, aby niektóre węzły kompilowały własną wersję programu i miały otwarty MPI wywoływać ten plik wykonywalny na tych węzłach. Moje pierwsze pytanie dotyczy tego, czy OpenMPI umożliwia tego typu obliczenia w heterogenicznych architekturach.
Jeśli tak, moje drugie pytanie brzmi: jak określić, które pliki wykonywalne mają być uruchamiane na których węzłach. Na przykład powiedzmy node0
, node1
, i node2
może uruchomić plik wykonywalny prog1
i node3
, node4
, i node5
może uruchomić plik wykonywalny prog2
, gdzie prog1
i prog2
są tym samym programem, ale skompilowane dla różnych architektur korzystających z mpicc
lub mpic++
kompilatory opakowań.
Gdybym chciał uruchomić ten program równolegle we wszystkich węzłach, zrobiłbym:
mpirun -n 3 --hosts node0,node1,node2 prog1 : -n 3 --hosts node3,node4,node5 prog2
Jeśli nie, to co zrobiłbym, aby osiągnąć ten efekt? To post wskazuje, że heterogeniczna obsługa klastrów jest obsługiwana przez OpenMPI, ale muszę zbudować OpenMPI z --enable-heterogeneous
flaga. Nie jestem pewien, jak to zrobić, ponieważ w moim klastrze działa ArchLinux, a ja zainstalowałem OpenMPI pacman
.
Odpowiedzi:
1 dla odpowiedzi № 1Uwaga jest literówka (--host
nie wymaga zakończenia s
), więc twoje polecenie powinno być
mpirun -n 3 --host node0,node1,node2 prog1 : -n 3 --host node3,node4,node5 prog2
--enable-heterogeneous
jest potrzebny, więc Open MPI może działać heterogeniczniesystemy (na przykład między procesorami Intel x86_64 (little endian) i sparcv9 (big endian)). Jeśli OpenMPI (pochodzący z ArchLinux) nie został skonfigurowany z tą flagą, powinieneś odbudować ten pakiet. inną opcją jest przebudowanie Open MPI i zainstalowanie go w alternatywnym katalogu.
Last but not least, heterogeniczne wsparcie jest (bardzo) lekko testowane i gorąco zachęcam do korzystania z najnowszej serii Open MPI 3.0.