Myrinet
From Grid5000
Contents |
Présentation
Les réseaux Myrinet [1] disposent de deux bibliothèques logicielles officielles MX (Myrinet eXpress) et GM (en fin de vie). Il est à noter ces bibliothèques ne peuvent pas fonctionner simultanément sur une même machine et ne peuvent pas communiquer entre elles.
Seul l'utilisation de la nouvelle bibliothèque MX sera décrite ici, pour pouvoir l'utiliser il est nécessaire de disposer de cartes Myrinet munies de Lanai X ou supérieur, c'est à dire à partir de la 4ème révision PCI-XD.
Les sources de ces bibliothèques peuvent être obtenues sur le site de Myricom à l'aide d'un login et d'un mot de passe que les clients peuvent obtenir en envoyant un mail à help@myri.com, ces bibliothèques sont composées de:
- une bibliothèque utilisateur
- un driver noyau (sa compilation nécessitant les sources du noyau installé sur la machine)
- un firmware (généralement fourni précompilé)
Installation
Après avoir récupéré et extrait les sources de MX, aller dans le répertoire produit et taper:
./configure --with-linux=/chemin/vers/les/sources/du/noyau
--prefix=/chemin/ou/installer/les/binaires
--enable-kernel-lib
Note: --enable-kernel-lib, permet d'activer l'interface MX dans le noyau Linux. Si --prefix n'est pas spécifié l'installation se fait par défaut dans /opt/mx/.
make make install
Attention: Le driver doit être compilé avec le même compilateur que le noyau,
pour cela il peut être nécessaire de passer celui si en argument à make: KCC=gcc-3.4
$prefix/sbin/mx_local_install
L'exécution du script mx_local_install va réaliser la création des devices nécessaire dans /dev, aisi que de la mise en place du script de démarrage /etc/init.d/mx. Ce script de démarrage s'occupe du chargement des deux modules noyau mx_mcp (mise en place des firmwares) et mx_driver, ainsi que du démarrage du mapper qui va dresser la topologie du réseau; si GM était actif il est également arréter avant le démarrage de MX afin d'éviter tous conflits.
Installation avec serveur fms
La version 1.1.0 du driver MX inclus un nouveau "mapper", nommé fms
Cette nouvelle implémentation nécessite l'installation d'un serveur fms (sur une machine non nécessairement doté d'une carte myrinet, mais joignable par tcp, port 3333).
Pour les systèmes redhat, un fichier spec et script d'init se trouvent dans le svn grid5000:
http://gforge.inria.fr/plugins/scmsvn/viewcvs.php/admin/trunk/myrinet/?root=grid5000
Une fois le serveur installé, il faut l'initialiser avec l'IP du switch myrinet:
fm_switch -a <switch_IP>
Les clients doivents également être configurés; avec le spec cité plus haut, il suffit de créer un fichier /etc/sysconfig/fms, sur tous les noeuds, avec le nom du serveur:
Par exemple à Sophia:
FMS_SERVER=services.sophia.grid5000.fr
| Warning | |
|---|---|
Le serveur FMS ne semble pas très stable, en tout cas dans la configuration Grid5000 où les noeuds sont fréquement rebootés. Le serveur FMS a donc été désactivé à Sophia . | |
Tests
Le répertoire /opt/mx/bin/ (et son sous-répertoire tests) regroupent un ensemble d'utilitaires de configuration et de tests de MX. Si vous prévoyez d'utiliser Myrinet, il peut être utile d'ajouter ce chemin à votre PATH.
mx_info
Cette commande donne des informations sur la machine et les autres noeuds detectés:
node-45:~> mx_info
MX Version: 1.0.0
MX Build: bgoglin@frontale.lyon.grid5000.fr:/home/lyon/bgoglin/admin/mx-1.0.0 Wed Jun 15 08:19:51 CEST 2005
1 Myrinet board installed.
The MX driver is configured support up to 4 instances and 1024 nodes.
===================================================================
Instance #0: 333 MHz LANai, 100 MHz PCI bus
Status: Running, P0: Link up
MAC Address: 00:60:dd:48:60:46
Serial number: 245388
Mapper: 00:60:dd:48:60:4d, version = 0x000c9cd1, !configured
ROUTE COUNT
INDEX MAC ADDRESS HOST NAME P0
----- ----------- --------- ---
0) 00:60:dd:48:43:68 node-45.lyon.grid5000.fr:1,1
1) 00:60:dd:48:60:46 node-1.lyon.grid5000.fr:07,3
2) 00:60:dd:48:60:45 node-10.lyon.grid5000.fr:4,3
3) 00:60:dd:48:60:44 node-5.lyon.grid5000.fr:05,3
mx_pingpong
Ce programme de test permet de faire un ping-pong entre des machines, afin d'en vérifier le bon fonctionnement, il est à exécuter sur au moins deux machines:
- sur le serveur
node-45:~> mx_pingpong -s Starting pingpong receiver
- sur le client
node-52:~> mx_pingpong -M 4 -E 1048577 -d node-45.lyon.grid5000.fr:0
Starting pingpong send to host node-45.lyon.grid5000.fr:0
Running 1000 iterations.
Length Latency(us) Bandwidth(MB/s)
0 2.814 0.000
1 3.052 0.328
4 3.038 1.317
16 3.109 5.146
64 3.691 17.342
256 5.902 43.379
1024 11.408 89.762
4096 24.697 165.850
16384 83.352 196.564
65536 302.079 216.950
262144 1131.330 231.713
1048576 4433.694 236.502
Note: Les noms des machines utilisés dans MX sont les hostname suivi de :0 pour la première interface Myrinet, :1 pour la seconde et ainsi de suite.
mx_endpoint_info
Renseigne sur les endpoints ouverts, c'est-à-dire les applications qui utilisent MX.
node-45:~> mx_endpoint_info 1 Myrinet board installed. The MX driver is configured support up to 4 endpoints on 4 boards. =================================================================== Board #0: Endpoint PID Command Info <raw> 2917 mx_mapper There are currently 0 regular endpoints open
mx_dmabench
Permet de tester les transferts DMA entre la carte Myrinet et l'hôte:
node-45:~> mx_dmabench DMA timings for mx0 (00:60:dd:48:43:68) a 333 MHz LANai on a 100 MHz PCI bus: DMA read (send) Bandwidth = 678.43 MB/sec (4096 bytes per DMA) DMA write (recv) Bandwidth = 738.55 MB/sec (4096 bytes per DMA)
Emulation Ethernet
MX fournit une émulation Ethernet en créant une interface virtuelle myri0 qui peut être alors configurée comme n'importe quelle interface Ethernet.
node-1:~# ifconfig myri0
myri0 Link encap:Ethernet HWaddr 00:60:DD:48:60:46
BROADCAST MULTICAST MTU:9000 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:29
Applications
MPICH
Après avoir installé MX, récupéré et extrait les sources de MPICH-MX, aller dans le répertoire produit et éditer le fichier mpich.make.linux. Il faut y préciser le chemin MX_HOME où MX a été installé (pas le répertoire de compilation) et le chemin PREFIX où MPICH-MX sera installé.
mpich.make.linux
Les librairies et binaires de MPICH-MX sont installés dans /opt/mpich-mx/. Pour compiler un binaire pour MPICH-MX, on peut utiliser le mpicc qui se chargera de linké avec les bibliothèques MX et MPICH-MX :
/opt/mpich-mx/bin/mpicc mpi_ping.c -o mpi_ping
L'utilisation impose de préciser où sont les bibliothèques MX; soit l'administrateur a déjà mis leur chemin dans /etc/ld.so.conf, soit il faut le préciser dynamiquement en ajoutant /opt/mx/lib à la variable d'environement LD_LIBRARY_PATH.
L'utilisation se fait comme pour n'importe quelle MPICH. On peut par exemple placer les machines cibles dans un fichier machines.
node-45:~> cat machines node-45.lyon.grid5000.fr node-52.lyon.grid5000.fr
Le binaire mpirun permet alors de lancer le programme sur ces machines :
node-45:~> /opt/mpich-mx/bin/mpirun -machinefile machines.ch_mx -np 2 mpi_ping (node-45.lyon.grid5000.fr): My rank is 0 (node-52.lyon.grid5000.fr): My rank is 1 The configuration size is = 2 ping with = 1 The configuration size is = 2 pong with = 0 src|dst|size |latency |10^6 B/s|MB/s | 0 1 4 3.234 1.237 1.180 0 1 8 3.291 2.431 2.318 0 1 16 3.224 4.962 4.732 0 1 32 3.360 9.524 9.083 0 1 64 3.848 16.632 15.861 0 1 128 4.384 29.198 27.846 0 1 256 6.043 42.362 40.399 0 1 512 7.936 64.518 61.529 0 1 1024 11.507 88.989 84.867 0 1 2048 15.903 128.781 122.815 0 1 4096 24.824 165.001 157.357 0 1 8192 44.207 185.309 176.724 0 1 16384 83.470 196.286 187.193 0 1 32768 150.174 218.201 208.092 0 1 65536 299.822 218.583 208.457 0 1 131072 574.006 228.346 217.768 0 1 262144 1118.927 234.282 223.428 0 1 524288 2214.213 236.783 225.814 0 1 1048576 4400.993 238.259 227.221 0 1 2097152 8790.422 238.572 227.520 test series completed Exiting Exiting
Autres
Pour compiler une application utilisant MX, il suffit d'inclure myriexpress.h qui se trouve dans /opt/mx/include.
L'édition de lien se fait avec la librairie libmyriexpress.so (-lmyriexpress) qui se trouve dans /opt/mx/lib.
Pour utiliser MX dans le noyau, il faut avoir passé --enable-kernel-lib lors de sa configuration.
Lors de la compilation, il faut définir MX_KERNEL.
L'interface de programmation est alors entièrement la même lorsqu'on manipule des zones mémoire du noyau. Elle fournit quelques primitives supplémentaires pour manipuler des zones mémoire de l'espace utilisateur ou des adresses physiques. Voir le détail dans /opt/mx/include/mx_kernel_api.h.
