Construire un «superordinateur» improvisé en connectant plusieurs ordinateurs usagés sur un réseau local

4

Je suis en train de développer un programme informatique simple mais exigeant en ressources processeur que j'utilise pour la recherche scientifique. Il serait vraiment utile d'avoir plus de vitesse de traitement. À l'heure actuelle, j'utilise Mac OS X 10.5.7 sur un processeur Intel Core Duo à 2 GHz et mon programme est plutôt lent. Pendant un certain temps, je l’utilisais avec un ordinateur portable considérablement plus ancien avec Ubuntu et cela fonctionnait environ 20 fois plus vite.

Ce que je pense, c'est que je pourrais brancher sur le réseau local un groupe de PC d'occasion sous Linux, et utiliser une programmation en thread pour répartir la charge de traitement sur les ordinateurs. Mon programme est embarrassant en parallèle : une augmentation linéaire du nombre de cœurs devrait entraîner une augmentation presque linéaire de la vitesse de calcul. En outre, la taille du programme, les besoins en mémoire et les besoins en HD sont pratiquement nuls et la quantité d'informations à transmettre de et vers la routine principale (entre ordinateurs) est pratiquement nulle.

Donc, ce que je me demande, c'est quel type de barrage routier est susceptible de faire obstacle à la mise en œuvre de cela? Cela devrait-il être assez simple ou non? Cela fonctionnera-t-il même? En outre, lors de l'achat des ordinateurs usagés, quels facteurs dois-je prendre en compte? Pour mes besoins, est un dual core 2GHz ~ = à un single core 4GHz? Je pense qu'en règle générale, je devrais utiliser les machines à processeurs multicœurs les moins chères que je puisse trouver (meilleur rapport coût / traitement).

Matt Munson
la source
2
Avez-vous envisagé un cluster Beowulf? en.wikipedia.org/wiki/Beowulf_cluster
Piskvor Le
2
Attention à vos fusibles!
Jens Erat

Réponses:

3

Avertissement: la plupart des connaissances ici sont théoriques et doivent être étayées par des faits basés sur des besoins spécifiques

Vous pourriez probablement / devriez créer un cluster. Si vous allez pour les nouveaux systèmes, les moins chers systèmes multi - cœurs sonne comme un bon pari (si vous allez pour les anciens EVITER IVs pentium, sauf si vous voulez chauffer la pièce plus efficacement que vous traitez. Je considérerais un dual core 2 ghz système légèrement meilleur qu’un processeur 4 GHz, à moins que vous ne disposiez d’un seul thread qui nécessite beaucoup de puissance (ce que vous n’aurez pas) .Je noterai que, en général, les versions les plus récentes des processeurs grand public sont généralement meilleures que les versions précédentes. ceux qu’ils remplacent, particulièrement depuis que l’utilisation de l’énergie est devenue un problème.Si je voulais en venir au fond des choses, j’examinerais les différentes générations de processeurs, ainsi que des points de repère permettant à ces derniers de se faire une idée plus claire de l’efficacité. et le pouvoir.

Vous voudrez probablement envisager de démarrer les systèmes de travail avec un système d'exploitation minimal, à partir d'images standard via un réseau utilisant PXE pour économiser sur le stockage de chaque système. En outre, vos besoins en RAM étant minimes, vous pouvez probablement disposer de tout le système d'exploitation, car vous ne l'utilisez que pour une chose

Vous auriez probablement besoin d’un logiciel pouvant être exécuté sur un cluster (IE, tenez-en compte lors de sa conception - peut-être avec MPI , installez-vous le logiciel du cluster, etc.). Cela étant dit, j’ai vu MASRAVE arrays PC de base reliés entre eux dans une université pour un cluster afin que sa plausible

D'autre part, si vous envisagez une parallélisation massive comme objectif principal et si vous optez pour des charges de travail extrêmement parallèles, vous pouvez envisager des alternatives au cluster x86 - ubuntu dispose d'un cluster à 48 cœurs qu'ils ont construit à partir de cartes de développement à bras (I Je pense qu'un groupe de systèmes de framboise pi serait ... intéressant, et assez efficace sur le plan électrique, si vous ne craignez pas une gamme massive de systèmes peu coûteux et bizarres).

Compagnon Geek
la source
1
J'aime l'idée d'un rack d'une centaine de machines Raspberry Pi regroupant des chiffres dans un cluster (un "boisseau" peut-être?).
Shinrai
2

Journeyman Geek a de très bons points sur la configuration de votre propre cluster, mais je voudrais aussi ajouter que, en fonction de votre charge de travail, il sera peut-être moins cher d’utiliser quelque chose comme Elastic Map-Réduire. Si votre charge de travail peut être affectée à un problème de carte-réduction , vous devriez l'examiner. Après avoir pris en compte le coût d'achat des ordinateurs, des coûts d'électricité, de refroidissement et de maintenance, il peut être moins coûteux de le faire fonctionner sur amazon (0,10 USD / h pour le niveau standard le plus bas d'Amazon, 0,045 USD / h si vous utilisez l'emplacement actuel. prix d'instance))

Si vous êtes prêt à faire un peu plus d'effort, vous pouvez utiliser votre propre moteur de traitement parallèle et utiliser l'instance micro pour encore moins cher (0,02 USD / h pour une instance complète, prix au comptant de 0,007 USD / h). Le package Map-Reduce d’Amazon ne fonctionnera pas dessus. Cela peut être très utile si votre processus est lié au cpu si la mémoire liée en tant que micro-instances est plus rapide que la petite image standard mais n’a pas de stockage et moins de RAM.

Scott Chamberlain
la source
Donc, en général, si j'utilise le service amazon, est-ce que je reçois un compte shell pour pouvoir compiler et déboguer mon programme sur leur système cloud, ou comment cela fonctionne-t-il? Je suppose qu'ils fournissent des spécifications pour développer des logiciels afin de tirer parti de leur système distribué?
Matt Munson
Cela dépend si vous utilisez une instance complète ou leur système MapReduce géré. Si vous utilisez leur carte, vous obtenez une application en ligne de commande que vous exécutez localement pour déboguer. Si vous suivez la route "Autre moteur de traitement", vous obtenez une adresse et une clé privée que vous utilisez pour SSH et dont vous avez le contrôle total. Comme je l'ai dit, la méthode de contrôle complet est moins chère mais demande plus de travail de configuration.
Scott Chamberlain
Ils ont un niveau gratuit d'instances EC2 normales sur lesquelles jouer et l'essayer, si vous restez sous un seuil d'utilisation. Mais ils ne disposent pas d'un niveau gratuit Map-Reduce pour l'essayer.
Scott Chamberlain
Mon programme est codé en C ++. Est - aws.amazon.com/elasticmapreduce/faqs/#dev-8 signifie que ce sera beaucoup de travail supplémentaire pour le faire marcher avec MapReduce? Combien de travail devrais-je regarder pour configurer mon propre moteur? Pour ce qui est de la quantité minimale de travail nécessaire pour faire modifier un programme C ++ assez complexe pour une programmation en thread exécutée sous un service de cloud computing, quelle serait la meilleure voie à suivre? devrais-je envisager des services autres que amazon? Je vais essayer le niveau gratuit et voir ce que je suis contre.
Matt Munson
0

Une autre option que vous pouvez envisager consiste à exécuter votre programme dans BOINC . Cela présente l'avantage d'un système existant qui a déjà la partie difficile de la distribution et de la collecte des "emplois". Cela vous permet également de faire en sorte que plus de personnes exécutent votre programme. Vous pouvez faire appel à des amis ou même à des personnes aléatoires sur Internet pour exécuter votre programme si vous en faites la publicité suffisante. Cela vous permet d’avoir un cluster (potentiellement) massif d’ordinateurs sur lequel exécuter des programmes sans le coût de démarrage de nombreux petits ordinateurs et les coûts d’électricité en cours.

Notez que je n’ai jamais programmé sur BOINC, vous devrez donc vous renseigner. Pour une plate-forme de départ cependant, je pense que le gain de temps réalisé en l'absence de réinvention de BOINC compenserait la complexité de son utilisation.

TheLQ
la source