Je pense que la meilleure fa�on de d�crire l'architecture d'un superordinateur
Beowulf est d'utiliser un exemple qui est tr�s proche du vrai Beowulf, mais
aussi familier � beaucoup d'administrateurs syst�mes. L'exemple le plus proche
d'une machine Beowulf est un Unix de laboratoire avec un serveur et un certain
nombre de clients. Pour �tre plus sp�cifique, j'utiliserai le DEC Alpha au
laboratoire d'informatique de la Facult� des Sciences de l'USQ comme exemple. Le
serveur est appel� beldin et les machines clientes sont
scilab01, scilab02, scilab03, jusqu'�
scilab20. Tous les clients ont une copie locale du syst�me
d'exploitation Digital Unix 4.0 install�, mais ont l'espace disque utilisateur
(/home
) et /usr/local
du serveur via NFS (Network File
System). Chaque client a une entr�e pour le serveur et tous les autres clients
dans son fichier /etc/hosts.equiv
: ainsi tous les clients peuvent
ex�cuter une cession distante (rsh) vers tout autre. La machine serveur est un
serveur NIS pour tout le laboratoire, ainsi les informations des comptes sont
les m�mes sur toutes les machines. Une personne peut s'asseoir � la console de
scilab02, se logue, et a le m�me environnement que s'il �tait logu� sur
le serveur, ou scilab15. La raison pour laquelle les clients ont la
m�me pr�sentation est que le syst�me d'exploitation est install� et configur� de
la m�me fa�on sur toutes les machines, les espaces /home
et
/usr/local
sont physiquement sur le m�me serveur et les clients y
acc�dent via NFS. Pour plus d'informations sur NIS et NFS, reportez-vous �
NIS et
NFS.
Maintenant que nous avons une vision correcte de l'architecture du syst�me,
regardons comment nous pouvons utiliser les cycles CPU des machines
dans le laboratoire. Toute personne peut se loguer sur n'importe
laquelle des machines, et lancer un programme dans son r�pertoire
de base, mais peut aussi �clater la m�me t�che sur diff�rentes
machines simplement en ex�cutant un shell distant. Par exemple, si
nous voulons calculer la somme des racines carr�es de tous les entiers
inclus strictement entre 1 et 10, nous �crivons un simple programme appel�
sigmasqrt
(voir
code source) qui fait cela exactement. Pour
calculer la somme des racines carr�es des nombres de 1 � 10, nous
ex�cutons :
[jacek@beldin sigmasqrt]$ time ./sigmasqrt 1 10 22.468278 real 0m0.029s user 0m0.001s sys 0m0.024sLa commande
time
nous permet de v�rifier le temps mis
en ex�cutant cette t�che. Comme nous pouvons le voir, cet exemple
a pris seulement une petite fraction de seconde (0.029 sec) pour s'ex�cuter,
mais que se passe-t-il si je veux ajouter la racine carr�e des entiers de 1
� 1 000 000 000 ?
Essayons ceci, et calculons le temps �coul�:[jacek@beldin sigmasqrt]$ time ./sigmasqrt 1 1000000000 21081851083600.559000 real 16m45.937s user 16m43.527s sys 0m0.108s
Cette fois, le temps d'ex�cution de ce programme est consid�rablement sup�rieur. La question �vidente qui se pose est: est-il possible de diminuer le temps d'ex�cution de cette t�che et comment ? La r�ponse �vidente est de d�couper la t�che en un ensemble de sous-t�ches et d'ex�cuter ces sous-t�ches en parall�le sur tous les ordinateurs. Nous pouvons s�parer la grande t�che d'addition en 20 parties en calculant un intervalle de racines carr�es et en les additionnant sur un seul noeud. Quand tous les noeuds ont fini les calculs et retournent leurs r�sultats, les 20 nombres peuvent �tre additionn�s ensemble et fournir la solution finale. Avant de lancer ce processus, nous allons cr�er un "named pipe" qui sera utilis� par tous les processus pour �crire leurs r�sultats:
[jacek@beldin sigmasqrt]$ mkfifo output [jacek@beldin sigmasqrt]$ ./prun.sh & time cat output | ./sum [1] 5085 21081851083600.941000 [1]+ Done ./prun.sh real 0m58.539s user 0m0.061s sys 0m0.206s
Cette fois, cela prend 58.5 secondes. C'est le temps qui a �t� n�cessaire entre le d�marrage du processus et le moment o� les noeuds ont fini leurs calculs et �crit leurs r�sultats dans la pipe. Ce temps n'inclut pas l'addition finale des 20 nombres, mais il repr�sente une petite fraction de seconde et peut �tre ignor�. Nous pouvons voir qu'il y a un avantage significatif � ex�cuter une t�che en parall�le. En fait la t�che en parall�le s'est ex�cut�e 17 fois plus vite, ce qui est tr�s raisonnable pour un facteur 20 d'augmentation du nombre de CPU. Le but de l'exemple pr�c�dent est d'illustrer la m�thode la plus simple de parall�liser du code concurrent. En pratique, des exemples aussi simples sont rares et diff�rentes techniques (les API de PVM et PMI) sont utilis�es pour obtenir le parall�lisme.
Le laboraroire d'informatique d�crit plus haut est un exemple parfait d'un cluster de stations (COW). Qu'est-ce qui rend donc Beowulf si sp�cial et en quoi diff�re-t-il d'un COW ? En r�alit� il n'y a pas beaucoup de diff�rence, mais un Beowulf a quelques caract�ristiques uniques. La premi�re est que dans la plupart des cas, les noeuds clients dans un cluster Beowulf n'ont pas de clavier, de souris, de carte graphique ni de moniteur. Tous les acc�s aux noeuds clients sont faits par une connection distante du noeud serveur, un noeud d�di� � une console, ou une console s�rie. Cela parce qu'il n'y a aucun besoin pour un noeud client d'acc�der � des machines en dehors du cluster, ni pour des machines en dehors du cluster d'acc�der � des noeuds clients directement; c'est une pratique habituelle que les noeuds clients utilisent des adresses IP priv�es comme les plages d'adresses 10.0.0.0/8 ou 192.168.0.0/16 (RFC 1918 http://www.alternic.net/rfcs/1900/rfc1918.txt.html). D'habitude la seule machine qui est aussi connect�e au monde externe en utilisant une seconde carte r�seau est le noeud serveur. La fa�on la plus habituelle d'acc�der au syst�me est soit d'utiliser la console du serveur directement, soit de faire un telnet ou un login distant (rlogin) sur le noeud serveur d'une station personnelle. Une fois sur celui-ci, les utilisateurs peuvent �diter et compiler leur code, et aussi distribuer les t�ches sur tous les noeuds du cluster. Dans la plupart des cas, les COW sont utilis�es pour des calculs parall�les la nuit et les week-ends, quand les stations ne sont pas utilis�es pendant les journ�es de travail, utilisant ainsi les p�riodes de cycles libres des CPU. D'autre part, le Beowulf est une machine d�di�e au calcul parall�le, et optimis�e pour cette t�che. Il donne aussi un meilleur rapport prix/performance puisqu'il est constitu� de composants grand public et qu'il tourne principalement � partir de logiciels libres. Beowulf donne aussi davantage l'image d'une seule machine, ce qui permet aux utilisateurs de voir le cluster Beowulf comme une seule station de calcul.
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:39