Archive

Archive for February, 2012

Access to supercomputing services in BSC, the RES and PRACE (2012)

February 24th, 2012

The aim of these meetings in different cities of Spain is to inform the all the national scientific communities of the available resources and services provided by the BSC-CNS, including the new GPU supercomputer called MinoTauro, the RES (Spanish Supercomputing Network) and how to request the use of the european infrastructure for supercomputing PRACE (Partnership for Advanced Computing in Europe), ESFRI European Infrastructure in which Spain participates.

Meeting dates:

– Santander, 29th February.
– Málaga, 6th March.
– Tenerife, 9th March.
– Madrid, 12th March.
– Valencia, 14th March.
– Zaragoza, 15th March.
– Barcelona, 26th March.

To receive a certificate of attendace, please register a week before the event.

more information: 

 

Anuncios

Rendimiento de diferentes implementaciones de BLAST

February 21st, 2012

 

Introducción

El BLAST (Basic Local Alignment Search Tool) es un algoritmo y un programa informático de alineamiento de secuencias de tipo local, ya sea de ADN o de proteínas, empleado en bioinformática. El programa es capaz de comparar una secuencia problema contra una gran cantidad de secuencias que se encuentren en una base de datos y encontrar las que tienen mayor parecido así como la significación de cada resultado [1].

Muchas variantes han sido creadas para resolver algunos problemas específicos de búsqueda, pero BLAST es la herramienta más usada para la anotación y predicción funcional de genes o secuencias proteicas. BLAST es desarrollado por los Institutos Nacionales de Salud del gobierno de EE.UU., por lo que es de dominio público y puede usarse gratuitamente desde el servidor del Centro Nacional para la Información Biotecnológica (NCBI). No obstante, en el NCBI no se pueden hacer busquedas masivas al ser un recurso público y compartido [2].

El Servicio General de Informática Aplicada a la Investigación (IZO/SGI) de la UPV/EHU ha instalado y comparado 3 versiones diferentes de BLAST con el objeto de poder realizar cálculos másivos con BLAST. Para realizar cálculos masivos es necesario poder paralelizar el programa para poder emplear muchos cores simultáneamente. Una forma trivial es dividir el fichero de secuencias a estudiar en múltiples ficheros y enviarlos paralelamente y de forma independiente. Este método es complementario a cualquiera de las versiones estudiadas y es técnicamente sencillo. No obstante, tiene el inconveniente de tener que partir los datos iniciales para tras el cálculo tener que reagruparlos, cada uno de los procesos puestos en marcha debe de leer una copia de la base de datos lo cual es muy pesado y puede suponer un una importante carga para el servidor de datos, teniendo N cores no permite un reparto óptimo de la carga al no ser trivial el reparto de los procesos de forma homogénea en los recursos. Estos inconvenientes tendrán mayor o menor importacia dependiendo de la arquitectura y configuración del ordenador o cluster empleado.

Por ello, hemos escogido tres programas que paralelizan BLAST de forma diferente pero directa y que en cualquiera de los casos producen resultados idénticos: el proporcionado por el NCBI, gpuBLAST [3] y mpiBLAST [4]. Los benchmark se han ejecutado en nodos Xeon de 8 cores a 2.24 GHz y con una tarjeta Tesla C2070 y este software está instalado en las máquinas del IZO-SGI [5].

 

NCBI BLAST

Programa proporcionado con el NCBI capaz de abrir hilos de ejecución lo que lo limita a tener que ejecutarse en un único nodo y paralelizarse en tantos hilos como cores tiene el nodo (no se ha medido con hyperthreading activado). Con este programa hemos chequeado primero la dependencia del cálculo con el formato de la base de datos, en concreto con el tamaño máximo de cada fichero de la misma.

 

Tabla 1. Tiempo empleado por NCBI-Blastx en función del tamaño máximo de fichero de las bases de datos.
Tamaño máximo (MB) 1000 500 200
Tiempo (s) 4004 3063 2682

 

En la tabla 1 podemos ver como al reducir el tamaño máximo permitido para los ficheros que contienen la base de datos NR se aumenta el rendimiento de blastx de forma considerable. Por ello, no es recomendable la instalación de las bases de datos blast preformateadas que ofrece NCBI, pues son ficheros muy grandes cuyo rendimiento en ordenadores de muchos cores se ve penalizado al no poder repartir la carga en los cores adecuadamente. Es por tanto conveniente formatear manualmente las bases de datos produciendo un número suficiente de ficheros o fragmentos de base de datos. Hemos detectado también que el trocear la base de datos aumenta el rendimiento si se usan varios cores pero se penaliza si se usa únicamente 1.

 

Tabla 2. Tiempo empleado por NCBI-Blastx en función del nº de cores.
Cores 1 8
Tiempo (s) 17002 2658
Aceleración 1 6.4

En cuanto a la escalabilidad de NCBI se ve en la tabla 2 que es muy buena. En un core empleó 17002 segundos en ejecutarse y en 8 cores 2658 segundos, lo cual representa una aceleración de 6.3 y una eficiencia de la paralización del 80%.

 

mpiBLAST

Programa desarrollado a partir del de NCBI y que le implementa la paralelización. Para ello divide la base de datos BLAST en fragmentos que reparte entre los cores, cada uno de los cuales hace la busqueda en sus fragmentos asignados. Es conveniente formatear la base de datos de tal modo que cada core trabaje sobre un único fragmento. El IZO-SGI realizó un informe en el 2008 sobre el rendimiento de mpiBLAST con intención de poder predecir los requerimientos de tiempo y memoria de mpiBLAST [6]. Se vió que mpiBLAST escala linealmente en ambos casos, a mayor número de nodos (y fragmentos de la base de datos) menor tiempo y menor memoria. Esto convierte a mpiBLAST en una aplicación ideal para su uso en clusters de muchos nodos pequeños (por ejemplo el grid Pendulo del IZO-SGI [7]) dado que permite reducir el tamaño de cada proceso de forma que entre en la memoria RAM del ordenador. Hay que mencionar que mpiBLAST está implementado sobre una versión más antigua del NCBI, por lo que esto puede suponer una penalización en su rendimiento.

 

Tabla 3. Tiempo empleado por NCBI-Blastx y mpiBLAST en función del número de cores.
cores 1 8 22
mpiBLAST 37601 2200
NCBI BLAST 5157

 

Hemos comparado mpiBLAST con el NCBI blast. mpiBLAST se ha ejecutado en 24 cores, no obstante sólo usa para la búsqueda en la base de los 22 cores pues 2 son siempre usados para la gestión del resto de procesos. Hemos decidido por ello compararlo con los 22 cores que realizan el cálculo. Comparándolo con el cálculo en un solo core (37601 s.) mpiBLAST supone una aceleración de 17 y un redimiento de la paralelización del 78%, es decir, paraleliza muy bien al compararlo con el cálculo en un core.

 

gpuBLAST

Existen varias implementeaciones de BLAST para GPGPUs pero hemos seleccionado ésta dado que produce exactamente los mismos resultados que el NCBI BLAST, solo está implementado el uso de GPGPUs en blastp. Hemos ejecutado gpuBLAST en tarjetas C2070 de última generación para cálculo científico.

Tabla 4. Tiempo empleado por NCBI-Blastp
1 core 1 core + gpu 8 cores 8 cores+gpu
Tiempo (s) 6457 2244 888 774

 

Como se observa en la tabla 4 gpuBLAST multiplica por 2.5 la velocidad de ejecución respecto a la versión que se ejecuta en un core. No obstante, los nodos tienen varios cores  que sería absurdo no usar y si ejecutamos NCBI-BLAST usando los 8 cores logramos una aceleración cercana a 8 que bate a la ejecución de gpuBLAST. Igualmente podemos ejecutar gpuBLAST usando todos los cores más la GPGPU. El multiplicar el número de cores por 8 (+GPGPU) en esta ocasión no múltiplica por 8 la velocidad de ejecución de sistema con 1 core con GPGPU dado que gran parte del trabajo ya lo está realizando la GPGPU y solo se acelera la parte que estaba realizando el core. De este modo conseguimos acelerar por 3 nuevamente la ejecución y conseguimos el mejor resultado pero sólo es un 20% más rápido que usar los 8 cores. Las GPGPUs pueden ser una alternativa para acelerar la ejecución de BLAST en ordenadores con poco potencia donde añadir una GPGPU de gama medía podría mejorar sensiblemente los resultados. No obstante, para servidores de gama alta con muchos cores el uso de la GPGPU no mejora el resultado de forma muy significativa.

 

Referencias

[1] NCBI-BLAST (wikipedia): http://es.wikipedia.org/wiki/BLAST
[2] NCBI-BLAST: http://blast.ncbi.nlm.nih.gov/Blast.cgi
[3] Artículo sobre gpuBLAST: http://bioinformatics.oxfordjournals.org/content/27/2/182
[4] Artículo sobre mpiBLAST: http://synergy.cs.vt.edu/pubs/papers/darling-cwce2002-mpiblast.pdf
[5] Software en el IZO-SGI: http://www.ehu.es/sgi/software-de-calculo/software-de-calculo-disponible
[6] Infome del IZO-SGI sobre mpiBLAST: http://www.ehu.es/sgi/software-de-calculo/mpiblast
[7] Grid Péndulo: http://www.ehu.es/sgi/recursos/cluster-pendulo

 

 

General

Curso de Fortran

February 17th, 2012

 

Curso de especial interés para desarrolladores de código de aplicaciones científicas en Fortran. El periodo para reservar plaza está abierto hasta el 1 de marzo. Las plazas son limitadas.

Para realizar la reserva de plaza debe de darse de alta en el sitio web del Centro a través del formulario

https://www.cesga.es/es/registro

Cuando y dónde

El curso tiene una duración de 15 horas y se celebrará en las instalaciones del CESGA en Santiago de Compostela los días 12, 13 y 14 de marzo de 2012.

Temario

Consulte aquí el temario.

Curso impartido por Juan Touriño Dominguez de la Universidade da Coruña.

Más información

Web del curso

 

 

 

General

Formación en Matlab

February 16th, 2012

 

Cursos presenciales en laboratorio informático.

 

Fundamentos de MATLAB

Madrid: 12-14 marzo
Más información

 

Simulink para Modelado de Sistemas Dinámicos

Madrid: 26-27 marzo
Bilbao: 25-26 abril
Más información

 

Técnicas de Programación de MATLAB

Bilbao: 24 abril
Más información

 

Información sobre otros cursos

Más información sobre cursos de matlab en este enlace.

 

 

Anuncios