LABORATOIRE DE PHYSIQUE THEORIQUE DE LA MATIERE CONDENSEE

INSTALLATION DU CLUSTER VERSION 3


by DD le 15-1-2008
last revision 18-8-200

Description du hardware

Maitre (thorgal)
Carte mere Tyan Thunder K8W (S2885)
http://www.tyan.com/archive/products/html/thunderk8w_spec.html
http://www.tyan.com/archive/products/html/thunderk8w.html
2 processeurs AMD Opteron 2.2 GHz single core (socket 940)
Chipset AMD-8131 et AMD-81111
Memoire: 2 Go
LAN: 2 Gbe Ethernet
Disque 500 Go WD en RAID 1 avec un disque de spare (Raid hardware avec carte 9550....)
ATI Rage XL 8 Mo
Bios version 2.08




Noeuds 1 a 12 (les 12 sont identiques)
Barebone Tyan Transport GT24 B2891 (avec carte-mere Thunder K8SRE (S2891))
http://www.tyan.com/product_barebones_detail.aspx?pid=1
2 processeurs AMD dualcore Opteron 285 a 2.6 Ghz
Chipset Nvidia nForce4 pro (+AMD-8131)
8 Go de memoire en 4x2Go DDR 400 MHz ECC registered (4 emplacements libres)
LAN : 2 Gbe Ethernet
ATI Rage XL 8Mo
1 slot PCI-E x16 (+ 1 PCI-X)
1 disque 160 Go SATA II
Bios version 2.03

Carte Infiniband Mellanox Infinihost III Lx MHGS18-XT dans le slot PCI-E
http://www.mellanox.com/products/infinihost_iii_lx_cards.php
Firmware version 1.2 de decembre 2006
http://www.mellanox.com/support/firmware_table_IH3Lx.php




Switch Infiniband Mellanox MTS 2400-24-DDR
http://www.mellanox.com/products/mtpdk24.php
   



Noeuds 20 et 21 (installes en mars 2008)
Intel Server System SR1560SF (avec carte-mere Intel S5400SF)
http://www.intel.com/Products/Server/Systems/SR1560SF-SR1560SFHS/SR1560SF-SR1560SFHS-overview.htm
2 processeurs Intel Xeon X5460 a 3.16 GHz
24 Go de memoire FB-DIMM en 12 barettes de 2 Go DDR 667 MHz ECC (4 emplacements libres)
LAN :  2 Gbe Ethernet
ATI ES1000 PCI graphics accelerator, with 32 MB of video DDR SDRAM
1 slot PCI-E x16 Gen2 avec riser card (+ autres ports PCI)
1 disque 320 Go SATA II
1 lecteur DVD
Bios update le 18-8-2008 version 26;8;11 du 20-6-2008 (voir dans /users/node_f8/bios_flash/myreadme)
http://downloadcenter.intel.com/filter_results.aspx?strTypes=all&ProductID=2850&OSFullName=Red+Hat*+Enterprise+Linux+5.0〈=eng&strOSs=167&submit=Go%21

Carte Infiniband Mellanox ConnectX MHGH29-XTC Rev-A1 (MT26418) dans le slot PCI-E 16x Gen2
en principe pour PCIe 2.0 5.0 GT/s
http://www.mellanox.com/products/connectx_ib_card.php   
Firmware 2.5 de juin 2008
http://www.mellanox.com/support/firmware_table_ConnectXIB.php

Installation des logiciels de base

Pour le maitre et les noeuds, on fait une install Fedora classique,
avec un fichier kickstart.

Installation du maitre

On boote a partir du CD-Rescue Fedora 8 (ou du DVD si il y a un lecteur, i.e.
uniquement sur le maitre). Apres ESC, on recupere le boote, et on tape

linux ks=http://www.lptl.jussieu.fr/ksth.cfg

et on selectionne le port eth0.
En principe, l'install commence, duree environ 2 heures.

La partie post-install du kickstart est minimum, elle se contente
en fait de modifier le fstab pour pouvoir monter /export et /myusers
de cendrillon.

Apres le reboot, il y a plusieurs etapes et des scripts plus ou moins globaux.
Le script principal est /users/node_f8/master/scripts/suite-installation, que l'on peut
se contenter de faire tourner a la brutale. Il appelle differents scripts
regroupes dans /users/node_f8/master/scripts.
Il comporte plusieurs etapes:



1. run_once

Ce script modifie un certain nombre de fichiers de config
en sauvegardant les fichiers d'origine dans .orig
avec ce qui est dans /users/node_f8/master/config
(essentiellement
dans le repertoire etc)
Il est donc important de ne faire tourner run_once qu'une seule fois.
Les differentes etapes sont:
  * modifier /opt pour qu'il pointe sur /usr/local
  * modifier /etc/hosts pour inclure les noeuds et le maitre
    sur les deux interfaces
  * modifier /etc/X11/Xresources pour des couleurs plus agreables
  * copier /users/node_f8/master/config/etc/bashrc dans /etc/bashrc (ajout des '-i'
    pour cp, mv, rm et configuration du path)
  * mettre a jour ld.so.conf pour avoir le compilo intel
  * mettre a jour nsswitch.conf (inutile, supprime)
  * mettre a jour /etc/sysconfig/network (inutile, supprime)
  * mettre a jour /etc/sysconfig/network-scripts/ifcfg-eth{0,1}. Important
    pour eth1 car ce sera le cote interne du reseau du cluster
  * mettre a jour /etc/ssh et /root/.ssh pour conserver les memes cles de cryptage
  * script ntpmgr, qui configure ntp pour se synchroniser sur le routeur labo
  * script servicemgr, qui configure les services a demarrer au boot
  * script usermgr, qui recopie les fichiers passwd, shadow, group et gshadow.
    En pratique, il ecrase tout. Lors d'une install d'une nouvelle Fedora, le mieux
    est donc de faire a la main, un mix des fichiers originaux (conserves dans .orig)
    et des utilisateurs rajoutes. Recopier ensuite les fichiers obtenus dans
    /users/node_f8/master/config/etc, car ils serviront pour les noeuds.
  * script exportmgr, qui genere les exports de /users et /var/cache/yum vers le cluster
  * script dhcpdmgr, qui configure le serveur dhcp pour le cluster. En particulier dhcp.conf
    contient les adresses mac des noeuds, a modifier si le hardware change.
  * script yummgr, qui configure yum pour acceder aux repositories interessants.
    Il est ici TRES IMPORTANT de conserver les packages dans /var/cache/yum (option keepcache=1 dans /etc/yum/conf)
    pour pouvoir recreer un repository pour les noeuds.
  
Il peut y avoir quelques warnings (fichiers manquants), sans grande importance.
L'execution de run_once prend quelques secondes.

2. rpm-yum-mgr
Ce script installe tous les packages necessaires (et meme plus) via yum et
les repositories installes dans run_once.
Il peut tourner plusieurs fois sans inconvenient.
L'execution est longue, de l'ordre de 1 heure.
3. install-rpm
Ce script installe des rpm non disponibles sous yum. Ils sont rassembles
dans /users/node_f8/master/rpm. Il y a en particulier c3, qui permet
l'execution de commandes globales sur le cluster via cexec
(3 packages sur le maitre + un fichier de config, c'etait auparavant
dans le script ajout-c3)
Tout est fait en "yum localinstall" plutot que rpm brutal.
4. ajout-systemimager
Ce script installe systemimager
(un paquet de rpms) sur le maitre.
5. ajout-ganglia
Ce script installe ganglia (gmond, gmetad et web) de facon a pouvoir
avoir l'etat du cluster sur thorgal, via une interface web.
Le script configure /etc/gmond.conf et /etc/gmetad.conf.
Copies des fichiers dans /users/node_f8/master/config.etc

diff /etc/gmetad.conf /etc/gmetad.conf.orig
39c39
< data_source "beowulf" localhost
---
> data_source "my cluster" localhost

diff /etc/gmond.conf /etc/gmond.conf.orig
20c20
<   name = "beowulf"
---
>   name = "unspecified"
23c23
<   url = "beowulf"
---
>   url = "unspecified"

On peut aussi rajouter la ligne:
gexec   2875/tcp    # Caltech GEXEC
a la fin de /etc/services (non utilise dans la config actuelle).

Le script demarre les services gmetad et httpd, avec un chkconfig.

Le 20-8-2008, gmetad part dans les choux avec explosion de la memoire suivie
de l'intervention de oom_killer... "yum update ganglia" (en version 3.0.7) resoud le probleme.


6. install-nonrpm installe les packages
utiles qui ne sont pas sous forme de rpm.
Il s'agit en general d'applications genre compilo ou librairie, installee
manuellement sur une machine et dont on a fait un .tgz qui peut etre
reutilise sur toute machine. En particulier, ca doit contenir les fichiers de license necessaires.
Les .tgz eux memes sont dans /users/node_f8/master/tar
Il y a :
  - installation des codes win32 dans /usr/lib/codecs avec quelques liens (pas vraiment teste)
  - installation de fontes diverses dans /usr/share/fonts (pas vraiment teste)
  - installation de la config tex dans /usr/share/texmf (pas vraiment teste)
  - install-intel-compiler-fortran-10.1 : Intel Fortran 32 bits version 10.1
  - install-intel-compiler-fortrane-10.1 : Intel Fortran 64 bits version 10.1
  - install-intel-compiler-cc-10.1 : Intel C 32 bits version 10.1
  - install-intel-compiler-cce-10.1 : Intel C 64 bits version 10.1
  - install-intel-idb-10.1 : Intel debugger 32 bits version 10.1
  - install-intel-idbe-10.1 : Intel debugger 64 bits version 10.1
  - install-mkl-10.0 : Intel MKL library version 10.0, 32 et 64 bits, serial et multithreaded
  - install-acml-4.0.1 : AMD ACML library, version 4.0.1, 64 bits, pour gfortran, ifort, pathscale, single et multi-threaded
  - install-libraries : installe differentes librairies utiles:
    * NAG 32 et 64 bits, ifort et gfortran. Par defaut, libnag.a pointe vers ifort 64 bits.
    * Lapack 32 et 64 bits pour ifort. Par defaut, liblapack.a pointe vers ifort 64 bits.
    * fgsl 32 et 64 bits pour ifort. Par defaut, libfgsl.a pointe vers ifort 64 bits (il y a egalement
      le include correspondant).
    * Goto (BLAS) 64 bits, pour tout compilateur, en versions opteron single et multi-threaded, avec ou sans support
      de sse3. Par defaut, libgoto.a (multi-threaded) pointe vers nosse3 sur la maitre, sse3 sur les noeuds. libgoto-single.a pointe
      sur les versions single.

A la fin, il peut y a voir des fichiers appartenant a delande plutot
que root, on peut donc faire un "cd /opt; chown -R root.root ."

Finalement, il faut lancer un grand "yum update" qui prend environ 2 heures.

 
***** contenu de /users/node_f8/master/config (le 20-1-2008)
Differents fichiers de config du maitre sont gardes dans  /users/node_f8/master/config
Ils peuvent en principe ecraser brutalement les fichiers existant apres une
install standard de Fedora sur le maitre. Certains sont peut-etre
inutiles

/users/node_f8/master/config/:
total 32
drwxr-xr-x  5 root root 4096 ao\ufffd\ufffd 18 17:52 ./
drwxr-xr-x 16 root root 4096 ao\ufffd\ufffd 18 16:45 ../
drwxr-xr-x  8 root root 4096 jan 31  2008 etc/
drwxr-xr-x  4 root root 4096 jan 21  2008 opt/
drwxr-xr-x  3 root root 4096 ao\ufffd\ufffd 18 17:52 root/

/users/node_f8/master/config/etc:
total 168
drwxr-xr-x 8 root root 4096 jan 31  2008 ./
drwxr-xr-x 5 root root 4096 ao\ufffd\ufffd 18 17:52 ../
-rw-r--r-- 1 root root 1686 jan 14  2008 bashrc
-rw-r--r-- 1 root root  110 ao\ufffd\ufffd 18 18:19 c3.conf
-rw-r--r-- 1 root root 1928 ao\ufffd\ufffd 18 18:22 dhcpd.conf
-rw-r--r-- 1 root root  148 jan 16  2008 exports
-rw-r--r-- 1 root root  618 jan 16  2008 fstab
-rw-r--r-- 1 root root 4842 jan 25  2008 gmetad.conf
-rw-r--r-- 1 root root  976 jui 31 10:44 group
-r-------- 1 root root  700 jui 31 10:44 gshadow
-rw-r--r-- 1 root root 1255 ao\ufffd\ufffd 18 18:19 hosts
drwxr-xr-x 2 root root 4096 mai 14  2007 init.d/
-rw-r--r-- 1 root root   96 jan 16  2008 ld.so.conf
-rw-r--r-- 1 root root  235 jui 19  2006 ntp.conf
-rw-r--r-- 1 root root 3591 jui 31 10:44 passwd
drwxr-xr-x 3 root root 4096 nov 25  2007 pki/
drwxr-xr-x 2 root root 4096 jan 31  2008 rc.d/
-r-------- 1 root root 2730 jui 31 10:44 shadow
drwxr-xr-x 2 root root 4096 jan 13  2008 ssh/
drwxr-xr-x 3 root root 4096 jan 16  2008 sysconfig/
-rw-r--r-- 1 root root  285 jui  6  2006 yum.conf
drwxr-xr-x 2 root root 4096 nov 23  2007 yum.repos.d/

/users/node_f8/master/config/etc/init.d:
total 40
drwxr-xr-x 2 root root 4096 mai 14  2007 ./
drwxr-xr-x 8 root root 4096 jan 31  2008 ../
-rwxr-xr-x 1 root root 1738 jun  4  2007 pbs_mom*
-rwxr-xr-x 1 root root  906 jun  4  2007 pbs_sched*
-rwxr-xr-x 1 root root 1033 jun  4  2007 pbs_server*

/users/node_f8/master/config/etc/pki:
total 24
drwxr-xr-x 3 root root 4096 nov 25  2007 ./
drwxr-xr-x 8 root root 4096 jan 31  2008 ../
drwxr-xr-x 2 root root 4096 nov 25  2007 rpm-gpg/

/users/node_f8/master/config/etc/pki/rpm-gpg:
total 128
drwxr-xr-x 2 root root 4096 nov 25  2007 ./
drwxr-xr-x 3 root root 4096 nov 25  2007 ../
-rw-r--r-- 1 root root 1391 nov 25  2007 jpackage.asc
-rw-r--r-- 1 root root 1569 nov 25  2007 kde-redhat.RPM-GPG-KEY
-rw-r--r-- 1 root root 1910 nov 25  2007 RPM-GPG-KEY
-rw-r--r-- 1 root root 1726 nov 25  2007 RPM-GPG-KEY-adobe-linux
-rw-r--r-- 1 root root 1044 nov 25  2007 RPM-GPG-KEY.atrpms
-rw-r--r-- 1 root root 1706 nov 25  2007 RPM-GPG-KEY-beta
-rw-r--r-- 1 root root 2161 nov 25  2007 RPM-GPG-KEY.dries.txt
-rw-r--r-- 1 root root 1519 nov 25  2007 RPM-GPG-KEY-fedora
-rw-r--r-- 1 root root 1105 nov 25  2007 RPM-GPG-KEY-fedora-rawhide
-rw-r--r-- 1 root root 1076 nov 25  2007 RPM-GPG-KEY-fedora-test
-rw-r--r-- 1 root root 1639 nov 25  2007 RPM-GPG-KEY-freshrpms
-rw-r--r-- 1 root root 1422 nov 25  2007 RPM-GPG-KEY-livna
-rw-r--r-- 1 root root 1547 nov 25  2007 RPM-GPG-KEY.planetccrma.txt
-rw-r--r-- 1 root root 1232 nov 25  2007 RPM-GPG-KEY-rawhide

/users/node_f8/master/config/etc/rc.d:
total 16
drwxr-xr-x 2 root root 4096 jan 31  2008 ./
drwxr-xr-x 8 root root 4096 jan 31  2008 ../
-rwxr-xr-x 1 root root  350 jan 31  2008 rc.local*

/users/node_f8/master/config/etc/ssh:
total 220
drwxr-xr-x 2 root root   4096 jan 13  2008 ./
drwxr-xr-x 8 root root   4096 jan 31  2008 ../
-rw------- 1 root root 132839 jan 13  2008 moduli
-rw-r--r-- 1 root root   1827 jui 16  2006 ssh_config
-rw------- 1 root root   3301 jui 16  2006 sshd_config
-rw------- 1 root root    672 jan 13  2008 ssh_host_dsa_key
-rw-r--r-- 1 root root    590 jan 13  2008 ssh_host_dsa_key.pub
-rw------- 1 root root    963 jan 13  2008 ssh_host_key
-rw-r--r-- 1 root root    627 jan 13  2008 ssh_host_key.pub
-rw------- 1 root root   1675 jan 13  2008 ssh_host_rsa_key
-rw-r--r-- 1 root root    382 jan 13  2008 ssh_host_rsa_key.pub

/users/node_f8/master/config/etc/sysconfig:
total 24
drwxr-xr-x 3 root root 4096 jan 16  2008 ./
drwxr-xr-x 8 root root 4096 jan 31  2008 ../
drwxr-xr-x 2 root root 4096 jui  6  2006 network-scripts/

/users/node_f8/master/config/etc/sysconfig/network-scripts:
total 32
drwxr-xr-x 2 root root 4096 jui  6  2006 ./
drwxr-xr-x 3 root root 4096 jan 16  2008 ../
-rw-r--r-- 1 root root  171 jui  6  2006 ifcfg-eth0
-rw-r--r-- 1 root root  214 jui  6  2006 ifcfg-eth1

/users/node_f8/master/config/etc/yum.repos.d:
total 144
drwxr-xr-x 2 root root 4096 nov 23  2007 ./
drwxr-xr-x 8 root root 4096 jan 31  2008 ../
-rw-r--r-- 1 root root  180 nov  9  2007 adobe-linux-i386.repo
-rw-r--r-- 1 root root  639 nov 13  2007 atrpms.repo
-rw-r--r-- 1 root root 1907 oct 30  2007 fedora-development.repo
-rw-r--r-- 1 root root  106 nov 23  2007 Fedora-install-media.repo
-rw-r--r-- 1 root root 1168 oct 30  2007 fedora.repo
-rw-r--r-- 1 root root 1078 oct 30  2007 fedora-updates.repo
-rw-r--r-- 1 root root 1156 oct 30  2007 fedora-updates-testing.repo
-rw-r--r-- 1 root root  283 nov 20  2007 freshrpms.repo
-rw-r--r-- 1 root root 1061 nov  9  2007 jpackage.repo
-rw-r--r-- 1 root root 1680 nov  9  2007 kde-redhat.repo
-rw-r--r-- 1 root root 1904 nov  7  2007 livna-devel.repo
-rw-r--r-- 1 root root 1808 nov  7  2007 livna.repo
-rw-r--r-- 1 root root 2003 nov  7  2007 livna-testing.repo
-rw-r--r-- 1 root root  522 nov  9  2007 planetccrma.repo
-rw-r--r-- 1 root root  179 nov  9  2007 rpmforge.repo
-rw-r--r-- 1 root root  152 nov 20  2007 texlive.repo

/users/node_f8/master/config/opt:
total 20
drwxr-xr-x 4 root root 4096 jan 21  2008 ./
drwxr-xr-x 5 root root 4096 ao\ufffd\ufffd 18 17:52 ../
drwxr-xr-x 3 root root 4096 jan 21  2008 mvapich-gcc/
drwxr-xr-x 3 root root 4096 jan 21  2008 mvapich-icc/

/users/node_f8/master/config/opt/mvapich-gcc:
total 12
drwxr-xr-x 3 root root 4096 jan 21  2008 ./
drwxr-xr-x 4 root root 4096 jan 21  2008 ../
drwxr-xr-x 2 root root 4096 jan 21  2008 bin/

/users/node_f8/master/config/opt/mvapich-gcc/bin:
total 16
drwxr-xr-x 2 root root 4096 jan 21  2008 ./
drwxr-xr-x 3 root root 4096 jan 21  2008 ../
-rw-r--r-- 1 root root  357 jan 21  2008 mpivars.csh
-rw-r--r-- 1 root root  204 jan 21  2008 mpivars.sh

/users/node_f8/master/config/opt/mvapich-icc:
total 12
drwxr-xr-x 3 root root 4096 jan 21  2008 ./
drwxr-xr-x 4 root root 4096 jan 21  2008 ../
drwxr-xr-x 2 root root 4096 jan 21  2008 bin/

/users/node_f8/master/config/opt/mvapich-icc/bin:
total 16
drwxr-xr-x 2 root root 4096 jan 21  2008 ./
drwxr-xr-x 3 root root 4096 jan 21  2008 ../
-rw-r--r-- 1 root root  357 jan 21  2008 mpivars.csh
-rw-r--r-- 1 root root  204 jan 21  2008 mpivars.sh

/users/node_f8/master/config/root:
total 16
drwxr-xr-x 3 root root 4096 ao\ufffd\ufffd 18 17:52 ./
drwxr-xr-x 5 root root 4096 ao\ufffd\ufffd 18 17:52 ../
drwxr-xr-x 2 root root 4096 ao\ufffd\ufffd 18 17:53 .ssh/

/users/node_f8/master/config/root/.ssh:
total 20
drwxr-xr-x 2 root root 4096 ao\ufffd\ufffd 18 17:53 ./
drwxr-xr-x 3 root root 4096 ao\ufffd\ufffd 18 17:52 ../
-rw-r--r-- 1 root root 9839 ao\ufffd\ufffd 18 17:53 authorized_keys

 

 

Installation des noeuds

On fait d'abord une installation du noeud 1, avant de cloner
vers les autres noeuds avec systemimager.

Pour l'install, on va utiliser kickstart en utilisant le maitre comme repository source,
puis les fichiers de post-install stockes sur le maitre.

les differentes etapes sont:
1. Preparation des repositories sur le maitre.
Pour cela, on utilise tout ce qu'il y a dans /var/cache/yum.
Il faut aussi copier tous les fichiers de la fedora de base.
On met  l'iso du DVD dans /users/node_f8/F8/Fedora-8-x86_64-DVD.iso,
puis on ouvre en loopback
mkdir /mnt/iso
mount -o loop -t iso9660 /users/node_f8/F8/Fedora-8-x86_64-DVD.iso /mnt/iso
cd /mnt/iso/Packages
cp * /var/cache/yum/fedora/packages (faut il ecraser ou non les packages en double ? je ne sauis pas ; probablement sans importance)
On peut ensuite demonter /mnt/iso
Pour preparer les repositories, on lance le script  /users/node_f8/master/scripts/prepare-repository (ca prend quelques minutes
a creer les repositories, en particulier pour "fedora").

2. Install kickstart du noeud
On boote a partir du CD-Rescue Fedora 8. Apres ESC, on recupere le boote, et on tape

linux ks=nfs:192.168.1.253:/users/node_f8/node/ksnode.cfg

(attention, il y a bien un : entre l'adresse IP et le path)
Bien prendre l'interface eth0, donner 192.168.1.253 comme serveur de nom
(mieux vaut pas a mon avis).
L'install se passe alors normalement en une quinzaine de minutes.
La partie post-install du kickstart est minimum, elle se contente
en fait de modifier le fstab pour pouvoir monter /users et de modifier le /etc/hosts
pour avoir le reseau qui marche correctement.


3. Apres le reboot, c'est un peu comme pour le maitre, il y a des scripts
plus ou moins globaux a passer. Ils sont dans /users/node_f8/node/scripts.
Le script global est suite-installation, que l'on detaille dans la suite. 4. run_once
Ce script modifie un certain nombre de fichiers de config
en sauvegardant les fichiers d'origine dans .orig
avec ce qui est dans /users/node_f8/node/config
(essentiellement dans le repertoire etc)
Il est donc important de ne faire tourner run_once qu'une seule fois.
Les differentes etapes sont:
  * modifier /opt pour qu'il pointe sur /usr/local
  * modifier /etc/X11/Xresources pour des couleurs plus agreables
  * modifier /etc/fstab pour que ca monte /var/cache/yum dans /yummaster
  * copier /users/node_f8/node/config/etc/bashrc dans /etc/bashrc (ajout des '-i'
    pour cp, mv, rm et configuration du path)
  * mettre a jour ld.so.conf pour avoir le compilo intel
  * mettre a jour /etc/ssh et /root/.ssh pour conserver les memes cles de cryptage
  * mettre a jour /etc/modprobe.conf, pour disabler eth1
  * mettre a jour /etc/security/limits.conf, pour mvapich
  * mettre a jour /etc/rc.d/rc.local pour demarrer opensm au boot, sur le noeud 1 
  * script ntpmgr, qui configure ntp pour se synchroniser sur master
  * script inittabgr, qui configure le inittab a 3 (pas de X)
  * script servicemgr, qui configure les services a demarrer au boot. On ne garde que le strict minimum, a savoir:
    - ntpd pour avoir une synchro de l'heure
    - crond pour quelques scripts (atd et anacron inutiles)
    - sshd pour pouvoir se connecter
    - network
    - netfs et rpcbind pour le montage NFS de /users
    - syslog-ng
    Seront ajoutes au cours de l'install openibd et pbs_mom
  * script usermgr, qui recopie les fichiers passwd, shadow, group et gshadow.
    En pratique, il ecrase tout. Lors d'une install d'une nouvelle Fedora, le mieux
    est donc de faire a la main, un mix des fichiers originaux (conserves dans .orig)
    et des utilisateurs rajoutes. En fait, on utilise ici un lien vers les fichiers du master.
  * script yummgr, qui configure yum pour acceder aux repositories interessants.
    Ici, on ne conserve pas les packages dans /var/cache/yum (option keepcache=0 dans /etc/yum/conf)
  
Il peut y avoir quelques warnings (fichiers manquants), sans grande importance.
L'execution de run_once prend quelques secondes.


5. rpm-yum-mgr
Ce script installe tous les packages necessaires (et meme plus) via yum et
les repositories installes sur le maitre dans /yummaster.
Il peut tourner plusieurs fois sans inconvenient.
L'execution prend environ 5 minutes.


6. install-rpm
Ce script installe des rpm non disponibles sous yum. Ils sont rassembles
dans /users/node_f8/master/rpm.
Tout est fait en "yum localinstall" plutot que rpm brutal.


7. ajout-c3
Ceci permet l'execution de commandes globales sur le cluster via cexec
(1 package sur les noeuds)


8. ajout-systemimager
Ce script installe systemimager
(un paquet de rpms) sur le noeud.

9. install-nonrpm installe les packages
utiles qui ne sont pas sous forme de rpm.
Il s'agit en general d'applications genre compilo ou librairie, installee
manuellement sur une machine et dont on a fait un .tgz qui peut etre
reutilise sur toute machine. En particulier, ca doit contenir les fichiers de license necessaires.
Les .tgz eux memes sont dans /users/node_f8/master/tar
Il y a :
  - install-intel-compiler-fortran-10.1 : Intel Fortran 32 bits version 10.1
  - install-intel-compiler-fortrane-10.1 : Intel Fortran 64 bits version 10.1
  - install-intel-compiler-cc-10.1 : Intel C 32 bits version 10.1
  - install-intel-compiler-cce-10.1 : Intel C 64 bits version 10.1
  - install-intel-idb-10.1 : Intel debugger 32 bits version 10.1
  - install-intel-idbe-10.1 : Intel debugger 64 bits version 10.1
  - install-mkl-10.0 : Intel MKL library version 10.0, 32 et 64 bits, serial et multithreaded
  - install-acml-4.0.1 : AMD ACML library, version 4.0.1, 64 bits, pour gfortran, ifort, pathscale, single et multi-threaded
  - install-libraries : installe differentes librairies utiles:
    * NAG 32 et 64 bits, ifort et gfortran. Par defaut, libnag.a pointe vers ifort 64 bits.
    * Lapack 32 et 64 bits pour ifort. Par defaut, liblapack.a pointe vers ifort 64 bits.
    * fgsl 32 et 64 bits pour ifort. Par defaut, libfgsl.a pointe vers ifort 64 bits (il y a egalement
      le include correspondant).
    * Goto (BLAS) 64 bits, pour tout compilateur, en versions opteron single et multi-threaded, avec ou sans support
      de sse3. Par defaut, libgoto.a (multi-threaded) pointe vers nosse3 sur la maitre, sse3 sur les noeuds. libgoto-single.a pointe
      sur les versions single.

10. ajout-ganglia
Ce scripte installe ganglia et ganglia-gmond et configure /etc/gmond.conf.
Pour sortir l'etat des noeuds

A la fin, il peut y a voir des fichiers appartenant a delande plutot
que root, on peut donc faire un "cd /opt; chown -R root.root ."

Finalement, il faut lancer un grand "yum update" qui prend environ 30 minutes.

***** contenu de /users/node_f8/node/config (le 18-8-2008)
Differents fichiers de config des noeuds sont gardes dans  /users/node_f8/node/config
Ils peuvent en principe ecraser brutalement les fichiers existant apres une
install standard de Fedora sur le noeud. Certains sont peut-etre
inutiles. Il y en a qui sont des liens sur /users/node_f8/master/config.

/users/node_f8/node/config/:
total 32
drwxr-xr-x  4 root root 4096 jan 20  2008 .
drwxr-xr-x  8 root root 4096 ao\ufffd\ufffd 18 16:48 ..
drwxr-xr-x  3 root root 4096 f\ufffd\ufffdv  7  2007 boot
drwxr-xr-x 10 root root 4096 ao\ufffd\ufffd 18 17:20 etc

/users/node_f8/node/config/boot:
total 24
drwxr-xr-x 3 root root 4096 f\ufffd\ufffdv  7  2007 .
drwxr-xr-x 4 root root 4096 jan 20  2008 ..
drwxr-xr-x 2 root root 4096 f\ufffd\ufffdv  7  2007 grub

/users/node_f8/node/config/boot/grub:
total 24
drwxr-xr-x 2 root root 4096 f\ufffd\ufffdv  7  2007 .
drwxr-xr-x 3 root root 4096 f\ufffd\ufffdv  7  2007 ..
-rw------- 1 root root 1114 ao\ufffd\ufffd 18 14:48 grub.conf

/users/node_f8/node/config/etc:
total 136
drwxr-xr-x 10 root root 4096 ao\ufffd\ufffd 18 17:20 .
drwxr-xr-x  4 root root 4096 jan 20  2008 ..
lrwxrwxrwx  1 root root   33 jan 16  2008 bashrc -> ../../../master/config/etc/bashrc
-rw-r--r--  1 root root  709 jan 16  2008 fstab
-rw-r--r--  1 root root 5917 jan 31  2008 gmond.conf
lrwxrwxrwx  1 root root   32 jan 11  2008 group -> ../../../master/config/etc/group
lrwxrwxrwx  1 root root   34 jan 11  2008 gshadow -> ../../../master/config/etc/gshadow
-rw-r--r--  1 root root 1207 ao\ufffd\ufffd 18 13:28 hosts
drwxr-xr-x  2 root root 4096 jun  4  2007 infiniband
drwxr-xr-x  2 root root 4096 jan 17  2008 init.d
-rw-r--r--  1 root root 1666 jan 16  2008 inittab
lrwxrwxrwx  1 root root   37 jan 16  2008 ld.so.conf -> ../../../master/config/etc/ld.so.conf
-rw-r--r--  1 root root  196 ao\ufffd\ufffd 18 17:18 modprobe.conf
-rw-------  1 root root   18 nov  6  2006 mpd.conf
-rw-r--r--  1 root root  172 jui 18  2006 ntp.conf
lrwxrwxrwx  1 root root   33 jan 11  2008 passwd -> ../../../master/config/etc/passwd
drwxr-xr-x  3 root root 4096 nov 25  2007 pki
drwxr-xr-x  2 root root 4096 jan 21  2008 rc.d
-rwxr-xr-x  1 root root  298 ao\ufffd\ufffd 18 17:20 rc.local
drwxr-xr-x  2 root root 4096 sep  6  2006 security
lrwxrwxrwx  1 root root   33 jan 11  2008 shadow -> ../../../master/config/etc/shadow
drwxr-xr-x  2 root root 4096 jun 26  2006 ssh
drwxr-xr-x  3 root root 4096 ao\ufffd\ufffd 18 17:25 sysconfig
-rw-r--r--  1 root root  282 jan 16  2008 yum.conf
drwxr-xr-x  2 root root 4096 jan 16  2008 yum.repos.d

/users/node_f8/node/config/etc/infiniband:
total 24
drwxr-xr-x  2 root root 4096 jun  4  2007 .
drwxr-xr-x 10 root root 4096 ao\ufffd\ufffd 18 17:20 ..
-rw-r--r--  1 root root  554 ao\ufffd\ufffd 18 17:19 openib.conf

/users/node_f8/node/config/etc/init.d:
total 32
drwxr-xr-x  2 root root 4096 jan 17  2008 .
drwxr-xr-x 10 root root 4096 ao\ufffd\ufffd 18 17:20 ..
-rwxr-xr-x  1 root root 8152 jan 17  2008 opensm
-rwxr-xr-x  1 root root 1738 mai 14  2007 pbs_mom

/users/node_f8/node/config/etc/pki:
total 16
drwxr-xr-x  3 root root 4096 nov 25  2007 .
drwxr-xr-x 10 root root 4096 ao\ufffd\ufffd 18 17:20 ..
drwxr-xr-x  2 root root 4096 nov 25  2007 rpm-gpg

/users/node_f8/node/config/etc/pki/rpm-gpg:
total 64
drwxr-xr-x 2 root root 4096 nov 25  2007 .
drwxr-xr-x 3 root root 4096 nov 25  2007 ..
-rw-r--r-- 1 root root 1391 nov 25  2007 jpackage.asc
-rw-r--r-- 1 root root 1569 nov 25  2007 kde-redhat.RPM-GPG-KEY
-rw-r--r-- 1 root root 1910 nov 25  2007 RPM-GPG-KEY
-rw-r--r-- 1 root root 1726 nov 25  2007 RPM-GPG-KEY-adobe-linux
-rw-r--r-- 1 root root 1044 nov 25  2007 RPM-GPG-KEY.atrpms
-rw-r--r-- 1 root root 1706 nov 25  2007 RPM-GPG-KEY-beta
-rw-r--r-- 1 root root 2161 nov 25  2007 RPM-GPG-KEY.dries.txt
-rw-r--r-- 1 root root 1519 nov 25  2007 RPM-GPG-KEY-fedora
-rw-r--r-- 1 root root 1105 nov 25  2007 RPM-GPG-KEY-fedora-rawhide
-rw-r--r-- 1 root root 1076 nov 25  2007 RPM-GPG-KEY-fedora-test
-rw-r--r-- 1 root root 1639 nov 25  2007 RPM-GPG-KEY-freshrpms
-rw-r--r-- 1 root root 1422 nov 25  2007 RPM-GPG-KEY-livna
-rw-r--r-- 1 root root 1547 nov 25  2007 RPM-GPG-KEY.planetccrma.txt
-rw-r--r-- 1 root root 1232 nov 25  2007 RPM-GPG-KEY-rawhide

/users/node_f8/node/config/etc/rc.d:
total 20
drwxr-xr-x  2 root root 4096 jan 21  2008 .
drwxr-xr-x 10 root root 4096 ao\ufffd\ufffd 18 17:20 ..
-rwxr-xr-x  1 root root  297 jan 21  2008 rc.local

/users/node_f8/node/config/etc/security:
total 24
drwxr-xr-x  2 root root 4096 sep  6  2006 .
drwxr-xr-x 10 root root 4096 ao\ufffd\ufffd 18 17:20 ..
-rw-r--r--  1 root root 1851 mai 14  2007 limits.conf

/users/node_f8/node/config/etc/ssh:
total 180
drwxr-xr-x  2 root root   4096 jun 26  2006 .
drwxr-xr-x 10 root root   4096 ao\ufffd\ufffd 18 17:20 ..
-rw-------  1 root root 132839 mar  2  2006 moduli
-rw-r--r--  1 root root   1827 mar  2  2006 ssh_config
-rw-------  1 root root   3301 mar  2  2006 sshd_config
-rw-------  1 root root    668 jun 26  2006 ssh_host_dsa_key
-rw-r--r--  1 root root    590 jun 26  2006 ssh_host_dsa_key.pub
-rw-------  1 root root    963 jun 26  2006 ssh_host_key
-rw-r--r--  1 root root    627 jun 26  2006 ssh_host_key.pub
-rw-------  1 root root   1679 jun 26  2006 ssh_host_rsa_key
-rw-r--r--  1 root root    382 jun 26  2006 ssh_host_rsa_key.pub

/users/node_f8/node/config/etc/sysconfig:
total 32
drwxr-xr-x  3 root root 4096 ao\ufffd\ufffd 18 17:25 .
drwxr-xr-x 10 root root 4096 ao\ufffd\ufffd 18 17:20 ..
-rw-r--r--  1 root root   47 ao\ufffd\ufffd 18 17:23 i18n
-rw-r--r--  1 root root   32 ao\ufffd\ufffd 18 17:23 keyboard
drwxr-xr-x  2 root root 4096 ao\ufffd\ufffd 18 17:26 network-scripts
-rw-r--r--  1 root root 4336 ao\ufffd\ufffd 18 17:23 opensm.conf

/users/node_f8/node/config/etc/sysconfig/network-scripts:
total 12
drwxr-xr-x 2 root root 4096 ao\ufffd\ufffd 18 17:26 .
drwxr-xr-x 3 root root 4096 ao\ufffd\ufffd 18 17:25 ..
-rw-r--r-- 1 root root  124 ao\ufffd\ufffd 18 17:26 ifcfg-ib0

/users/node_f8/node/config/etc/yum.repos.d:
total 36
drwxr-xr-x  2 root root 4096 jan 16  2008 .
drwxr-xr-x 10 root root 4096 ao\ufffd\ufffd 18 17:20 ..
-rw-r--r--  1 root root  159 jan 16  2008 adobe-linux-i386.repo
-rw-r--r--  1 root root  207 jan 16  2008 fedora.repo
-rw-r--r--  1 root root  184 jan 16  2008 fedora-updates.repo
-rw-r--r--  1 root root  429 jan 16  2008 kde-redhat.repo
-rw-r--r--  1 root root  237 jan 16  2008 livna.repo
-rw-r--r--  1 root root  121 jan 16  2008 texlive.repo


Difference pour les noeuds 20 et 21:
Les fichiers
/etc/sysconfig/network-scripts/ifcfg-ib{0,1} (deux ports au lieu d'un)
/etc/infiniband/openib.conf (module different)
/etc/modprobe.conf
/boot/grub/grub.conf (pas de memtest)
sont les seuls qui different.
Par flemme, j'ai juste duplique l'arborescence.

gestion des cles

Pas de probleme pour les utilisateurs lambda qui partagent le home-directory par NFS.
Pour root, on fait comme suit:
1. Sur chaque noeud (y compris thorgal), on genere une cle par
ssh-keygen -t dsa
2. On rassemble tous les /root/.ssh/id_dsa.pub dans un fichier unique que l'on met dans /root/.ssh/authorized_keys
sur thorgal.
3. On le recopie dans /users/node_f8/master/config/root/.ssh/authorized_keys
4. On peut alors le recopier sur chaque noeud dans /root/.ssh/authorized_keys.


OFED


Installation de OFED, version 1.4-alpha1 (datant du 18 aout 2008)

Il faut tout d'abord recuperer OFED-1.4-alpha1.tgz sur le site http://www.openfabrics.org/builds/ofed-1.4/release/OFED-1.4-alpha1.tgz
Sinon, on peut utiliser git pour recuperer les dernieres versions. Voir https://wiki.openfabrics.org/tiki-index.php
Attention : tout ce qui est svn semble etre obsolete (en avril 2007).
On peut detarrer le package OFED-1.4-alpha1.tgz dans /users/node_f8/master/OFED-1.4-alphpa1
Il y a quelques fichiers a modifier par rapport au OFED-1.4-alpha1 original:
* MYREADME
* myofed.conf

Les contenus suivent.
La compilation du tout se fait via gcc. Inutile d'essayer un compilo
autre, ca n'ameliore rien, bien au contraire.

J'ai essaye d'autres versions: OFED-1.3.2-20080728-0355.tgz, OFED-1.4-20080814-0600.tgz, OFED-1.3.1.tgz
Elles plantent. Les 1.3 ne supportent pas le noyau 2.6.25, la 1.4 plante a l'install.



******* MYREADME par DD le 18-8-2008 *************
Avant de lancer l'install, il est conseille d'effacer entierement /opt/ofed,
sinon des scories risquent de s'y accumuler.

Pour installer OFED, il suffit de lancer simplement

./install.pl -c myofed.conf

pour installer automatiquement tout ce qui parait souhaitable.
Le ibsim et tgt-generic plantent a l'install, il faut donc les disabler.
Pour les tests, mvapich-intel, mvapich2-intel et openmpi-intel plantent juste
a l'installation, car il ne trouve pas les librairies C dans la base de donnees
rpm, puisque l'install a ete faire manuellement via un .tgz.
Je les ai donc disables.
Par contre, j'ai laisse le ipoib, pour le fun.
Il y a quelques petits bugs a corriger a la main:
* en cours d'install, il se plaint de ne pas trouver dapl-2.0.11-1.x86_64.rpm et s'arrete. Il suffit en
fait de faire (virer le .fc8 au milieu)
cd /users/node_f8/master/OFED-1.4-alpha1/RPMS/fedora-release-8-5/x86_64
cp dapl-2.0.11-1.fc8.x86_64.rpm dapl-2.0.11-1.x86_64.rpm
pour que ca marche (faire de meme pour dapl-debuginfo, dapl-devel, dapl-devel-statuic et dapl-utils).
* le fichier opensm.conf est apres l'install dans /etc/@OPENSM_CONFIG_SUB_DIR@,
alors qu'il devrait etre dans /etc/sysconfig. Copier a la main.
* commenter ib0 dans le /etc/modprobe.conf, pour
eviter de demarrer ib0 (facultatif, en fait a eviter si on veut utiliser par exemple le MPI
de Intel);
* sur le maitre, empecher le demarrage du demon openibd
chkconfig --level 35  openibd off

On peut aussi ajouter a la main des liens
du type (il y en a 6):
/opt/ofed/mpi/gcc/mvapich2-1.0.3 vers /opt/mvapich2-gcc

On souhaite aussi utiliser mpi-selector.
Les 6 compilos OFED sont installes automatiquement.
Pour les install manuelles, il faut recopier les fichiers mpivars.{csh,sh}
dans /users/node_f8/master/config/opt/mvapich-gcc vers /opt/mvapich-gcc/bin,
puis taper quelque chose du genre:
mpi-selector --register mvapich-gcc --source-dir /opt/mvapich-gcc/bin
Ensuite, chaque utilisateur peut selectionner son mpi avec
mpi-selector-menu.
     
Il faut faire l'install d'abord sur le noeud 1, puis sur le noeud 20 et enfin sur le maitre
et cloner ensuite les noeuds 1 et 20.
Attention, les modules mlx4 (pour carte Infiniband ConnectX) et mthca
(pour carte Infiniband III) sont installes simultanement sur une machine.
A priori, ce n'est pas grave. On peut corriger dans /etc/infiniband/openib.conf

On peut ensuite faire une install personnalisee
de mvapich (et mvapich2, openmpi), voir plus loin
 

************** end MYREADME ***********************

***************** myofed.conf *********************
kernel-ib=y
core=y
mthca=y
mlx4=y
ipoib=y
sdp=y
srp=y
srpt=y
rds=y
kernel-ib-devel=y
libibverbs=y
libibverbs-devel=y
libibverbs-devel-static=y
libibverbs-utils=y
libibverbs-debuginfo=y
libmthca=y
libmthca-devel-static=y
libmthca-debuginfo=y
libmlx4=y
libmlx4-devel=y
libmlx4-debuginfo=y
libcxgb3=n
libcxgb3-devel=n
libcxgb3-debuginfo=n
libnes=n
libnes-devel-static=n
libnes-debuginfo=n
libipathverbs=n
libipathverbs-devel=n
libipathverbs-debuginfo=n
libibcm=y
libibcm-devel=y
libibcm-debuginfo=y
libibcommon=y
libibcommon-devel=y
libibcommon-static=y
libibcommon-debuginfo=y
libibumad=y
libibumad-devel=y
libibumad-static=y
libibumad-debuginfo=y
libibmad=y
libibmad-devel=y
libibmad-static=y
libibmad-debuginfo=y
ibsim=n
ibsim-debuginfo=n
librdmacm=y
librdmacm-utils=y
librdmacm-devel=y
librdmacm-debuginfo=y
libsdp=y
libsdp-devel=y
libsdp-debuginfo=y
opensm=y
opensm-libs=y
opensm-devel=y
opensm-debuginfo=y
opensm-static=y
compat-dapl=n
compat-dapl-devel=n
dapl=y
dapl-devel=y
dapl-devel-static=y
dapl-utils=y
dapl-debuginfo=y
perftest=y
mstflint=y
sdpnetstat=y
srptools=y
rds-tools=y
ibutils=y
infiniband-diags=y
qperf=y
qperf-debuginfo=y
ofed-docs=y
ofed-scripts=y
tgt-generic=n
mpi-selector=y
mvapich_gcc=y
mvapich_intel=y
mvapich2_gcc=y
mvapich2_intel=y
openmpi_gcc=y
openmpi_intel=y
mpitests_mvapich_gcc=y
mpitests_mvapich_intel=n
mpitests_mvapich2_gcc=y
mpitests_mvapich2_intel=n
mpitests_openmpi_gcc=y
mpitests_openmpi_intel=n
build32=0
prefix=/opt/ofed
mvapich2_conf_impl=ofa
mvapich2_conf_romio=1
mvapich2_conf_shared_libs=1
mvapich2_conf_ckpt=0
mvapich2_conf_vcluster=small
mvapich2_conf_dapl_provider=ib0
************* end myofed.conf **********************

L'installation la plus simple est de le faire d'abord sur un noeud, puis
simplement sur le maitre, ou on ne regenere pas les executables,
mais on se contente d'installer les rpm dans RPMS/fedora-release-8-5
par install.pl -c myofed.conf

Pour desinstaller (avant upgrade), on peut aller dans
/opt/ofed/sbin et executer ofed_uninstall.sh

 

INSTALLATION personnalisee de MPI


On peut faire des installations de MPI apres
celles de OFED.
2 versions sont installees:
* mvapich-trunk-2008-08-14 avec gcc
* mvapich-trunk-2008-08-14 avec icc

Ca marche aussi avec mvapich-1.0.0 (qui est en fait une version beta).
Ils sont installes sur chaque noeud (via clonage) et sur le maitre
dans les directories /opt/mvapich-{gcc,icc}-custom.
La procedure d'installation est decrite ci-dessous.

Une install de mvapich2-1.2rc1 a echoue, le lancement des differents
jobs ne se,blant pas marcher...


Installation de mvapich


On fait une installation "multirail" partout, pour avoir la meme
chose sur tous les noeuds.

Il faut tout d'abord recuperer le package mvapich sur
http://mvapich.cse.ohio-state.edu/nightly/mvapich/trunk/
(voir aussi http://mvapich.cse.ohio-state.edu/download/mvapich/)
On detare et on ajoute dans mvapich-trunk-1008-08-14 les fichiers suivants:

* make.mvapich.gen2_multirail (en sauvegardant l'original dans .orig)
C'est juste pour avoir MPE compile avec, les shared libraires et ssh au lieu de rsh.
diff make.mvapich.gen2_multirail   make.mvapich.gen2_multirail.orig
80c80
<       $ROMIO --with-mpe -enable-sharedlib -lib="$LIBS" 2>&1 |tee config-mine.log
---
>       $ROMIO --without-mpe -lib="$LIBS" 2>&1 |tee config-mine.log

* set_gcc.
export CC=gcc
export FC=gfortran
export F77=gfortran
export F90=gfortran
export CXX=g++
export F77_GETARGDECL=" "
export PREFIX=/opt/mvapich-gcc-custom
export OPT_FLAG="-O -march=k8 -mcmodel=medium"
export FFLAGS="-O -march=k8 -mcmodel=medium -L/opt/ofed/lib64"
export RSHCOMMAND=ssh

* set_icc
export CC=icc
export FC=ifort
export F77=ifort
export F90=ifort
export CXX=icpc
export PREFIX=/opt/mvapich-icc-custom
export OPT_FLAG="-O -Os -xW -ip -fno-alias -align -mcmodel=medium -D__INTEL_COMPILER"
export FFLAGS="-O -Os -xW -ip -fno-alias -align -mcmodel=medium -D__INTEL_COMPILER -L/opt/ofed/lib64"
export RSHCOMMAND=ssh

Pour generer mvapich, on fait d'abord
. set_gcc
ou
. set_icc

Puis
make.mvapich.gen2_multirail

On a alors le configure, puis le make, puis le make install.

Le plus simple est de generer tout cela sur node1, puis de faire un make install simple
sur le maitre et sur node20.

ATTENTION:
1. Si on oublie de le faire pour passer a un autre compilo,
le binaire est ecrase et il faut refaire tout avec le make install.
2. Il faut faire cela comme root, sinon ca ne marche pas dans la phase de config (bacle,
le compilo C++ ne veut pas compiler iostream.h)

Utilisation de mpi-selector


On souhaite aussi utiliser mpi-selector.
Les 6 compilos OFED sont installes automatiquement.
Pour les install manuelles, il faut recopier les fichiers mpivars.{csh,sh}
dans /users/node_f8/master/config/opt/mvapich-gcc-custom/bin vers /opt/mvapich-gcc-custom/bin,
puis taper quelque chose du genre:
mpi-selector --register mvapich-gcc-custom --source-dir /opt/mvapich-gcc-custom/bin
Ensuite, chaque utilisateur peut selectionner son mpi avec
mpi-selector-menu.
Les mpivars.* sont stockes dans /var/mpi-selector/data.
On peut recopier cette structure noeud a noeud, et sur le maitre (c'est identique partout).
Elle est dans /users/node_f8/master/config/var/mpi-selector/data avec un lien
vers cette structure dans /users/node_f8/{node,node20}.
Le MPI system-wide est dans /etc/sysconfig/mpi-selector (aussi copie dans /users/node_f8/{master,node,node20}/etc/sysconfig)
et pour chaque user dans $HOME/.mpi-selector.
Pour l'instant, c'est mvapich_intel-1.0.1.

Clonage d'un noeud


Clonage d'un noeud
On utilise systemimager. La version stable 4.0.2 marche correctement.
C'est installe sur thorgal, avec :
systemconfigurator-2.2.11-1.noarch.rpm
systemimager-client-4.0.2-1.noarch.rpm
systemimager-common-4.0.2-1.noarch.rpm
systemimager-server-4.0.2-1.noarch.rpm
systemimager-x86_64boot-standard-4.0.2-1.noarch.rpm
systemimager-x86_64initrd_template-4.0.2-1.noarch.rpm
perl-AppConfig-1.52-4.noarch.rpm

Le tout est dans /users/node_f8/master/scripts/ajout-systemimager,
il y un fichier README dans /users/node_f8/systemimager qui contient :

************************************
#README  by DD le 16-1-2008
Ce repertoire contient les rpm a installer pour systemimager
Inutile de faire tourner le script install, il suffit
d'installer sauvagement les rpm, puis de demarrer
les services.
En fait, cela est fait comme il faut dans les scripts d'install,
sauf le demarrage de systemimager-server-rsyncd sur le maitre
qui doit etre fait manuellement.
**************************

Pas clair de savoir quels services doivent etre demarres sur quelles machines.
A priori : rien sur les noeuds, mais il semble rester un rsync
qui peut trainer apres generation de l'image -> a tuer.
Sur le maitre, systemimager-server-rsyncd est indispensable
pour la premiere install d'un noeud (et apres ???).
Installe sur les noeuds:
systemimager-common-4.0.2-1.noarch.rpm
systemimager-client-4.0.2-1.noarch.rpm
systemimager-x86_64initrd_template-4.0.2-1.noarch.rpm
systemconfigurator-2.2.11-1.noarch.rpm

Pour preparer initialement l'image sur le golden client (noeud 1), on utilise juste sur le noeud:
si_prepareclient --server 192.168.1.253 
(ca prend 2 minutes environ)

Pour la recuperer sur le maitre, on utilise la commande normale:
si_getimage --golden-client 192.168.1.1 --image image_node1 --ip-assignment dhcp
(la premiere fois, ca prend une trentaine de minutes).
A la fin, il propose de faire tourner le script si_clusterconfig.
J'ai repondu "y" et on edite alors le fichier /var/lib/systemimager/scripts/cluster.txt
C'est en XML, j'ai configure quelque chose d'apparemment raisonable, mais
je ne suis pas sur que ca serve a quoi que ce soit...

Ensuite, il faut preparer sur la maitre le cd d'autoinstall via:
si_mkautoinstallcd --out-file image_node1.iso
(Attention, il faut que le package syslinux soit installe)
Il faut choisir une flavor (choix: standard ou image_node1).
J'ai pris image_node1 (qui fait une image plus grosse, 26 Mo au lieu de 10 Mo),
sans raison particuliere, mais ca marche.
On burne alors l'image_node1.iso sur un CD.
Pour les noeuds 20 et 21 (update du 18-8-2008), on utilise la flavor image_node20,
on cree et burne donc l'image image_node20.iso, donc un CD d'autoinstall different.

Il faut demarrer sur le maitre le service systemimager-server-rsyncd.
J'ai tape

chkconfig --level 35 systemimager-server-rsyncd on

Pour chaque noeud, on peut booter sur ce CD, et l'install est automatique (ca prend
environ 15 minutes).
Deux petits problemes:
* grub baptise le kernel a booter image_node1, mais c'est bien le bon noyau.
* l'interface ib0 tente de demarrer...


Pour updater une image:
1. Sur le noeud de reference :
si_prepareclient --server 192.168.1.253
en repondant oui a tout
2. Sur le maitre, recuperer l'image avec :
si_getimage --golden-client 192.168.1.1 --image image_node1 --ip-assignment dhcp
ou image_node1 est le nom de l'image
en repondant oui SAUF
Would you like to update the autoinstall script for this image? ([y]/n):
ou il faut imperativement repondre non (sinon on ecrase les scripts precedents)
3. Pour recopier sur un noeud :
si_updateclient --server 192.168.1.253 --image image_node1 --no-bootloader
(rajouter --yes pour eviter d'avoir a confirmer)
Pour faire cela simultanement sur tous les noeuds, on peut utiliser
cexec a partir du maitre avec une commande du type:
cexec local:2-11  si_updateclient --server 192.168.1.253 --image image_node1 --no-bootloader --yes
qui mettra a jour les noeuds 3 a 12.
Idem pour les noeuds 20 et 21 en changeant bien sur image_node1 en image_node20.

Il y a (a la date du 18-8-2008) 3 images sauvegardees dans /var/lib/systeminager/images:
* image_node1, qui contient l'image du noeud 1, la plus recente, avec kernel fedora 2.6.25.14-69.fc8
* image_node11, obsolete
* image_node20, qui contient l'image du noeud 20, la plus recente, avec kernel fedora 2.6.25.14-69.fc8


 Install Torque

Avant, on faisait une installation manuelle.
Maintenant, on utilise yum.

A la brutale sur le master, on fait:
yum install torque torque-server torque-scheduler torque-mom torque-client torque-gui libtorque libtorque-devel torque-docs perl-PBS
Pour commencer on arrete les serveurs:
service pbs_server stop
service pbs_mom stop
service pbs_sched stop
On va ensuite dans /users/node_f8/master/torque_config
et on fait
cp ./server_name /var/torque
Puis on fait tourner le script
./mytorque.setup root
qui utilise aussi le fichier my_input_for_qmgr
On peut verifier que c'est bon avec
qmgr -c 'print server'
Il faut ensuite mettre la liste des noeuds avec
cp ./nodes /var/torque/server_priv
(ATTENTION, quand on relance le script mytorque.setup, tout fichier nodes existant
est supprime)
On peut faire ensuite (a ameliorer sans doute)
cp ./sched_config /var/torque/sched_priv
Si necessaire (en principe non), on peut stopper le pbs_server avec
qterm -t quick
Pour etre operationnel, il faut que pbs_server et pbs_sched tourne sur le master
et pbs_mom si on veut qu'il apparaisse dans xpbsmon.
Sur le master:
chkconfig --level 35  pbs_server on
chkconfig --level 35  pbs_sched on
chkconfig --level 35  pbs_mom on

Sur les noeuds (marche aussi pour node20), on fait comme suit.
On installe:
yum install torque torque-mom torque-client torque-gui libtorque libtorque-devel
On veut que seul pbs_mom tourne, donc
chkconfig --level 35  pbs_mom on
On va ensuite dans /users/node_f8/master/torque_config
Pour commencer on fait
cp ./server_name /var/torque
cp ./config /var/torque/mom_priv
Il faut aussi modifier le pbs_mom qui, par defaut, limite la memoire
lockable a 32M, ce qui ne permet pas de faire tourner openmpi.
On fait donc
cp /etc/init.d/pbs_mom /etc/init.d/pbs_mom.orig
cp /users/node_f8/node/config/etc/init.d/pbs_mom /etc/init.d/pbs_mom
 
Pour etre operationnel, il n'y a que redemarrer pbs_mom



Firmware des cartes Infiniband


Il s'agit de cartes Single Port InfiniHost(TM) III Lx MemFree PCI Express HCA Cards
(MemFree PCI Express x8, Tall Bracket, RoHS-R5 HCA Card)

Elles ont ete livrees avec un firmware 1.08, depuis upgrade en 1.10 et ensuite en 1.20.
A chaque fois, la latence a ete legerement amelioree (surtout les barrieres MPI).
On trouve les nouvelles versions de firmware chez Mellanox :
http://www.mellanox.com/support/firmware_table_IH3Lx.php
La derniere version est fw-25204-1_2_000-MHGS18-XTC_A2-A3.bin

Les firmwares et scripts sont gardes dans
/users/node_f8/node/firmware-infiniband
Il y a en principe un script check_infiniband qui permet
de verifier que c'est ok et par exemple burn_infiniband_firmware_to_1.20
qui permet d'upgrader le firmware, sans toucher au "invariant sector"
(apparemment, on pourrait y toucher, mais c'est potentiellement
dangereux).
Ces scripts necessitent /opt/ofed/bin/mstflint qui est installe dans OFED-1.XXX
Il semble que mstflint soit un peu ancien, en passe d'etre remplace
par quelque chose de plus moderne. Pour l'instant ca marche et ca suffit.

Noeuds 20 et 21
Il s'agit de cardes Double Port Infinihost
Elles ont ete livrees avec un firmware 2.3, upgrade le 14-8-2008 en 2.5.
C'est fw-25408-2_5_000-MHGH29-XTC_A1.bin
C'est garde dans /users/node_f8/node20/firmware-infiniband
Il y a en principe un script check_infiniband qui permet
de verifier que c'est ok et par exemple burn_infiniband_firmware_to_2.5
qui permet d'upgrader le firmware, sans toucher au "invariant sector".


*********************************************************************

***************** scripts de tests intensifs OpenMP ************
Pour tester les noeuds independamment sosu forte charge (sans message MPI),
on peut faire tourner un job OpenMP a 4 threads sur chaque noeud.
On trouve dans /users/node_f8/node/tests ce qu'il faut pour cela:
* Un executable hes216 (venant de ~delande/sdef2) compile
avec OpenMP et la librairie Gotoblas, de facon a fonctionner
de maniere optimale avec OMP_NUM_THREADS=4 et GOTO_NUM_THREADS=1
(alternativement, n'importe quelle librairie Blas monothread fait l'affaire).
* les fichiers d'input entree1.dat et helium.input necessaires au run.
* trois fichiers de script: une seule passe (script),
infini (script_infini), infini alterne avec un "du -s /var/*' (script2_infini).

Il faut par exemple faire sur le maitre
cexec 'cd /users/node_f8/node/tests ; time ./script'
pour executer sur tous les noeuds.
Le temps devrait etre de l'ordre de 235 secondes avec les Opteron 2.6 GHz.
Toute difference significative entre noeuds (plus de 5 secondes)
est sans doute l'indice d'un probleme hardware).
Avec le compilo Intel et la librairie Goto 1.19 (single), on gagne
un peu avec un temps total de 223 secondes, pour une execution directe sur le noeud
(le 16-1-2008).
Temps confirme le 19-8-2008 avec l'ancien binaire.
En recompilant et en liant avec /opt/lib/libgoto_opteron-sse3-r1.26.so,
on passe a 216 secondes. Avec MKL, on reste a 227 secondes.
On met quand meme la version MKL dans /users/node_f8/node/tests, afin d'avoir la meme
version partout.

Kernel

Installation d'un nouveau kernel

Il faut, dans l'ordre:
* Installer kernel et kernel-devel sur thorgal, IMPERATIVEMENT avec yum
(pas de rpm sauvage, sinon ca fout tout en l'air). A la rigueur on peut faire
un "yum localinstall kernelxxxx" a condition de bien mettre les rpm dans /var/cache/yum/updates/packages
* Mettre a jour le repository de thorgal en allant dans /var/cache/yum/updates et en tapant "createrepo ."
* Faire un "yum update kernel kernel-devel" sur le noeud 1.
* Rebooter le noeud 1
* Pour installer sur tous les noeuds, il faut faire un coup de systemimager apres install sur le noeud
* A un moment, il faut rebooter thorgal pour avoir le meme kernel partout
* Apres install, verifier les resultats de lsmod, lspci, dmidecode et dmesg, en les sauvant dans un fichier
avec le nom du kernel. Ils sont stockes
dans /users/node_f8/node/messages.


Il vaut mieux donc utiliser un kernel Fedora, non recompile.
Au cas ou, les fichiers .config pour les differents
(vieux) kernels sont dans /users/node_f8/master/kernel-config

Il vaut mieux aussi utiliser l'option acpi=noapic au boot,
sinon, on a le meme risque de plantage.

Le kernel memtest86+ a ete rajoute a la main dans le grub.conf,
il n'y est pas normalement.

Le /boot/grub/grub.conf sur les noeuds (idem sur le maitre
sans le acpi=noapic) :

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,0)
#          kernel /boot/vmlinuz-version ro root=/dev/sda1
#          initrd /boot/initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.23.9-85.fc8)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.23.9-85.fc8 ro root=LABEL=/ quiet acpi=noapic
        initrd /boot/initrd-2.6.23.9-85.fc8.img
title Fedora (2.6.23.1-42.fc8)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.23.1-42.fc8 ro root=LABEL=/ quiet acpi=noapic
        initrd /boot/initrd-2.6.23.1-42.fc8.img
title memtest86+
        root (hd0,0)
        kernel /memtest86+-1.70 ro root=LABEL=/ quiet


Options mvapich

Pour faire tourner de maniere optimale le code de diagonalisation
Helium sur les noeuds 1 a 12, on utilise les options suivantes:

/opt/mvapich-icc/bin/mpirun_rsh -n 48 -hostfile ./mf12x4 VIADEV_SMP_EAGERSIZE=50 VIADEV_SMPI_LENGTH_QUEUE=101  VIADEV_RNDV_PROTOCOL=RGET VIADEV_RENDEZVOUS_THRESHOLD=50000  VIADEV_CPU_MAPPING=0,2,1,3 ./pzep219

Explications:
* compilateur icc pour les meilleures performances avec options -Os -xO -ip -mcmodel=medium -fno-alias -vec-report0 -no-prec-div  -fp-model fast=2
(-ipo n'apporte pas de gain, ni -O2 ou -O3)
* hostfile: mf12x4 du type
node1
node1
node1
node1
node2
node2
node2
node2
node3
node3
(un peu mieux que round robin)
* VIADEV_RNDV_PROTOCOL=RGET accelere un peu par rapport a RPUT ou R3
* VIADEV_SMP_EAGERSIZE=50 VIADEV_SMPI_LENGTH_QUEUE=101 VIADEV_RENDEZVOUS_THRESHOLD=50000 : option la plus importante.
Cela met tous les transferts de blocs en mode "eager". Le seuil indique (en kOctets pour SMP, on Octets pour RENDEZVOUS...)
doit etre legerement superieur a la taille d'un bloc, soit 16*nsizg*nsizg. Il faut en plus mettre VIADEV_SMPI_LENGTH_QUEUE
a STRICTEMENT plus (i.e. +1) que le double de VIADEV_SMP_EAGERSIZE. Le gain par cette option
est de 30% environ.
*  VIADEV_CPU_MAPPING=0,2,1,3. Indique le mapping des processes sur les coeurs de chaque noeud. Gain faible,
mais pourquoi s'en priver ?

Pour mvapich2 (version 1.0.3), l'optimum est semblable:
/opt/mvapich2-icc/bin/mpiexec -n 48 -env MV2_IBA_EAGER_THRESHOLD 50000 -env SMP_EAGER_SIZE 50 -env SMPI_LENGTH_QUEUE 101 ./pzep219
sauf que:
* C'est un peu moins rapide (4% environ)
* SMPI_LENGTH_QUEUE semble inutile
* MV2_RNDV_PROTOCOL semble donner le meme resultat pour RPUT et RGET
* Le CPU mapping peut etre fait via l'optione -machinefile ./mf (avant -n 48) mais ne semble
pas ameliorer les choses.


/opt/mvapich2-icc/bin/mpiexec -n 48 -env MV2_IBA_EAGER_THRESHOLD 50000 -env SMP_EAGER_SIZE 50 -env SMPI_LENGTH_QUEUE 101 ./pzep219
ou
/opt/mvapich2-icc-custom/bin/mpirun_rsh -n 48 -hostfile $PBS_NODEFILE MV2_IBA_EAGER_THRESHOLD=45000 MV2_USE_SHMEM_COLL=0 MV2_USE_SHARED_MEM=0 ./pzep219