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