Using UBCluster

20
Republique Algerienne Démocratique et Populaire Ministère de l'Enseignement Supérieur et de la Recherche Scientifique Laboratoire ENERGARID Equipe SimulIA Université de Béchar Centre de calcul Présenté par : M.TAMALI

description

How to use UBCluster.UBCluster is an HPC machine with 164 processors, 96 Go of RAM and some very known softawre in parallel calculation, like freefem++, octave, NBCR, ...

Transcript of Using UBCluster

Page 1: Using UBCluster

Republique Algerienne Démocratique et PopulaireMinistère de l'Enseignement Supérieur et de la Recherche Scientifique

Laboratoire ENERGARID

Equipe SimulIA

Université de Béchar Centre de calcul

Présenté par :M.TAMALI

Page 2: Using UBCluster

• Plan

1) PrésentationIntroductionTopologies et procédures d'accèsModes d'utilisation d'UBCluster2) Etude de casEtude de séquence génétiqueEtude de distribution de Boltzmann.Utilisation d'OctaveUtilisation du calcul parallèle

Page 3: Using UBCluster

Présentation Introduction

Définition du mot CLUSTER, Ensemble de plusieurs machines vues comme une seule permettant d'obtenir de grandes puissances de traitement. C’est un regroupement de deux serveurs ou plus, en vue de créer un "super serveur virtuel". Un cluster fournit des fonctions de haute disponibilité et de répartition de charges. Il facilite aussi l’évolutivité de la montée en charge. Idée apparue à l'origine au milieu des années 80 chez Digital Equipment Corporation, sous le nom de VAXCluster. En 1995, un accord de partenariat signé entre Microsoft et DEC, donne naissance à Windows NT 4 Enterprise Server (nom de code : wolfpack); version qui intègre MSCS (Microsoft Cluster Serveur).

Il existe aujourd’hui des solutions cluster sous Windows 2000/2003, Linux, Unix, OpenVMS, AS/400. Plusieurs constructeurs proposent des solutions propriétaires (Tandem, Siemens, Veritas, Novell, IBM, Sun...). Lotus fournit également une solution logicielle pour créer un cluster Notes entre des machines d'horizons différents (AS/400, Netware, Windows, Unix, Linux…).

Page 4: Using UBCluster

Présentation Topologie et procédures d'accès

La topologie adoptée pour l'Intranet du Centre de calcul de l‘Université de Béchar porte l'avantage d'être connecté à une structure mixte (LAN, WLAN) et à Internet (WAN). Il est du type ROCKS Cluster version 5.4 (2010)

Page 5: Using UBCluster

Présentation Mode d'utilisation d'UBCluster

UBCluster est accessible à travers une console de commande en ligne, utilisant le programme putty.exe (Gestionnaire de session client à distance)téléchargeable du site http://www.putty.org/.D’autres outils existent, tel que WinSSH …

Page 6: Using UBCluster

Présentation Mode d'utilisation d'UBCluster

Une fois que l'utilisateur donne son username et son password d'une manière correcte, il accédera sur la plateforme UBCluster après quoi, il pourra commencer à envoyer ses requêtes pour calcul.

Pour la plupart des cas, les utilisateurs recencés utilisent Microsoft Windows XP ou 7 comme système d'exploitation.Pour Linux, on ouvre une fenêtre TERMINAL et on tape SSH et puis les coordonnées (user, pass)

Page 7: Using UBCluster

Présentation Mode d'utilisation d'UBCluster

Pour cela, UBCluster pourra être utilisé selon des modes variés. Il est toutefois extensible selon le besoin et la disponibilité du logiciel escompté (GPL ou Licence propriétaire).Les outils déjà intégrés sont :- Octave (équivalent  GPL de Matlab)- APBS  (Adaptive Poisson-Boltzmann Solver)- Compilateur pour le calcul parallèle (C/C++, perl ou Fortran)- La suite viendra ...

Page 8: Using UBCluster

Etude de cas Etude de séquences génétiques

[mtamali@hpc ~]$ wget -q ftp://ftp.ncbi.nlm.nih.gov/blast/db/nt.08.tar.gz [mtamali@hpc ~]$ gunzip -c nt.08.tar.gz | ( cd $BLASTDB/ && tar -xf -)

BLAST, ou Basic Local Alignment Search Tool, est une collection d'outils qui sont utilisés pour rechercher et trouver des régions de la similarité locale entre les séquences. Le programme compare des séquences de nucléotides ou de protéines aux bases de données de séquences, et calcule la signification statistique des occurrences 'matches'. Cette suite logiciels a été diffusée par le Centre national de l'Information en Biotechnologie NCBI USA. BLAST peut être utilisé pour des comparaisons protéine-protéine ou des comparaisons de nucléotides-+nucléotides. Avant qu'un exemple d'utilisation ne soit présenté, nous devons d'abord définir quelques variables d'environnement. $BLASTDB - C'est la variable qui pointe vers la base de données Blast. elle est fixé à $HOME/bio/ncbi/db/. Ce répertoire devrait contenir les bases de données que vous souhaitez rechercher. BLAST, par défaut, contrôle cet endroit et le répertoire de travail courant pour la présence des bases de données. Cette variable est définie lors de la connexion par des scripts de connexion du système, et peut être modifiée par l'utilisateur pour qu'elle pointe vers son vrai chemin  dans ses scripts de démarrage.•$BLASTMAT - Cette variable pointe vers l'emplacement où les matrices score BLAST  sont présents. Elle est définie par /opt/bio/ncbi/data. Encore une fois, elle peut être modifiée pour pointer vers un emplacement désiré sur une base par utilisateur.BLAST nécessite la présence de 2 ensembles de données. Un ensemble de données qui est la séquence d'entrée que vous souhaitez rechercher, et l'autre ensemble de données qui est la base de données que vous souhaitez faire une recherche avec. Utilisez la procédure suivante pour exécuter BLAST :Télécharger une base de données BLAST que vous souhaitez exécuter la comparaison avec. Les bases de données peuvent être obtenues sur le site ftp NCBI à ftp://ftp.ncbi.nlm.nih.gov/blast/db/. Les bases de données disponibles sur le site mentionné ci-dessus sont pré-formatés. Il est recommandé que  les bases de données BLAST sont stockés à l'emplacement $BLASTDB. Visitez ftp://ftp.ncbi.nlm.nih.gov/blast/db/  dans votre navigateur pour voir la liste des bases de données disponibles préformatées. Télécharger une de ces bases sur votre session UBCluster en utilisant wget. Nous allons utiliser la base de données du nucléotides de la 'Drosophila melanogaster' (mouche)

Page 9: Using UBCluster

Etude de cas Etude de séquences génétiques

[mtamali@hpc ~]$ cat > test.txt >Test AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC TTCTGAACTGGTTACCTGCCGTGAGTAAATTAAAATTTTATTGACTTAGGTCACTAAATACTTTAACCAA TATAGGCATAGCGCACAGACAGATAAAAATTACAGAGTACACAACATCCATGAAACGCATTAGCACCACC ATTACCACCACCATCACCATTACCACAGGTAACGGTGCGGGCTGACGCGTACAGGAAACACAGAAAAAAG CCCGCACCTGACAGTGCGGGCTTTTTTTTTCGACCAAAGGTAACGAGGTAACAACCATGCGAGTGTTGAA GTTCGGCGGTACATCAGTGGCAAATGCAGAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCAATGCC AGGCAGGGGCAGGTGGCCACCGTCCTCTCTGCCCCCGCCAAAATCACCAACCACCTGGTGGCGATGATTG AAAAAACCATTAGCGGCCAGGATGCTTTACCCAATATCAGCGATGCCGAACGTATTTTTGCCGAACTTTT

Exécutez le programme blastall sur l'entrée de test contre la base de données formatées.

blastall -d drosoph.nt -p blastn -i test.txt

[mtamali@hpc ~]$ cd $BLASTDB [mtamali@hpc ~]$ wget -q ftp://ftp.ncbi.nlm.nih.gov/blast/db/FASTA/drosoph.nt.gz [mtamali@hpc ~]$ gunzip drosoph.nt.gz [mtamali@hpc ~]$ formatdb -p F -V T -i drosoph.nt [mtamali@hpc ~]$ ls drosoph.nt* drosoph.nt drosoph.nt.nhr drosoph.nt.nin drosoph.nt.nsq [mtamali@hpc ~]$ cd $HOME

Après que la base de données est mise en forme, éditer un fichier d'entrée de test :

Exécutez la commande au format formatdb la base de données au format BLAST. Pour cet exemple, nous allons utiliser la Drosophila melanogaster (mouche) base de données de nucléotides.

Page 10: Using UBCluster

Etude de cas Etude de séquences génétiques

Le résultat sera alors

[mtamali@hpc ~]$ blastall -d drosoph.nt -p blastn -i test.txt BLASTN 2.2.18 [Mar-02-2008] Reference: Altschul, Stephen F., Thomas L. Madden, Alejandro A. Schaffer, Jinghui Zhang, Zheng Zhang, Webb Miller, and David J. Lipman (1997), "Gapped BLAST and PSI-BLAST: a new generation of protein database search programs", Nucleic Acids Res. 25:3389-3402. Query= Test (560 letters) Database: drosoph.nt 1170 sequences; 122,655,632 total letters Searching..................................................done Score E Sequences producing significant alignments: (bits) Value gi|10729531|gb|AE002936.2|AE002936 Drosophila melanogaster genom... 36 0.86 gi|10728232|gb|AE003493.2|AE003493 Drosophila melanogaster genom... 36 0.86 gi|10726497|gb|AE003698.2|AE003698 Drosophila melanogaster genom... 36 0.86 gi|10726398|gb|AE003681.2|AE003681 Drosophila melanogaster genom... 36 0.86 gi|10729308|gb|AE002665.2|AE002665 Drosophila melanogaster genom... 34 3.4 gi|10729264|gb|AE002615.2|AE002615 Drosophila melanogaster genom... 34 3.4 gi|7298233|gb|AE003648.1|AE003648 Drosophila melanogaster genomi... 34 3.4 gi|7297628|gb|AE003628.1|AE003628 Drosophila melanogaster genomi... 34 3.4 gi|10728546|gb|AE003447.2|AE003447 Drosophila melanogaster genom... 34 3.4 gi|7290819|gb|AE003441.1|AE003441 Drosophila melanogaster genomi... 34 3.4 gi|10728461|gb|AE003431.2|AE003431 Drosophila melanogaster genom... 34 3.4 gi|10728241|gb|AE003495.2|AE003495 Drosophila melanogaster genom... 34 3.4 gi|7292554|gb|AE003484.1|AE003484 Drosophila melanogaster genomi... 34 3.4 gi|10727872|gb|AE003525.2|AE003525 Drosophila melanogaster genom... 34 3.4 gi|10727399|gb|AE003587.2|AE003587 Drosophila melanogaster genom... 34 3.4 gi|10727114|gb|AE003673.2|AE003673 Drosophila melanogaster genom... 34 3.4 gi|10726705|gb|AE003740.2|AE003740 Drosophila melanogaster genom... 34 3.4....

Page 11: Using UBCluster

Etude de cas Etude de distribution de Bolzmann

Créer un script de soumission simple appelé blast_sge.sh contenant le texte suivant

#!/bin/bash # #$ -cwd #$ -S /bin/bash #$ -j y export BLASTDB=$HOME/bio/ncbi/db/ export BLASTMAT=/opt/bio/ncbi/data/ /opt/bio/ncbi/bin/blastall -d drosoph.nt \ -p blastn -i $HOME/test.txt \ -o $HOME/result.txt

Exécuter avec

[mtamali@hpc ~]$ qsub blast_sge.sh Your job 10 ("blast_sge.sh") has been submitted

C’est fini pour cette exemple et c’est à vous de découvrir la suite !

Page 12: Using UBCluster

Etude de cas Utilisation de l'environnement Octave 3

Un exemple de produit de matrice ayant été exécuté sous Octave. De même, des système d'équations aux dérivées partielles peuvent aussi être régie

Page 13: Using UBCluster

Etude de cas Utilisation de l'environnement Octave 3

Un exemple de traçage de fonction 3D exportée utilisant Xming sur une machine Windows 7 pour permettre d'afficher le résultat graphique sur la machine cliente. De même, toute application graphique sur le serveur UBCluster peut être lancée à distance et visualisée, sous Xming sur la machine du client.

Page 14: Using UBCluster

Etude de cas Utilisation de l'environnement Octave 3

octave:1> df = g_diff ( "sin(x)" , "x" ) df = cos(x) octave:2> x = pi; eval ( df ); ans = -1

Un exemple de calcul symbolique, très intéressant, surtout, si on a besoin de calculer dans une espace indéfini des dérivées ou des intégrales.

octave:1> symbols octave:2> x = sym ("x") x = x octave:3> y = sym ("y"); octave:4> (x + 6) * y ans = y*(6.0+x) octave:5> differentiate (ans, x) ans = y

Un exemple de calcul symbolique, très intéressant, surtout, si on a besoin de calculer dans une espace indéfini des dérivées ou intégrales.

Page 15: Using UBCluster

Etude de cas Utilisation du calcul parallèle

Topologie du calcul parallèle dans un cluster. Chaque machine est par défaut à multi-processeurs au même moment que le cluster peut-êtreConstitué de plusieurs machines (dites NODES) montées ensemble et supervisées par une machine appelée FRONTEND.

La topologie d’un programme est la suivante :

/*The Parallel Hello World Program*/ #include <stdio.h>#include <mpi.h> main(int argc, char **argv) { int node; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &node); printf("Hello World from Node %d\n", node); MPI_Finalize(); }

Hello World from Node 2 Hello World from Node 0 Hello World from Node 4 Hello World from Node 3 Hello World from Node 7 Hello World from Node 1 Hello World from Node 6 Hello World from Node 5

La compilation est lancée par la commande suivante :mpicc hello.c -o hello Dans le cas d UBCluster on s’attend à une réponse équivalente à ce qui suit :mpirun –hostfile machines hello

Page 16: Using UBCluster

Etude de cas Utilisation du calcul parallèle

Exemple d’intégration numérique par la régle du point millieu. Soit à determiner la valeur de l’intégrale suivante :

/* C Example */#include <mpi.h>#include <math.h>#include <stdio.h>

float fct(float x){return cos(x);}

/* Prototype */float integral(float a, int n, float h);

void main(argc,argv)int argc;char *argv[];{

Nous substituons à l’integrale sont équivalent selon la régle du point millieu :

Le programme c équivalent est le suivant :

Page 17: Using UBCluster

Etude de cas Utilisation du calcul parallèle

/*********************************************************************** This is one of the MPI versions on the integration example ** It demonstrates the use of : ** 1) MPI_Init ** 2) MPI_Comm_rank ** 3) MPI_Comm_size ** 4) MPI_Recv ** 5) MPI_Send ** 6) MPI_Finalize ** ***********************************************************************/int n, p, i, j, ierr,num;float h, result, a, b, pi;float my_a, my_range;

int myid, source, dest, tag;MPI_Status status;float my_result;

pi = acos(-1.0); /* = 3.14159... */a = 0.; /* lower limit of integration */b = pi*1./2.; /* upper limit of integration */n = 100000; /* number of increment within each process */

dest = 0; /* define the process that computes the final result */tag = 123; /* set the tag to identify this particular job */

Page 18: Using UBCluster

Etude de cas Utilisation du calcul parallèle

/* Starts MPI processes ... */

MPI_Init(&argc,&argv); /* starts MPI */MPI_Comm_rank(MPI_COMM_WORLD, &myid); /* get current process id */MPI_Comm_size(MPI_COMM_WORLD, &p); /* get number of processes */

h = (b-a)/n; /* length of increment */num = n/p; /* number of intervals calculated by each process*/my_range = (b-a)/p;my_a = a + myid*my_range;my_result = integral(my_a,num,h);

printf("Process %d has the partial result of %f\n", myid,my_result);

if (myid == 0) {result = my_result;for (i=1;i<p;i++) { source = i; /* MPI process number range is [0,p-1] */ MPI_Recv(&my_result, 1, MPI_REAL, source, tag, MPI_COMM_WORLD, &status); result += my_result;}printf("The result =%f\n", result);}else MPI_Send(&my_result, 1, MPI_REAL, dest, tag, MPI_COMM_WORLD); /* send my_result to intended dest.*/ MPI_Finalize(); /* let MPI finish up ... */}

Page 19: Using UBCluster

Etude de cas Utilisation du calcul parallèle

float integral(float a, int n, float h){int j;float h2, aij, integ;

integ = 0.0; /* initialize integral */h2 = h/2.;for (j=0;j<n;j++) { /* sum over all "j" integrals */aij = a + j*h; /* lower limit of "j" integral */integ += fct(aij+h2)*h;}return (integ);}

Le résultat est par conséquent :

[guest@hpc ~]$ nano integrale.c[guest@hpc ~]$ mpicc -o integrale integrale.c[guest@hpc ~]$ mpirun -np 8 integraleProcess 1 has the partial result of 0.187593Process 2 has the partial result of 0.172887Process 0 has the partial result of 0.195090Process 4 has the partial result of 0.124363Process 3 has the partial result of 0.151537Process 5 has the partial result of 0.092410Process 7 has the partial result of 0.019215Process 6 has the partial result of 0.056906The result =1.000000[guest@hpc ~]$ mpirun -np 8 --hostfile machines integraleProcess 0 has the partial result of 0.195090Process 3 has the partial result of 0.151537Process 1 has the partial result of 0.187593Process 6 has the partial result of 0.056906Process 4 has the partial result of 0.124363Process 7 has the partial result of 0.019215Process 2 has the partial result of 0.172887Process 5 has the partial result of 0.092410The result =1.000000

Page 20: Using UBCluster

Etude de cas Utilisation du calcul parallèle

#!/bin/bash#$ -M [email protected]#$ -cwd#$ -S /bin/bash

mpirun -np 8 -machinefile machines integrale

On lance la tâche de la façon suivante :

Exemple d’envoi de JOB par la commande qsub.Editer un fichier JOB, nommé taches.sh dont le contenu est :

[mtamali@hpc ~]$ qsub -pe orte 8 taches.sh

8 étant le nombre de processeurs à allouer à mon JOB

[mtamali@hpc ~]$ nano taches.sh[mtamali@hpc ~]$ qsub taches.sh4.hpc.univ-bechar.dz[mtamali@hpc ~]$ qstatJob id Name User Time Use S Queue------------------------- ---------------- --------------- -------- - -----4.hpc taches.sh mtamali 0 R default[mtamali@hpc ~]$