INFO-F-404 : Techniques avancées de systèmes d`exploitation

Transcription

INFO-F-404 : Techniques avancées de systèmes d`exploitation
Nikita Veshchikov
e-mail : [email protected]
téléphone : 02/650.58.56
bureau : 2N8.213
URL : http://student.ulb.ac.be/~nveshchi/
INFO-F-404 : Techniques avancées de systèmes
d’exploitation
Table des matières
1 Le système HYDRA
1
1.1 IMPORTANT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2 Qu’est-ce que c’est ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.3 Se connecter à HYDRA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.4 Envoyer des fichiers sur HYDRA . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.5 Exécuter un programme écrit en MPI sur HYDRA . . . . . . . . . . . . . . . . . . . .
4
1.5.1 Comment ça marche ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
1.5.2 Le programme “hello world” version MPI . . . . . . . . . . . . . . . . . . . . .
5
1.5.3 Créer un jobfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
1.5.4 Exécuter “hello world” grâce à notre jobfile . . . . . . . . . . . . . . . . . . .
6
1.5.5 Exécuter “hello world” à la main
7
1
1.1
. . . . . . . . . . . . . . . . . . . . . . . . .
Le système HYDRA
IMPORTANT
En ce moment HYDRA est en train de déménager vers “new-hydra” ! Une fois que vous êtes
inscrit sur HYDRA, travaillez avec new-hydra.
1
1.2
Qu’est-ce que c’est ?
Le Centre de calcul a récemment installé un
nouveau cluster pour le calcul intensif (High
Performance Computing). HYDRA remplace
ainsi ASTER, le vieux cluster Alpha, et offre
aux chercheurs de l’ULB et de la VUB une
puissance de calcul 20 fois supérieure. Son
architecture parfaitement équilibrée en fait le
meilleur dans son genre pour un large éventail d’applications. Les codes de calcul intensif, les programmes gourmands en mémoire,
les packages hautement parallèles et les logiciels à E/S intensives, sont tous exécutés
rapidement et sans à-coup.
Consultez aussi https://cc.ulb.ac.be/hydra/
1.3
Se connecter à HYDRA
Pour se connecter au système HYDRA, rien de plus simple 1 :
1. Ouvrir un terminal
2. Initialiser le protocole réseau “telnet” (TErminal NETwork ou TELecommunication NETwork,
ou encore TELetype NETwork) via la commande
telnet
Réponse :
telnet>
3. Se connecter à HYDRA grâce à la commande
telnet> open hydra.ulb.ac.be
Réponse :
Trying 134.184.129.57...
Connected to hydra.ulb.ac.be.
Escape character is ’^]’.
Password:
1. consultez aussi https://cc.ulb.ac.be/hydra/Howto/login_hydra.php
2
Last login: Mon Nov 12 18:28:31 from cable-62-205-92-158.upc.chello.be
Linux for High Performance Computing
This product is based on Red Hat Enterprise Linux version 4 source
packages found on ftp.redhat.com.
trademark of Red Hat, Inc.
Red Hat(R) is a registered
This disc is not a product of Red Hat,
Inc. and is not endorsed by Red Hat, Inc.
This is a product of
Hewlett-Packard Company.
========================================================================
All user files from ASTER were copied to HYDRA. You will find your ASTER
files in the directory ’ASTER’ in your homedirectory.
Don’t forget to clean up files you no longer need. Thank you.
========================================================================
You have mail.
-sh-3.00$
Vous êtes maintenant connecté à HYDRA ! Le mot de passe qui vous a été demandé est celui de
votre compte ULB (c’est-à-dire celui de votre boite mail). Vous pouvez désormais naviguer dans
vos dossier grâce aux commandes classiques ls, cd, etc.
Pour que vos programmes puissent avoir accès aux multiples nœuds d’HYDRA, il est nécessaire de générer un fichier ssh. Heureusement, cette étape ne doit être réalisée qu’une seule fois.
Pour créer ce fichier ssh, il suffit de taper les commandes :
cd
ssh-keygen -t dsa<<EOF
EOF
Cette dernière opération vient de créer le fichier “/.ssh/id_dsa.pub”. Il suffit maintenant de copier
ce fichier vers “/.ssh/authorized_keys” grâce à la commande
cp /.ssh/id_dsa.pub /.ssh/authorized_keys
1.4
Envoyer des fichiers sur HYDRA
Pour envoyer des fichiers sur HYDRA, nous ne pouvons pas nous servir du protocole telnet. Il
nous faut nous servir du protocole FTP (File Transfer Protocol pour les newbies). Pour cela, vous
pouvez soit vous servir d’un client FTP (recommandé), soit vous servir d’un nouveau terminal de
la manière suivante :
3
ordinateur-de-vincent-nelis:~ pmeumeuy$ ftp
ftp> open hydra.ulb.Ac.be
Connected to hydra.vub.ac.be.
220 (vsFTPd 2.0.1)
Name (hydra.ulb.Ac.be:pmeumeuy): pmeumeuy
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> send
(local-file) nom_du_fichier_local
(remote-file) nom_du_fichier_sur_HYDRA
Dans le cadre de ce TP, je vous demanderais de
1. télécharger les fichiers “hello_world_mpi.c” disponible sur l’université virtuelle,
2. créer “jobfile_hw”,
3. vous connectez à HYDRA par le protocole FTP,
4. créer un nouveau dossier portant le nom “MPI_test” grâce à la commande FTP suivante
ftp> mkdir MPI_test
5. envoyer les fichiers “hello_world_mpi.c” et “jobfile_hw” dans ce nouveau dossier.
6. executer “hello_world” une fois en ligne de commande et une fois à l’aide de “jobfile_hw”
1.5
Exécuter un programme écrit en MPI sur HYDRA
1.5.1
Comment ça marche ?
Chaque programme interactif exécuté sur HYDRA est limité à 5 minutes de temps (d’exécution)
CPU. Si vos programmes nécessitent plus de temps (ou qu’ils doivent être exécutés de manière
distribuée, ce qui est notre cas), vous devez utiliser LSF (Load Sharing Facility). LSF est un
système qui gère les processus “gourmands” en terme de temps CPU, de mémoire ou en autres
ressources systèmes. LSF n’exécutera un processus qu’uniquement lorsqu’il y a suffisamment de
ressources disponibles pour celui-ci. Dans le cas contraire, le processus est placé dans une file
d’attente.
Pour faire exécuter un programme par LSF, nous devons lui préciser certaines spécifications,
comme par exemple le nombre de processeurs à utiliser ou encore le nom de la file d’attente dans
laquelle les instances du programme doivent être placées en cas de non-disponibilité de certaines
4
ressources. Pour cela, nous devons créer un fichier de spécifications que nous appellerons désormais un “jobfile”. Un jobfile est un fichier très similaire à un script de commande shell (on y inscrit
notamment les instructions de compilations et d’exécutions de notre programme), excepté que l’on
peut y indiquer des commandes supplémentaires nécessaires à LSF qui décrivent le programme
à exécuter.
1.5.2
Le programme “hello world” version MPI
Ce minuscule programme va nous servir d’exemple dans le cadre de ce TP. Chaque instance
de ce programme affiche à l’écran son ID, le nombre total d’instances qui ont été lancées ainsi
que le nom de la machine sur laquelle l’instance en cours est exécutée. Le code source est
donné ci-dessous. Ce code peut être téléchargé depuis l’université virtuelle où il porte le nom
“hello_world_mpi.cpp”.
#include <stdio.h>
#include <mpi.h>
int main(int argc; char *argv[]) {
int id, nb_instance, len;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &id);
MPI_Comm_size(MPI_COMM_WORLD, &nb_instance);
MPI_Get_processor_name(processor_name, &len);
printf ("Hello world! I’m %d of %d on %s\n", id, nb_instance, processor_name);
MPI_Finalize();
}
1.5.3
Créer un jobfile
Voici un exemple de jobfile pour le programme “hello_world_mpi.c” que vous pouvez télécharger depuis l’université virtuelle (et qui s’appelle “jobfile_hw”).
#!/bin/bash -l
#PBS -l nodes=4:ppn=8
#PBS -l walltime=00:02:00
5
#PBS -l pmem=2kb
#PBS -j oe
#PBS -N Hello
#PBS -o hello_out.txt
echo "Running job on $HOST - " ‘date‘
module load openmpi/1.4.3/gcc/4.6.1
cd $HOME/helloWorld/
mpicc hello.c -o hello
mpirun ./hello
echo "Done"
Les six premières lignes sont des spécifications MPI du programme hello_world_mpi. Ces spécifications ont la forme
#PBS -option value
Vous pouvez trouver la liste des options sur https://cc.ulb.ac.be/hydra/Howto/prepare_jobs.
php.
Consultez aussi https://cc.ulb.ac.be/hydra/Howto/compile_mpi.php pour les options de compilation.
1.5.4
Exécuter “hello world” grâce à notre jobfile
Une fois que le jobfile est créé, on l’envoi grâce à la commande suivante :
qsub jobfile_hw
Réponse :
37688.mn01.hydra.vub.ac.be
Après l’exécution de notre programme, nous pouvons lire les résultats (et les outputs) grâce à la
commande
cat filename
où filename est le fichier vers lequel nous avons redirigé l’output de notre programme (ici : filename
est le fichier “hello_out.txt”).
6
1.5.5
Exécuter “hello world” à la main
Il est possible de compiler et d’executer un program sans jobfile. Il suffit de pater les comandes
suivantes :
module load openmpi/1.4.3/gcc/4.6.1
mpicc hello.c -o hello
mpirun -np 4 ./hello
7