next up previous index
Siguiente: Edición avanzada con LATEX Subir: Manejo de clusters de cómputo Anterior: Manejo de clusters de cómputo   Índice de Materias

Ejemplo de manejo de un cluster

Normalmente, un usuario bioinformático desarrolla sus programas en su máquina personal y los prueba con ejemplos sencillos para ir depurando el código. Sólo una vez que el programa hace lo que se desea, normalmente, se ejecuta sobre ejemplos complejos, por ejemplo un genoma completo.

Supongamos que tenemos que anotar un genoma de 10000 genes. Eso implicaría ejecutar al menos 10000 veces BLAST, que en una máquina personal costaría un total de 100 horas, por poner un ejemplo (serían 36s por cada búsqueda BLAST). Si tenemos a nuestra disposición una cluster de 100 procesadores, podríamos hacer el mismo trabajo en aproximadamente una hora. Para ello necesitaríamos escribir un programa similar a éste y ejecutarlo en el nodo maestro:

#!/usr/bin/perl -w  
# programa que lanza muchos BLASTs

use strict;

my $qsubEXE  = "/opt/torque/bin/qsub";
my $BLASTEXE = "/usr/bin/local/blast/bin/blastpgp";
my $baseDIR  = "/home/contrera/kayab/mydir/";
#...

foreach $seq (@genome)
{
   # crea archivo FASTA temporal con secuencia para BLAST
   my $infile = $baseDIR . $seq . ".inblast";
   open(INTMP,">$infile");
   print INTMP ">$seq\n$seq\n";
   close(INTMP);

   # envía trabajo BLAST con esta secuencia
   my $outfile = $baseDIR . $seq . ".outblast";
   my $PBSoutfile = $baseDIR . $seq . ".pbsout";
   my $qsubcommand = " -l nodes=1 -N n$seq -q default -j oe -o $PBSoutfile -S /bin/csh";
       
   $qresult = `$qsubEXE $qsubcommand <<TRABAJO
   cd $baseDIR
   $BLASTEXE -i $infile -e 0.00005 -o $outfile
   TRABAJO`; 
   
   # borra lo que no necesitemos...
}

Entonces, en definitiva, necesitaremos:

¿Cómo sabemos si nuestro script ha funcionado? Para eso usamos el comando qstat desde el nodo maestro. Si queremos saber en qué estado están nuestros trabajos, con más detalle, podemos invocar: qstat -n -u usuario.

Si queremos eliminar trabajos usaremos el comando qdel proceso1 proceso2 ... procesoN.

Como siempre en UNIX, podemos conocer otras maneras de ejecutar estos comandos por medio de:

man qstat
man qsub
man qdel


next up previous index
Siguiente: Edición avanzada con LATEX Subir: Manejo de clusters de cómputo Anterior: Manejo de clusters de cómputo   Índice de Materias

Centro de Ciencias Genómicas/UNAM, México 2006-7