Outils pour utilisateurs

Outils du site


openmpi

Installation de OpenMPI/MPICH sur CentOS 6.2

Installation de la base

  • Installer dans un premier temps un environnement de compilation pour CentOS (si besoin de compiler votre futur programme)
[root@master ~]# yum groupinstall 'Development Tools'
  • Installer OpenMPI
[root@master ~]# yum install openmpi openmpi-devel
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================================================================================
 Package                                                Arch                                      Version                                                   Repository                                  Size
=============================================================================================================================================================================================================
Installing:
 openmpi                                                x86_64                                    1.5.3-3.el6                                               base                                       2.1 M
 openmpi-devel                                          x86_64                                    1.5.3-3.el6                                               base                                       2.4 M
Installing for dependencies:
 cloog-ppl                                              x86_64                                    0.15.7-1.2.el6                                            base                                        93 k
 cpp                                                    x86_64                                    4.4.6-3.el6                                               base                                       3.7 M
 environment-modules                                    x86_64                                    3.2.7b-6.el6                                              base                                        96 k
 gcc                                                    x86_64                                    4.4.6-3.el6                                               base                                        10 M
 gcc-gfortran                                           x86_64                                    4.4.6-3.el6                                               base                                       4.7 M
 glibc-devel                                            x86_64                                    2.12-1.47.el6_2.12                                        updates                                    967 k
 glibc-headers                                          x86_64                                    2.12-1.47.el6_2.12                                        updates                                    598 k
 kernel-headers                                         x86_64                                    2.6.32-220.13.1.el6                                       updates                                    1.6 M
 libesmtp                                               x86_64                                    1.0.4-16.el6                                              epel                                        57 k
 libgfortran                                            x86_64                                    4.4.6-3.el6                                               base                                       263 k
 libibverbs                                             x86_64                                    1.1.5-3.el6                                               base                                        44 k
 librdmacm                                              x86_64                                    1.0.14.1-3.el6                                            base                                        27 k
 mpfr                                                   x86_64                                    2.4.1-6.el6                                               base                                       157 k
 ppl                                                    x86_64                                    0.10.2-11.el6                                             base                                       1.3 M
 tcl                                                    x86_64                                    1:8.5.7-6.el6                                             base                                       1.9 M
Updating for dependencies:
 glibc                                                  x86_64                                    2.12-1.47.el6_2.12                                        updates                                    3.8 M
 glibc-common                                           x86_64                                    2.12-1.47.el6_2.12                                        updates                                     14 M

Transaction Summary
=============================================================================================================================================================================================================
Install      17 Package(s)
Upgrade       2 Package(s)

Total download size: 48 M
Is this ok [y/N]: y
  • Installer Mpich2
[root@master src]# yum install mpich2-devel
Dependencies Resolved

=============================================================================================================================================================================================================
 Package                                             Arch                                          Version                                                 Repository                                   Size
=============================================================================================================================================================================================================
Installing:
 mpich2-devel                                        x86_64                                        1.2.1-2.3.el6                                           base                                        997 k
Installing for dependencies:
 mpich2                                              x86_64                                        1.2.1-2.3.el6                                           base                                        3.7 M

Transaction Summary
=============================================================================================================================================================================================================
Install       2 Package(s)

Total download size: 4.7 M
Installed size: 14 M
Is this ok [y/N]: y

OpenMPI fonctionne en Module

  • Vérifier que le module tourne
[root@master src]# which mpirun
/usr/bin/which: no mpirun in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

C'est pas le cas

  • Vérifier que le module est dispo
[root@master src]# module avail

-------------------------------------------------------------------------------------- /usr/share/Modules/modulefiles ---------------------------------------------------------------------------------------
dot         module-cvs  module-info modules     null        use.own

--------------------------------------------------------------------------------------------- /etc/modulefiles ----------------------------------------------------------------------------------------------
compat-openmpi-x86_64 openmpi-x86_64
  • Et enfin, charger le module
[root@master src]# module add openmpi-x86_64
[root@master src]# mpicc -v
Utilisation des specs internes.
Target: x86_64-redhat-linux
Configuré avec: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Modèle de thread: posix
gcc version 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC) 

Youpi !

Configuration de MPICH

Pour faire tourner des applis en cluster, on peut utiliser MPITCH.

Le but est de créer sur chaque machine de son cluster un utilisateur du même nom avec le même mot de passe. (même si c'est pas conseillé)

Dans mon cas, les machines sont sur un LAN, et non relié directement à Internet.

Il y'(a deux fichiers de configuration à placer dans le home de l'user concerné, dans mon cas encore une fois l'user c'est “cluster”

  • ~/.mpd.conf
cluster@master:~$ touch ~/.mpd.conf
cluster@master:~$ chmod 600 ~/.mpd.conf
cluster@master:~$ echo secretword=THESUPERMOTDEPASSEDECLUSTERquitue>~/.mpd.conf
  • ~/mpd.hosts
cluster@master:~$ ifconfig
brLan     Link encap:Ethernet  HWaddr 74:xx:xx:xx:xx:2E
          inet adr:192.168.1.1  Bcast:192.168.1.255  Masque:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1685752 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1505656 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:219240819 (209.0 MiB)  TX bytes:335105161 (319.5 MiB)

cluster@master:~$ cat /proc/cpuinfo|grep processor|wc -l
4
cluster@master:~$ echo 192.168.1.1:3>~/mpd.hosts

J'ai décidé de laisser volontairement un core libre, pour ne pas surcharger totalement ma machine.

  • Test des commandes de bases
[cluster@master /]$ mpdboot
[cluster@master /]$ mpdtrace
master
[cluster@master /]$ mpdexit

usage: mpdexit mpdid
    mpdid may be obtained via mpdtrace -l (or may be "localmpd")
Causes a single mpd to exit (and thus exit the ring).
Note that this may cause other mpds to become 'isolated' if they
entered the ring through the exiting one.

Test benchmarks sur John the Ripper sur une seule machine

Commande standard (mono core)

[cluster@master run]$ ./john -format=DES -test
Benchmarking: Traditional DES [128/128 BS SSE2-16]... DONE
Many salts:     3440K c/s real, 3447K c/s virtual

Only one salt:  2902K c/s real, 2902K c/s virtual

Commande pour 4 core

[cluster@master run]$ mpirun -np 4 ./john -format=DES -test
Benchmarking: Traditional DES [128/128 BS SSE2-16]... DONE
Many salts:     13487K c/s real, 13773K c/s virtual

Only one salt:  11326K c/s real, 11572K c/s virtual

Résultats

1 Core = 2902K c/s real 4 Cores = 11326K c/s real Youpi !

Petit script de déploiment des fichiers de configuration du serveur sur les noeuds du cluster

Pour le bon fonctionnement de ce script, il faut que les clés SSH

for i in `cut -d=: -f1 ~/mpd.hosts`;
do
scp ~/.mpd.conf cluster@$i:~;
scp ~/mpd.hosts cluster@$i:~;
done
openmpi.txt · Dernière modification: 2015/01/28 03:09 (modification externe)