Comment construire un superordinateur en cluster à la maison


Au fond, un superordinateur n'est rien d'autre qu'un ensemble d'ordinateurs de moindre importance reliés entre eux par des câbles très rapides. Chaque ordinateur individuel est appelé un nœud, et chaque câble un lien. Un superordinateur très simple pourrait être simplement votre ordinateur de bureau et votre ordinateur portable reliés entre eux par un câble Ethernet. Cependant, ce n'est pas très utile - donc je'concentrerai le reste de cette réponse sur la façon de construire un superordinateur utile.


D'abord, vous'devrez déterminer à quoi vous voulez l'utiliser - s'agit-il de calculs et de simulations scientifiques qui exécutent plusieurs du même calcul à la fois ? Ou des calculs continus, en temps quasi réel, qui sont publiés sur le Web ? Ou voulez-vous simplement accélérer un jeu vidéo ? Tous ces éléments ont une incidence sur le matériel à acheter et les logiciels à installer, il est donc très important de bien comprendre l'étendue de votre problème dès le départ.

Après cela, vous'devrez acheter le matériel. Dans tous les cas, vous voudrez un processeur avec une vitesse d'horloge élevée - sinon, obtenir plusieurs nœuds est inutile. Si l'utilisation que vous souhaitez en faire implique de nombreuses communications de nœud à nœud, vous aurez besoin de liaisons rapides. Une option est l'Ethernet gigabit ou 10 gigabits - vous devrez acheter des câbles et des cartes réseau compatibles avec ces vitesses. La fibre optique est une autre option. Essayez de connecter la structure physique du réseau de la même manière que votre application l'utilisera. S'agira-t-il de diviser le problème en éléments finis et de faire en sorte que chaque nœud ne communique qu'avec son voisin ? Ou s'agit-il d'un problème map-reduce qui comporte de nombreux nœuds esclaves communiquant uniquement avec un hub central ?


Si votre application stocke beaucoup de calculs intermédiaires, vous voudrez également une grande quantité de RAM par nœud. Si elle va générer beaucoup de données, vous voudrez un serveur de fichiers capable de stocker toute votre production. Si votre application doit fonctionner pendant plusieurs jours sans interruption, envisagez d'acheter une alimentation sans coupure (UPS) pour les composants critiques. De nombreuses applications de longue durée utilisent des points de contrôle, c'est-à-dire la possibilité pour elles de sauvegarder leur état au milieu de l'exécution, pour reprendre en cas de perturbation ou d'arrêt programmé. Si vous prévoyez d'en faire usage, cela sera plus rapide si vous installez suffisamment de stockage permanent sur chaque nœud séparé.


Si votre application effectue simultanément de nombreux petits calculs séparés, elle est un bon candidat pour l'utilisation de GPU à usage général (GPGPU) - voir ci-dessous pour un exemple du logiciel nécessaire. Si vous envisagez de le faire, assurez-vous d'installer des cartes graphiques puissantes qui sont compatibles avec la plateforme GPGPU prévue.

La dernière considération matérielle est l'alimentation et le refroidissement. Les superordinateurs consomment beaucoup d'énergie et génèrent beaucoup de chaleur. S'il'est relativement petit, vous pouvez utiliser la climatisation de votre maison'mais n'oubliez pas que cela augmentera considérablement votre facture d'électricité. Assurez-vous que la puissance maximale de votre maison et de toute prise murale que vous avez l'intention d'utiliser, ainsi que la capacité de votre fusible, sont suffisantes pour supporter le système que vous prévoyez d'utiliser. Méfiez-vous de tout connecter à une seule barre d'alimentation - elles'sont destinées aux lampes et aux grille-pain, pas aux superordinateurs.

Maintenant que vous'avez mis en place tout le matériel, nous devons le configurer pour qu'il fonctionne comme un superordinateur ! La première chose que vous'devrez déterminer est le système d'exploitation. Linux est le standard de l'industrie, généralement une variété Red Hat comme CentOS - cependant, les nouveaux utilisateurs HPC trouvent souvent Ubuntu plus accessible. Vous voudrez installer une plateforme MPI (Message Passing Interface), la plus populaire étant OpenMPI. Cela permet aux applications de communiquer entre les différents nœuds. Si vous disposez d'un GPU puissant, vous'voudrez également installer la plateforme CUDA de NVIDIA'qui permet aux applications d'utiliser le GPU pour effectuer des calculs à usage général.

Les applications pour le calcul scientifique sont principalement écrites en FORTRAN et en C, donc vous'voudrez installer des compilateurs et un environnement d'exécution approprié pour ceux-ci, ainsi que toutes les bibliothèques numériques qui peuvent être utilisées par les applications souhaitées. Je ne saurais trop insister sur l'importance de bonnes bibliothèques HPC - elles sont réglées de manière approfondie pour obtenir les meilleures performances pour ce qu'elles font, et vous feront donc gagner du temps et de la rapidité par rapport à l'écriture de votre propre code pour les fonctions couramment exécutées.

Cela'fait beaucoup de considérations ! Si vous envisagez de faire du calcul sérieux, cela peut représenter un coût considérable. Sur le plan économique, la majorité des propriétaires de superordinateurs en puissance ont intérêt à utiliser un système externe comme Amazon Cloud Compute pour leur travail. Les exceptions sont:

  1. Si vous voulez le construire pour le plaisir de le construire - un objectif louable, allez-y!
  2. Si vous prévoyez de l'exploiter à pleine capacité pendant une longue période - de cette façon, le coût d'exploitation économisé peut compenser le coût en capital de l'achat de l'équipement.
  3. Si vous avez besoin d'un taux très rapide de transfert de données entre votre maison et l'ordinateur

Sauf si l'option 1 s'applique à vous, examinez bien votre budget, et les alternatives, avant de vous engager à construire le vôtre. Bonne chance!