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. - 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. Para poder ejecutar en paralelo es necesario saber
qué dependencias de datos existen
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. Análisis de dependencias
P1 P2
A B
B C
Si ordenáramos la ejecución,
los elemento B pueden ejecutarse en paralelo
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. 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. 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. 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. 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. 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. 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
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.