Construire un «superordinateur» improvisé en connectant un certain nombre de PC usés dans un réseau local

Je suis en train de développer un programme informatique simple, mais à processeur, que j'utilise pour la recherche scientifique. Il serait vraiment utile d'avoir plus de vitesse de traitement. À l'heure actuelle, je lance Mac OS X 10.5.7 sur un Intel Core Duo de 2 GHz et mon programme fonctionne très lentement. Pendant un certain temps, je l'exécutais sur un ordinateur portable assez ancien avec Ubuntu et il fonctionnait 20 fois plus vite.

Ce que je pense, c'est que je pourrais brancher sur LAN un tas de PC de seconde main bon marché exécutant linux et utiliser des programmes threadés pour distribuer la charge de traitement sur tous les ordinateurs. Mon programme est embarrassant en parallèle , c'est-à-dire que l'augmentation linéaire du nombre de noyaux devrait conduire à des augmentations presque linéaires de la vitesse de calcul. En outre, la taille du programme, les exigences de mémoire et les exigences en matière de HD sont pratiquement nulles, et la quantité d'informations à transmettre à la routine principale (entre ordinateurs) est pratiquement nulle.

Donc, ce que je me demande, quel type de blocs routiers risque-t-il de mettre en œuvre? Devrait-il être plutôt simple ou non? Cela va-t-il même fonctionner? De plus, en achetant les ordinateurs usés, quels facteurs devrais-je prendre en compte? Pour mes besoins, est-ce un dual core 2GHz ~ = to a single core 4GHz? Je considère que, en règle générale, je devrais aller avec les machines les moins chères à microprocesseurs que je peux trouver (le meilleur rapport coût-coût).

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 / devrait configurer un cluster. Si vous allez pour de nouveaux systèmes, les systèmes multi-sites les moins chers ressemble à un bon pari (si vous recherchez les anciens AVOID PENTIUM IVs, à moins que vous ne souhaitiez chauffer la salle de manière plus efficace que vous ne procéderez. Je considérerais un double core 2 ghz Système légèrement supérieur à un processeur unique de 4 ghz, à moins que vous n'ayez eu un seul fil qui nécessite beaucoup de puissance (ce que vous ne le possédez pas). Je noterais qu'en général, les versions plus récentes des processeurs ordinaires ont généralement tendance à être meilleures que Ceux qu'ils remplacent, surtout récemment, car l'utilisation de l'énergie est devenue un problème. Si je voulais en arriver à la qualité, je regarde les différentes générations de processeurs et les repères pour qu'ils aient 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 minimum d'OS, hors des images standard via le réseau en utilisant PXE pour économiser sur le stockage pour chaque système individuel – puisque vos besoins en RAM sont minimes, vous pourriez probablement avoir l'ensemble du système d'exploitation en ram, puisque Vous l'utilisez uniquement pour une chose

Vous devriez probablement avoir un logiciel capable d'être exécuté sur un cluster (IE, en tenir compte lors de la conception – peut-être avec MPI , avoir la configuration du logiciel de cluster et ainsi de suite. Cela étant dit, j'ai vu des tableaux MASSIVE de Les ordinateurs de base liés ensemble à une université pour un cluster, donc c'est plausible

D'autre part, en considérant la parallélisation massive, c'est votre objectif principal, et vous allez pour des charges de travail massivement parallèles, vous voudrez peut-être envisager des alternatives à un cluster x86. Ubuntu possède un cluster de 48 core qu'ils ont créé à partir de panneaux de développement de bras (I Je pense qu'un groupe de systèmes pi de framboises serait … intéressant et assez performant, si vous ne vous souvenez pas d'une énorme gamme de systèmes peu coûteux et peu coûteux).

Journeyman Geek a de très bons points sur la mise en place de votre propre cluster, mais j'aimerais ajouter, en fonction de votre charge de travail, il est moins coûteux d'utiliser quelque chose comme Elastic Map-Reduce. Si votre charge de travail peut être transformée en un problème Map-Reduce , vous devez l'examiner. Après avoir pris en compte le coût de l'achat des coûts d'ordinateurs, d'électricité, de refroidissement et de maintenance, il est peut-être moins cher / h pour l'exécuter sur Amazon (0,10 $ / h pour le niveau standard le plus bas d'Amazon, 0,045 $ / h si vous utilisez le point actuel Prix ​​de l'instance))

Si vous êtes prêt à faire un peu plus d'efforts, vous pouvez utiliser votre propre moteur de traitement parallèle et utiliser la micro instance pour encore moins cher ($ 0.02 / h pour une instance complète, prix spot spot de $ 0.007 / hr). Le package Map-Reduc de Amazon ne fonctionnera pas. Cela peut être très utile si votre processus est cpu lié à la place si la mémoire liée à mesure que les micro instances sont plus rapides que la petite image standard mais n'ont pas de stockage et moins de ram.

Une autre option que vous souhaitez envisager est d'exécuter votre programme à l'intérieur de BOINC . Cela a l'avantage d'un système existant qui a déjà une part difficile à la distribution et à la collecte de «travaux». Cela vous permet également d'obtenir plus de personnes pour exécuter votre programme. Vous pouvez obtenir des amis ou même des personnes au hasard sur Internet pour exécuter votre programme si vous le faites une annonce assez. Cela vous permet d'avoir un éventail d'ordinateurs (potentiellement) massif pour exécuter des programmes sans coût de démarrage de beaucoup de petits ordinateurs et coûts d'électricité en cours.

Notez que je n'ai jamais programmé sur BOINC, donc la difficulté de le faire est quelque chose que vous allez devoir découvrir. Pour une plate-forme de démarrage cependant, je pense que le temps économisé n'ayant pas à réinventer BOINC équilibrerait la complexité de l'utiliser