2010-06-17 4 views
4

J'ai écrit du code MPI qui fonctionne parfaitement sur les grandes grappes. Chaque nœud du cluster a la même architecture de CPU et a accès à un système de fichiers en réseau (c'est-à-dire commun) (de sorte que chaque nœud peut exécuter le binaire réel). Mais considérez ce scénario:Possibilité de distribuer un programme MPI (C++) sur Internet plutôt que dans un cluster LAN?

  • J'ai une machine dans mon bureau avec un processeur dual core (intel).
  • J'ai une machine à la maison avec un processeur dual core (amd).

Les deux machines exécutent Linux, et les deux machines peuvent compiler et exécuter localement le code MPI avec succès (c'est-à-dire en utilisant 2 cœurs). Maintenant, est-il possible de relier les deux machines via MPI, de sorte que je puisse utiliser les 4 coeurs, en tenant compte des différentes architectures, et compte tenu du fait qu'il n'y a pas de systèmes de fichiers partagés (en réseau)?

Si oui, comment?

Merci, Ben.

Répondre

5

Il est possible de le faire. La plupart des implémentations MPI vous permettent de spécifier l'emplacement du binaire à exécuter sur différentes machines. Sinon, assurez-vous qu'il est sur votre chemin sur les deux machines. Puisque les deux machines ont le même ordre d'octets, cela ne devrait pas poser de problème. Vous devrez vous assurer que toutes les données d'entrée que les processus individuels lisent sont disponibles dans les deux emplacements.

Il y a beaucoup de complications à faire cela. Vous devez vous assurer que les pare-feu entre les systèmes permettent le démarrage et la communication du processus. La communication entre les machines va être beaucoup plus lente, donc si vous codez une communication lourde ou intolérante à la latence, elle sera probablement assez lente. Il est fort probable que votre temps d'exécution sur les 4 cœurs soit plus long que simplement avec 2 sur une seule machine.

+0

Merci, je vais essayer et si je rencontre des problèmes, je reviendrai à vous :-) –

0

Il n'y a aucune limitation géographique sur l'emplacement des processus. Et comme l'a dit KeithB, il n'est pas nécessaire d'avoir un chemin commun ou même le même binaire sur les deux machines. En fonction de l'implémentation MPI que vous utilisez, vous n'avez même pas besoin de la même endian-ness.

Vous pouvez spécifier exactement le chemin vers le binaire sur chaque machine et avoir également deux binaires indépendants. Cependant, vous devriez noter que le programme sera lent si l'infrastructure de communication entre les deux nœuds n'est pas assez rapide.

Questions connexes