WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Environnements de grappes de calcul intensif sur réseaux d'entreprise: déploiement, exploitation et performances

( Télécharger le fichier original )
par Franklin TCHAKOUNTE
Université de Ngaoundéré - Master en Systèmes et Logiciels en Environnements Distribués 2010
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

Annexe A

Annexe

1 CONFIGURATION DE NOTRE GRAPPE

1.1 Configuration logicielle

1.1.1 OAR : gestionnaire de tâches

La première chose à savoir est l'architecture OAR. L'installation du gestionnaire OAR est composé: - du server OAR qui détient <l'intelligence> de OAR.

- du serveur de base de données.

- du frontal de soumission des tâches sur lequel on va se logger pour réserver certains noeuds de calcul.

- des noeuds de calcul sur lesquels les calculs s'exécuteront.

Etant donné qu'on fait une installation sur les distributions Debian, on installera le paquet oar-server sur le serveur OAR, le paquet oar-user sur le frontal de soumission et le paquet oar-node sur les machines de calcul. On installe également mysql-server. Ajouter environment="OAR_KEY=1" au début de la clé publique dans le fichier oar/.ssh/authorized_keys.

Préréquis

Sur chaque noeud (serveur, frontal , calcul), les paquets suivants doivent être installés : sudo Perl

Perl-base

openssh (serveur et client)

Sur le serveur OAR et sur le frontal, les paquets suivants doivent être installés : Perl-Mysql Perl-DBI

MySQL

MySQL-shared

libmysql

Vers l'installation

- Ajouter un utilisateur nommé <oar> dans le groupe < <oar> sur chaque noeud.

- Créer un ensemble de clés ssh pour l'utilisateur <oar> en utilisant ssh-keygen. Pour notre cas, id_dsa.pub et id_dsa.

- Copier ces clés dans le dossier .ssh de l'utilisateur <oar>

- Ajouter le contenu de 'id_dsa.pub' au fichier oar/.ssh/authorized_keys

- Dans /.ssh/config ( créer le fichier s'il n'existe pas ), ajouter les lignes :

Host *

ForwardX11 no

StrictHostKeyChecking no

PasswordAuthentication no

AddressFamily inet

- Ajouter dans le fichier de configuration du serveur ssh

AcceptEnv OAR_CPUSET OAR_JOB_USER

PermitUserEnvironment yes

UseLogin no

AllowUsers oar

Ajouter dans le fichier ~oar/.bashrc export PATH=/usr/local/oar/oardodo:\$PATH

On n'a plus qu'à installer les paquets OAR.

Lancer le serveur OAR en utilisant l'utilisateur <oar>. Utiliser le script "/etc/init.d/oar-server" pour lancer le démon. Editer le fichier /etc/oar.conf pour faire correspondre la configuration de la grappe.

DB_TYPE=mysql

DB_HOSTNAME=localhost

DB_BASE_NAME=oar

DB_BASE_LOGIN=oar

DB_BASE_PASSWD=oar

DB_BASE_LOGIN_RO=oar_ro

SERVER_HOSTNAME=localhost

DEPLOY_HOSTNAME="127.0.0.1"

... ... ALLOWED_NETWORKS="127.0.0.1/32 0.0.0.0/0"

S'assurer que la variable d'environnement PATH contient $PREFIX/$BINDIR de notre installation. Pour notre cas, le chemin est le chemin par défaut /usr/local/bin.

Initialisation de la base de données

L'initialisation de la base de données (MySQL) est effectuée en utilisant le script oar_mysql_db_init fournit avec le paquet d'installation du serveur et stocké par défaut dans /usr/local/sbin. Etant en root, lancer ce script .

Quelques commandes

oarnodesetting

Cette commande permet de changer l'état ou la propriété d'un noeud ou de plusieurs ressources. -a : ajouter une nouvelle ressource

-s : l'état à assigner au noeud :

* "Alive" : une tâche peut être lancée sur ce noeud.

* "Absent" : L'administrateur veut enlever le noeud de la liste un moment. * "Dead" : Le noeud ne sera pas utilisé et sera supprimé.

-h : spécifier le nom du noeud.

-r : spécifier le numéro de la ressource.

Oarsub

Cette commande permet à l'utilisateur de soumettre une tâche.

Oarnodes

Cette commande affiche les informations sur les ressources de la grappe.

1.1.2 MPICH2 : bibliothèque de communications

Pré-réquis.

Pour une installation par défaut, les éléments suivants doivent être installés :

- Une distribution de la copie mpich2.tar.gz

- Le compilateur C

- Les compilateurs Fortran-77 , Fortran-90 et/ou C++ si on veut écrire nos programmes dans ces langages.

- Python 2.2 ou la dernière version pour construire le système de gestion par défaut des processus. Les étapes d'installation.

Les étapes suivantes sont celles à appliquer pour pouvoir installer MPICH2 en vue d'exécuter un programme parallèle sur plusieurs machines.

1. # tar xvzf mpich2.tar.gz

2. On choisit de créer notre répertoire d'installation avec la commande mkdir /home/user/mpich2- install. On le partage en utilisant NFS sur toutes les machines qu'on utilisera pour lancer le programme parallèle.

3. Choisir le répertoire de construction1 : mkdir /tmp/user/mpich2-1.0.8p1

4. Configurer MPICH2 en spécifiant le répertoire d'installation et exécuter le script configure dans le répertoire source :

# cd /tmp/you/mpich2-1.0.8p1

#./configure -prefix=/home/user/mpich2-install| tee configure.log

5. On construit MPICH2 # make | tee make.log

6. Installer les commandes MPICH2 # make install | tee install.log

7. Ajouter le sous répertoire bin du répertoire d'installation dans le PATH # export PATH=/home/user/mpich2-install/bin :$PATH

Tester que tout marche bien à ce niveau en faisant

# which mpd

# which mpicc

'build directory

# which mpiexec

# which mpirun

Le résultat devrait être le sous répertoire /home/user/mpich2-install/bin

8. MPICH2 contrairement à MPICH utilise un gestionnaire externe de processus pour lancer un grand nombre de tâches MPI. Il est appelé MPD qui est un anneau de daemons sur les machines où on va exécuter nos programmes MPI. Pour des raisons de sécurité, MPD cherche dans le répertoire de l'utilisateur un fichier nommé .mpd.conf contenant la ligne :

# secretword=<secretword> où secretword est une chaine de caractère qui uniquement connue par nous. Ensuite, on rend ce fichier lisible et modifiable uniquement par nous :

# cd

# touch .mpd.conf

# chmod 600 .mpd.conf

Ensuite on utilise, un éditeur pour placer une ligne comme :

secretword=chaine de caractères

Le premier contrôle consiste à faire à exécuter un programme non-MPI avec le demon MPD : # mpd&

# mpiexec -n 1 /bin/hostname

# mpdallexit

Ceci doit afficher le nom de la machine locale.

9. Etant donné que l'on veuille exécuter le programme parallèle sur plusieurs machines, on devrait lancer le daemon MPD sur chacune de ces machines. Nous devons créer un fichier nommé mpd.hosts qui contient la liste des noms complets des machines, un par ligne. Ces machines seront des cibles ssh ou rsh donc il faudrait préciser le nom complet de domaine si nécessaire. Vérifier si on peut atteindre ces machines par ssh : # ssh remotemachine date

qui doit afficher l'heure système de la machine distante

Lancer les démons sur chaque certaines (ou toutes les) machines du fichier mpd.hosts. # mpdboot -n <number to start > -f mpd.hosts

ou

# mpdboot -n <number to start>

# mpdtrace -l

<number to start > peut être inférieur à 1+ le nombre d'hôtes dans le fichier mpd.hosts mais ne peut pas être plus grand.

10. Compilation d'un programme parallèle # mpicc -o <executable> <programme.c>

11. exécution d'un programme parallèle

Après avoir lancer les daemons sur les autres machines, # mpiexec -n <nombre de processus> <executable>

1.1.3 Serveur NFS : Network file system Installation du serveur NFS

Pour installer le serveur NFS sous débian, il suffit de taper la commande :

# apt-get install nfs-kernel-server Configuration du serveur NFS.

La configuration du serveur NFS est stockée dans le fichier /etc/exports. Ce fichier de configuration

dispose d'une page de manuel :

# man exports

Ouvrir le fichier /etc/exports et ajouter la ligne pour pouvoir partager le repertoire d'installation de MPICH2 à toutes les machines

/home/user/mpich2 - install * (ro)

A chaque modification du fichier /etc/exports, il faut relancer le serveur NFS pour que les modifications soient prises en compte :

# /etc/init.d/nfs-kernel-server restart

Utilisation de NFS depuis un poste client.

Si on veut que ce répertoire soit accessible à chaque boot, il suffit de rajouter la ligne suivante dans le fichier /etc/fstab :

serveur : /home/user/mpich2 - install /home/user/mpich2 - install nfs defaults 0 0

1.1.4 Serveur NIS : Network information service

Pour installer NIS sous Débian, utiliser la commande suivante :

# apt-get install nis Configuration du serveur.

Il faut tout d'abord vérifier que le fichier /etc/hosts contient l'adresse IP et le nom complet du serveur : Il faut ensuite ajouter dans le fichier /etc/defaultdomain le nom du domaine NIS : labonis

Dans le fichier /etc/ypserv.securenets, on restreint l'utilisation du domaine NIS au domaine du réseau local.

On remplace la ligne 0.0.0.0 0.0.0.0 par : 255.255.255.0 192.168.12.0.

On modifie ensuite /etc/default/nis pour indiquer qu'il s'agit du serveur NIS :

NISSERVER=master

On relance le serveur NIS :

# /etc/init.d/nis restart

On lance ensuite la création des bases de données NIS avec la commande suivante :

# /usr/lib/yp/ypinit -m

Ceci va créer les fichiers partagés dans le répertoire /var/yp/DOMAINENIS.

Configuration du client

Il faut préciser le nom du domaine NIS fichier /etc/defaultdomain contienne le domaine NIS : labonis #vi /etc/defauldomain labonis Dans le fichier /etc/yp.conf, on indique l'adresse IP du serveur NIS : # vi /etc/yp.conf

ypserver 192.168.12.3

On démarre le client NIS :

# /etc/init.d/nis start

On vérifie que le fichier /etc/nsswitch.conf contient bien les lignes suivantes :

# cat /etc/nsswitch.conf

...

passwd : compat

group : compat

shadow : compat

...

netgroup: nis

2 Code séquentiel du produit d'une matrice par un vecteur

A la fin du fichier /etc/passwd, on rajoute la ligne suivante :

# echo 11+ : : : : : :11 > /etc/passwd

A la fin du fichier /etc/shadow, on rajoute la ligne suivante :

# echo 11+ : : : : : : : :11 > /etc/shadow

A la fin du fichier /etc/group, on rajoute la ligne suivante : # echo 11+ : : :11 > /etc/shadow

Test

Sur le serveur NIS, on rajoute un utilisateur : # adduser franklin

On met à jour la base de données NIS : # /usr/lib/yp/ypinit -m

Si tout fonctionne, on doit pouvoir se logger sur un des clients NIS avec l'utilisateur franklin.

2 Code séquentiel du produit d'une matrice par un vecteur

... ... int main()

{

double a[SIZE][SIZE],b[SIZE],c[SIZE];

struct timeval start,end;

int i,j;

initialiser(a);

for(i=0;i<SIZE;i++) b[i]=2.0;

for(i=0;i<SIZE;i++)

{c[i]=0.0;

for(j=0;j<SIZE;j++)

c[i]=c[i]+a[i][j]*b[j];

}

....

...

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"En amour, en art, en politique, il faut nous arranger pour que notre légèreté pèse lourd dans la balance."   Sacha Guitry