FLASH INFORMATIQUE FI



Grappe de PC Linux pour le Calcul à Haute Performance




Ralf GRUBER

Trach-Minh TRAN


Note de la rédaction

Le SIC organise un cours de programmation MPI sur grappes de PC Linux en septembre (cours n° 02-0323). Vous trouverez les détails pour les horaires et les inscriptions en page 14 de ce numéro.

Introduction

Dans cet article, nous allons examiner en détail la configuration et l’installation d’une grappe de PC utilisant Linux comme système d’exploitation. Le but est d’obtenir une machine parallèle utilisable pour certaines classes d’applications qui nécessitent traditionnellement des ordinateurs vectoriels et/ou massivement parallèles.

Le choix des PC avec processeurs Intel ou AMD est dicté, non seulement pour des raisons de faible coût, mais aussi et surtout par leurs performances comparables à celles des processeurs des stations de travail. De plus, si on considère les PC qui se trouvent dans les salles de stations et de cours mises à la disposition des étudiants de l’EPFL et surtout que ces PC vont être renouvelés avec les dernières générations de processeurs Intel Pentium ou AMD Athlon, il serait intéressant de considérer la possibilité de pouvoir les configurer en grappes de processeurs pouvant être utilisés durant leurs périodes inactives (la nuit, le week-end, les jours fériés) pour certains types d’applications parallèles gourmandes en ressources de calcul. Nous verrons dans cet article, qu’en utilisant un système de gestion de ressources (ou RMS pour Resource Management System), tel que l’OpenPBS, il est possible d’envisager l’utilisation systématique des cycles inactifs de ces PC. A noter que pratiquement la totalité de ces PC sont déjà inter-connectés par un réseau Fast Ethernet de 100Mbits/s.

Finalement, le choix de Linux comme système d’exploitation est motivé par la disponibilité de plus en plus grande des logiciels (libres ou commerciaux) de qualité aussi bien pour installer et gérer des grappes de PC que pour développer et exploiter des applications parallèles exigeant des ressources importantes en calcul et mémoire.

Configuration

Matériel

Une configuration matérielle minimale serait constituée de boîtes mono-processeur Intel Pentium 4 ou AMD Athlon avec 1 GB de mémoire, un disque dur ayant au moins 5 GB (à noter qu’actuellement il est pratiquement impossible d’acquérir un PC avec moins de 20 GB !), une carte réseau Fast Ethernet à 100 MB/s, une carte graphique la plus simple possible (afin de pouvoir brancher un moniteur pour les diagnostics) et finalement un lecteur de disquette nécessaire dans la procédure d’installation décrite dans la section suivante. Ces PC serviront comme noeuds de calcul dans la grappe. Si les applications considérées pour cette grappe travaillent souvent en dehors du cache, il est nécessaire d’avoir des mémoires à large bande passante telles que les RAMBUS. Pour des raisons d’équilibrage de charge, ces boîtes devraient être aussi homogènes que possible afin de ne pas compliquer la programmation par des considérations de performances hétérogènes des processeurs à disposition.

Comme on le verra plus loin dans cet article, on doit choisir un PC faisant office de serveur de fichiers NFS (pour Network File System) et de serveur d’informations NIS (Network Information System) pour l’ensemble de la grappe. Ce PC pourrait être identique aux PC choisis précédemment comme noeuds de calculs, mais il est préférable qu’il ait un ou plusieurs disques plus importants pour contenir les répertoires des utilisateurs ainsi que des espaces de travail qui seront montés par NFS pour être visibles à travers toute la grappe. Ce PC, appelé aussi machine frontale pourrait être dédoublé afin d’augmenter la fiabilité de la grappe.

Trois configurations réseau sont possibles :

a. Brancher chacun de ces PC directement aux prises Ethernet si l’on en a suffisamment à disposition. Chacun des PC de la grappe possède alors une adresse IP publique. Cette configuration ne serait donc possible que pour un nombre assez faible (3 à 5) de PC.

b. Brancher chacun de ces PC directement à un switch Ethernet et connecter ce switch au réseau public EPNET. Cette configuration est similaire à la précédente mais possède l’avantage que les communications à l’intérieur de la grappe ne sont pas ou sont très peu perturbées par le trafic sur le réseau public.

c. Ajouter une deuxième carte réseau à la machine frontale, connecter celle-ci au réseau EPNET et déconnecter le switch du réseau EPNET comme le montre le schéma à la Figure 1. Tous les noeuds de calculs auront alors des adresses privées et seule la machine frontale est connectée au réseau extérieur. On ne gaspille pas les adresses publiques et le trafic interne à la grappe est complètement découplé du trafic externe.


Figure 1 - Configuration pour une grappe de PC dans laquelle les noeuds de calcul sont sur un réseau privé. L’accès aux noeuds de calculs depuis le réseau public EPNET se fait alors uniquement à travers la machine frontale.

Configuration NIS/NFS

Les services NIS et NFS permettent de rendre le réseau des PC transparent à l’utilisateur qui devrait pouvoir retrouver le même environnement, quelle que soit la machine où il se trouve. Avec le service NIS (ou Network Information System) les comptes des utilisateurs sont gérés de manière centralisée tandis que NFS (ou Network File System) permet de partager les systèmes de fichiers (typiquement les répertoires des utilisateurs /home à l’ensemble de la grappe. Le répertoire /usr/local où sont installés certains logiciels spécifiques à la grappe (en général les logiciels qui ne se trouvent pas dans la distribution Linux) serait aussi géré par NFS afin d’éviter de dupliquer l’installation et la maintenance de ces logiciels sur chacun des PC de la grappe.

Les services NIS et NFS sont des services asymétriques : les serveurs NIS/NFS se trouvent sur la machine frontale avec tous les noeuds de calcul fonctionnant comme clients NIS/NFS. A noter que dans cette configuration, une panne de la machine frontale immobiliserait toute la grappe d’où la nécessité de dédoubler la machine frontale pour augmenter la disponibilité de la grappe.

Installation

Nous avons choisi la distribution Linux 7.2 de SuSE (http://www.suse.com/ ) pour l’installation de nos grappes. Une autre distribution peut probablement aussi bien convenir. Le seul autre outil logiciel dont on aura besoin est le System Installation Suite (SIS), téléchargeable depuis http://sisuite.org . Il servira à cloner les noeuds de calcul à partir d’un noeud modèle.

Les différentes étapes de l’installation de la grappe peuvent se résumer ainsi :

1. Installer la machine frontale en utilisant le CD de la distribution SuSE et la configurer comme serveur NIS et serveur NFS, soit avec l’outil graphique yast de SuSE, soit en éditant le fichier /etc/rc.config. Exporter les répertoires /home et /usr/local. Une fois la machine opérationnelle, installer les outils SIS.

2. Installer de même un PC servant de noeud de calcul modèle. Si cette machine ne possède pas de lecteur de CD, faire une installation par NFS ou FTP depuis la machine frontale, à partir d’une disquette de boot. La configurer en tant que client NIS et NFS.

3. Clonage des clients avec SIS :

 a. Lancer prepareclient sur le client modèle pour le préparer à l’opération suivante.

 b. Capturer l’image du client modèle sur la machine frontale par : getimage -golden-client <client-modèle> -image <IMAGE>

 L’image complète du client modèle est alors stockée dans le répertoire /var/lib/systemimager/images/<IMAGE>.

 c. Créer une disquette d’auto-installation avec mkautodiskette et la dupliquer pour en obtenir autant d’exemplaires que de noeuds de calcul à cloner. Dans chacune des disquettes, modifier le fichier local.cfg en spécifiant l’adresse IP et le HOSTNAME du noeud de calcul à cloner.

 d. Lancer rsync sur la machine frontale : rsync -daemon -config=/etc/systemimager/rsyncd.conf

 e. Booter chacun des noeuds de calcul avec la disquette correspondante. Après la séquence du boot à partir d’un système minimal se trouvant sur la disquette, l’installation automatique de la machine démarre, utilisant rsync pour retirer l’image du client-modèle qui se trouve sur la machine frontale. Pour une image de 1.5 GB, cette opération prend environ 25 mn pour cloner simultanément 8 clients à travers le réseau à 100 MB/s.

Mise à jour

A moins que la mise à jour des fichiers concerne seulement le système de fichiers partagé /usr/local, on peut utiliser de nouveau les outils de SIS pour cette tâche de manière très efficace. La procédure, très semblable à l’installation initiale, est la suivante :

1. Mise à jour du client-modèle.

2. Lancer prepareclient sur le client modèle pour le préparer à l’opération suivante.

3. Lancer getimage pour mettre à jour l’image du client-modèle sur la machine frontale.

4. Lancer rsync sur la machine frontale, comme lors de l’installation initiale.

5. Sur chacun des noeuds de calcul, faire : updateclient -server &lt;machine-frontale&gt; -image &lt;IMAGE&gt;

Comme getimage et updateclient utilisent les deux rsync, seules les modifications introduites par la mise à jour sont propagées à travers le réseau.

Par cette procédure, on est alors assuré que tous les noeuds de calcul seront parfaitement identiques comme après la première installation.

Réalisations

Utilisant la méthodologie décrite précédemment, deux grappes Linux ont été installées : la première est constituée de 9 Pentium 3 d’une salle de cours du SIC tandis que la seconde, acquise par le Laboratoire d’Ingénierie Numérique (LIN) de l’EPFL est destinée pour des calculs parallèles à haute performance.

Grappe de PC pour l’enseignement

Ces 9 PC sont déjà connectés à un switch Fast Ethernet qui est lui-même branché sur le réseau EPNET comme dans la plupart des salles de PC. L’exercice avait pour but de tester la méthode d’installation décrite ci-dessus et de considérer la possibilité d’utiliser cette grappe pour l’enseignement de la programmation parallèle par MPI (pour Message Passing Interface). Comme la plupart des outils de développement (éditeurs, compilateurs GCC) sont déjà installés durant l’installation standard de SuSE, les seuls autres logiciels ajoutés (dans /usr/local/) pour compléter l’environnement envisagé sont :

• les compilateurs Fortran 90/C++ et la bibliothèque MKL qui inclut les bibliothèques BLAS, LAPACK et FFT optimisées pour les architectures Pentium de Intel ( http://developer.intel.com/software/products/ ) ;

• la bibliothèque de communication MPICH (http://www-unix.mcs.anl.gov/mpi/ ).

L’expérience a été concluante et il est décidé de configurer 9 nouveaux Pentiums 4 en grappe Linux et un premier cours MPI utilisant cette grappe est déjà programmé pour cet automne.

Grappe IELNX

Cette grappe comprend 2 Xeon bi-processeurs cadencés à 1.7 GHz avec 4 GB de mémoire (ielnx1 et ielnx2) et 22 P4 mono-processeur à 1.8 GHz/1 GB (ielnx3 à ielnx24), tous avec la mémoire rapide RAMBUS. Les 2 Xeon sont utilisés surtout pour des calculs sériels exigeant beaucoup de mémoire et le premier des 2, ielnx1, est configuré comme un serveur NIS/NFS pour le deuxième Xeon, ielnx2 ainsi que les 22 noeuds de calcul P4 ielnx3 à ielnx24. Ce serveur ainsi que les noeuds de calcul sont connectés à un switch Fast Ethernet à 24 ports. Il est envisagé de configurer le second Xeon ielnx2 en un miroir de la frontale ielnx1 afin de remplacer cette dernière en cas de panne.

Dans sa version actuelle, le switch est connecté directement au réseau EPNET et tous les membres de la grappe ont une adresse publique, mais il est prévu de rendre privé le réseau reliant les noeuds de calculs comme indiqué à la Figure 1 afin de le découpler complètement du réseau public EPNET.

La configuration logicielle est semblable à celle effectuée sur la grappe Linux pour l’enseignement. Afin de créer un environnement multi-utilisateur efficace pour les applications parallèles, un système de gestion de ressources a été implémenté avec le logiciel OpenPBS (http://openpbs.org/).

Dans ce système, l’utilisateur soumet une requête en spécifiant le nombre de noeuds de calcul, la durée en temps réel et éventuellement la date et l’heure de passage souhaitées pour son job. Pendant la durée de son job, l’accès interactif complet et exclusif lui est accordé sur les noeuds alloués par OpenPBS et sera retiré à la fin de son job. De plus tous les processus qui lui appartiennent et qui tournent encore sur ces noeuds seront tués afin de garantir que le prochain job trouvera un état propre sur ces noeuds. En dehors du contrôle OpenPBS, l’utilisateur ne peut pas se connecter directement sur les noeuds de calcul.

Benchmarks sur la grappe IELNX

Benchmark LINPACK

Pour estimer la performance de la grappe IELNX, nous avons tourné le benchmark LINPACK (http://netlib.org /benchmark/hpl/) utilisé pour le classement des super-ordinateurs (http://top500.org/ ). Dans ce benchmark, la résolution d’un système matriciel est répartie sur les noeuds de la grappe, utilisant MPICH et les routines BLAS de la bibliothèque optimisée MKL. La Figure 2 illustre les performances de la grappe IELNX en fonction du nombre de processeurs. Chaque point du graphique représente la performance maximale obtenue en variant le rang N de la matrice. Ainsi pour 2 processeurs, N=12000 et à 18 processeurs, la performance atteint 22 GFlops/s pour N=40000. A titre de comparaison, les serveurs parallèles centraux de l’EPFL (http://hpc.epfl.ch) Swiss-T1 et Eridan atteignent 43 GFlops/s à 64 processeurs et 106.9 GFlops/s à 128 processeurs respectivement.

Figure 2. Performance Linpack de la grappe IELNX 

Benchmark Fluent (M.L. Sawley, Granulair Technologies)

Pour évaluer la performance du logiciel commercial FLUENT 6 sur la grappe IELNX, nous avons tourné la suite de benchmarks développé par Fluent Inc. ( http://fluent.com/software/fluent/fl5bench/ ). Les neuf cas tests concernent la simulation numérique de différents types d’écoulements fluides. Les résultats présentés à la Figure 3 pour les cas FL5S2 et FL5L2 montrent que :

1. Pour le cas FL5S2 de très petite taille (32,000 cellules), où les communications entre les processeurs sont importantes par rapport aux calculs locaux, la grappe IELNX a une performance en général inférieure à celle du SGI O3800, due à la performance insuffisante du switch Fast Ethernet.

2. Dès que le rapport entre le calcul et la communication augmente, comme pour le cas FL5L2 (3,6 millions de cellules), la performance de la grappe IELNX dépasse celle du SGI O3800, grâce à la performance mono-processeur supérieure du Pentium 4.

3. En adaptant le nombre de processeurs utilisés à la taille du problème, un bon niveau d’efficacité parallèle est atteint sur la grappe IELNX.


Figure 3. Performances des cas tests FL5S2 et FL5L2, avec la grappe IELNX et la machine parallèle SGI Origin 3800

Besoins des applications parallèles

Les applications qui tournent sur une grappe ont des besoins en communication différents entre les PC [EPFL SuperComputing Review 13, 37-40 (2002), http://dit-archives.epfl.ch/SCR02/scr13_page37f.html ]. En gros, on distingue trois types d’applications qui sont :

1. Les applications qui nécessitent des communications entre tous les processeurs comme l’algorithme FFT. Dans ce cas, augmenter le nombre de processeurs fait augmenter la communication et, comme conséquence, le rapport entre le calcul et la communication baisse. Ces applications ont besoin d’un système de communication rapide comme par exemple le TNet de la grappe de processeurs Alpha du Swiss-T1.

2. Les applications dont la communication d’un processeur se fait vers un nombre fixe de processeurs. Typiquement, c’est le cas pour des méthodes d’éléments finis, volumes finis ou différences finies avec un parallélisme qui se base sur la décomposition d’un domaine en sous-domaines. Le logiciel Fluent en est un exemple typique. Dans un cas pareil, la communication par un switch Fast Ethernet à 100 Mbits/s peut être suffisant. Un exemple d’une telle grappe est la grappe IELNX décrite dans cet article.

3 . Finalement, les applications dont les besoins en communication sont très faibles et que l’on nomme embarassingly parallel. Ces applications ne demandent pas un système de communication performant entre les processeurs. Par contre, une bonne connectivité est demandée avec la machine-serveur qui distribue aux machines-clientes les cas à traiter et qui en rassemble les résultats. Une connexion de type réseau Fast Ethernet peut suffire. Dans ce cas, l’application peut profiter d’une grappe de PC distribués, et les machines individuelles, souvent sous-chargées, pourraient être utilisées.

Conclusion

Dans cet article est décrite notre expérience d’installation de grappes de PC utilisant Linux comme système d’exploitation. Il est montré que :

• Des outils existent sous Linux pour installer et gérer efficacement des grappes de PC (avec un minimum de connaissance en administrationde système Linux/Unix).

• Ces grappes sont aisément abordables par des groupes de recherche ou des laboratoires.

• Ces grappes peuvent traiter une large classe d’applications parallèles exigeant des ressources importantes. Néanmoins, ces applications doivent être parallélisées par l’utilisation des bibliothèques de communications (MPI, PVM) ou des sockets.

• Il serait possible de récupérer, grâce à un système de gestion de ressources informatiques tel que OpenPBS, les cycles inactifs des PC de plus en plus puissants qui équipent déjà certaines salles d’ordinateurs dédiées à l’enseignement pour des calculs à haute performance.

Remerciements

Nous aimerions remercier M. Pierre Berberat du SIC et M. Tolou Hashemi de la STI pour leur aide précieuse lors de l’installation de la grappe de la salle de cours du SIC et celle de IELNX au LIN.



Cherchez ...

- dans tous les Flash informatique
(entre 1986 et 2001: seulement sur les titres et auteurs)
- par mot-clé

Avertissement

Cette page est un article d'une publication de l'EPFL.
Le contenu et certains liens ne sont peut-être plus d'actualité.

Responsabilité

Les articles n'engagent que leurs auteurs, sauf ceux qui concernent de façon évidente des prestations officielles (sous la responsabilité du DIT ou d'autres entités). Toute reproduction, même partielle, n'est autorisée qu'avec l'accord de la rédaction et des auteurs.


Archives sur clé USB

Le Flash informatique ne paraîtra plus. Le dernier numéro est daté de décembre 2013.

Taguage des articles

Depuis 2010, pour aider le lecteur, les articles sont taggués:
  •   tout public
    que vous soyiez utilisateur occasionnel du PC familial, ou bien simplement propriétaire d'un iPhone, lisez l'article marqué tout public, vous y apprendrez plein de choses qui vous permettront de mieux appréhender ces technologies qui envahissent votre quotidien
  •   public averti
    l'article parle de concepts techniques, mais à la portée de toute personne intéressée par les dessous des nouvelles technologies
  •   expert
    le sujet abordé n'intéresse que peu de lecteurs, mais ceux-là seront ravis d'approfondir un thème, d'en savoir plus sur un nouveau langage.