Paralelización del algoritmo de Smith-Waterman

2,000 views

Published on

Presentación de la implementación paralela del algoritmo de Smith-Waterman para la alineación de secuencias genéticas.

Published in: Health & Medicine
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,000
On SlideShare
0
From Embeds
0
Number of Embeds
16
Actions
Shares
0
Downloads
28
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Paralelización del algoritmo de Smith-Waterman

  1. 1. Paralelización del algoritmo de Smith-Waterman Luis Belloch Gómez Bioinformática, Mayo 2010 Master Computación Paralela y Distribuida
  2. 2. BLAST y similares son más rápidos, pero pueden no detectar algunas alineaciones. Smith-Waterman es más preciso, pero su ejecución es mucho más lenta.
  3. 3. - H E A G A W G H E E - 0 0 0 0 0 0 0 0 0 0 0 ) P 0 0 0 0 0 0 0 0 0 0 0 A 0 0 0 5 0 5 0 0 0 0 0 W 0 0 0 0 2 0 20 12 4 0 0 H 0 10 2 0 0 0 12 18 22 14 6 E 0 2 16 8 0 0 4 10 18 21 20 A 0 0 8 21 13 5 0 4 10 20 27 E 0 0 6 13 18 12 4 0 4 16 26 1. Construcción de la matriz de puntuación. 2. Recorrido inverso a partir del máximo. E F
  4. 4. Para poder ejecutar en paralelo es necesario saber qué dependencias de datos existen
  5. 5. E 0 0 6 13 18 12 4 0 4 Análisis de dependencias - H - 0 0 A(i-1,j-1) A(i-1,j) P 0 0 A 0 0 A(i,j-1) A(i,j) W 0 0 H 0 10 E 0 2 Cada elemento depende de su fila superior A 0 0 y su columna izquierda. E 0 0
  6. 6. Análisis de dependencias P1 P2 A B B C Si ordenáramos la ejecución, los elemento B pueden ejecutarse en paralelo
  7. 7. F G H I J K Ejecución por bloques - H E A G A W G H E E - 0 0 0 0 0 0 0 0 0 0 0 P 0 0 0 0 0 0 0 0 0 0 0 P1 A 0 0 0 5 0 5 0 0 0 0 0 W 0 0 0 0 2 0 20 12 4 0 0 H 0 10 2 0 0 0 12 18 22 14 6 P2 E 0 2 16 8 0 0 4 10 18 21 20 A 0 0 8 21 13 5 0 4 10 20 27 P3 E 0 0 6 13 4 10 4 0 4 16 26 Para evitar un envío excesivo de datos, se divide la matriz en bloques - H E A G A W G H E E - 0 0 0 0 0 0 0 0 0 0 0 P 0 0 0 0 0 0 0 0 0 0 0
  8. 8. P2 E 0 2 16 8 0 0 4 10 18 21 20 A 0 0 8 21 13 5 0 4 10 20 27 P3 Ejecución por bloques E 0 0 6 13 4 10 4 0 4 16 26 - H E A G A W G H E E - 0 0 0 0 0 0 0 0 0 0 0 P 0 0 0 0 0 0 0 0 0 0 0 P1 A 0 0 0 5 0 5 0 0 0 0 0 envío de datos W 0 0 0 0 2 0 20 12 4 0 0 de P1 a P2 H 0 10 2 0 0 0 12 18 22 14 6 P2 E 0 2 16 8 0 0 4 10 18 21 20 envío de datos A 0 0 8 21 13 5 0 4 10 20 27 de P3 a P4 P3 E 0 0 6 13 4 10 4 0 4 16 26 Cada proceso comparte su última fila con el resto
  9. 9. A 0 0 8 21 13 5 0 4 10 20 27 E 0 0 6 13 18 12 4 0 4 16 26 E 0 0 6 13 18 12 4 0 4 16 26 Ejecución por bloques B C A D B E C F D E F P1 P1 C D B E C F D G E F G C F D P2 P2 D E G E H F G H E F D G E H F I G H I P3 P3 F G E H F I G J H I J F I G P4 P4 G H J H K I J K La ejecución se realiza en cascada, como máximo existirán max(c,f) procesos en paralelo - H E A G A W G H E E - H E A G A W G H E E - 0 0 0 0 0 0 0 0 0 0 0
  10. 10. Detalles Implementación Paradigma: Memoria Distribuida. Desarrollado en C & MPI. La matriz de puntuación es un vector de c x f enteros, contiguos en memoria. En lugar de almacenar la matriz de dirección por separado, se empaqueta en los dos bits superiores. 00 bits 29 a 0
  11. 11. Entorno de pruebas Quadcluster del DSIC SGI Altix XE, 4 nodos Cada nodo 2 Intel Xeon Quadcore 5365 (64 bits) 8 cores por nodo 16 GB RAM Total 32 procesadores (nucleos)
  12. 12. Estructura de pruebas El coste del algoritmo está en la construcción de la matriz de puntuación. Secuencias de 100, 3K y 30K elementos, sacadas de Uniprot. HBA_HUMAN.fasta 142 x 147 HBB_HUMAN.fasta FBN2_HUMAN.fasta 2.912 x 2.907 FBN2_MOUSE.fasta TITIN_HUMAN.fasta 34.350 x 35.213 TITIN_MOUSE.fasta
  13. 13. Coste Espacial Una secuencia de 30K elementos produce una matriz de 30K x 30K = 900 millones de elementos. 900 x 4bytes ≅ 3.35GB Repartidos entre 32 procesadores, cada uno construye una matriz de 30K x (30K/32) ≅ 100MB
  14. 14. Resultados secuencial icc test2.c util.c sw.c -o test2 -std=c99 -O3 ./test2 Prueba de rendimiento secuencial (matriz puntuación solo). t25a.s t25b.s la: 25 lb: 25 it:1000 tst: 1 T: 0.01 ms t100a.s t100b.s la: 140 lb: 140 it:1000 tst: 1 T: 0.16 ms t3Ka.s t3Kb.s la: 2912 lb: 2907 it:1 tst: 1 T: 75.00 ms t30Ka.s t30Kb.s la: 34350 lb: 35213 it:1 tst: 1 T: 11000.00 ms
  15. 15. Resultados paralelo TITIN HumanMouse, 34Kx35K elementos 4.5GB total, 140MB por proceso np ts tp Sp Ep 4 11 2,641 4,165 1,041 8 11 1,365 8,059 1,007 16 11 0,709 15,507 0,969 24 11 0,493 22,324 0,930 32 11 0,389 28,292 0,884 * tiempos en seg.
  16. 16. 4 11 2,64114 4,16 4,00 1,04 1,00 8 11 1,36494 8,06 8,00 1,01 1,00 16 24 32 11 11 11 Speed Up 0,70934 0,49275 0,38880 15,51 22,32 28,29 16,00 24,00 32,00 0,97 0,93 0,88 1,00 1,00 1,00 Tiempo del mejor algoritmo secuencial frente al tiempo del paralelo (sp = t1 / tp) 40,00 35,00 30,00 25,00 28,29 20,00 22,32 15,00 15,51 10,00 5,00 8,06 0 4,16 4 8 16 24 32 Speed Up Sp ref.
  17. 17. 0 4 11 2,641 4,165 1,041 0 8 11 1,365 8,059 1,007 0 16 11 0,709 15,507 0,969 0 0 24 32 Eficiencia 11 11 0,493 0,389 22,324 28,292 0,930 0,884 Grado de utilización del sistema (ep = sp/p) 1,10 1,00 1,04 1,01 0,97 0,90 0,93 0,88 0,80 0,70 4 8 16 24 32 Eficiencia Ep ref.
  18. 18. Conclusiones La paralelización funciona mejor con tamaños de problema grandes, el algoritmo secuencial se las arregla para secuencias cortas. Posibles trabajos futuros: Memoria compartida o sistemas híbridos.

×