2009-11-30 30 views
0

J'ai un ordinateur x86-64 sous Linux que je voudrais compléter avec d'autres machines Linux non-x86-64.Est-il possible de mettre en place un cluster d'architecture mixte?

Est-il possible de tirer parti de la puissance de calcul d'une autre machine sans qu'il s'agisse de la même architecture? En guise de deuxième question, quel type de performance augmente-t-il et nécessite-t-il un logiciel spécialisé pour fonctionner? Ou est-ce que Linux peut simplement faire abstraction du cluster/des machines supplémentaires en tant que CPU supplémentaires?

+0

Veuillez clarifier la question. Par exemple, si vous voulez un cluster de compilation, vous pouvez configurer un compilateur qui compile vers la cible de CPU que vous voulez, indépendamment de ce qu'ils exécutent réellement. –

Répondre

1

Comme l'a dit Henri, vous avez besoin du logiciel pour prendre en charge les différentes représentations. Cela exclut MPI, mais par exemple NWS (que vous pouvez utiliser avec Python, R, Matlab, ...) devrait fonctionner.

2

En fonction du logiciel, il peut être extrait ou non. Faire de telles choses implique généralement des appels de procédure à distance et selon la bibliothèque que vous utilisez, il peut ou ne peut pas être extrait.

Un exemple de base est de faire un RPC et de donner un entier comme argument. Certaines architectures utilisent big-endian, d'autres utilisent little-endian et votre bibliothèque RPC doit en prendre soin.

0

Vous ne devriez pas compter sur ce fait de toute façon. Vous devez disposer de la couche d'abstraction droite (par exemple, la communication sur IP est un bon point de départ). Ceci est en partie nécessaire pour permettre "des mises à niveau de service", c'est-à-dire d'ajouter des machines plus récentes qui peuvent ou non être de la même architecture que la configuration de cluster de départ. Imaginez-vous aller chez votre patron: "Eh bien, nous devons réduire le service complet parce que nous avons ces nouvelles machines de fantaisie ...". (et je peux entendre la réponse haut et fort)

Bien sûr, si les préoccupations d'un environnement de production est hors de portée dans votre cas spécifique, vous pouvez ne pas tenir compte de mon devis. Disons simplement que ce serait une exigence typique pour tout grand déploiement. Enfin, il est toujours plus facile de traiter un cluster symétrique (la maintenance est simplifiée) mais là encore, un cluster asymétrique peut être un «tremplin» lorsqu'il s'agit d'une «mise à niveau progressive».

Clarification: Je n'ai jamais esquivé à abstraction tout tout. Clarification # 2: par "architecture" Je suppose "l'architecture du processeur", c'est-à-dire pas "l'architecture du système global". En ce qui concerne la deuxième partie de votre question, tout dépend de l'architecture de votre logiciel.

+0

Je ne suis pas d'accord. Dans un cluster HPC, vous ne vous attendez pas à ce que votre spécification modifie subitement _the architecture_. Bien sûr, peut-être un type de cpu ou une fréquence, une quantité de bélier, ... mais vous ne pouvez pas et ne devez pas tout abstraire. Ou alors, comment travaillez-vous sans tcp/ip ou d'ailleurs l'électricité? –

+0

@Dirk: Je me demande ce qui vous a fait penser que j'étais irréaliste à cet extrême: pourriez-vous me montrer la phrase qui a évoqué cette pensée pour que je puisse la mettre à jour immédiatement? – jldupont