sistema paralelizado para prote omica

INSTITUTO POLIT ´ ECNICO NACIONAL ESCUELA SUPERIOR DE C ´ OMPUTO ESCOM Trabajo Terminal “Sistema paralelizado para prote´ omica” 12-1-0015 Que para cumplir con la opci´ on de titulaci´ on curricular en la carrera “Ingenier´ ıa en Sistemas Computacionales” Presenta: Res´ endiz Calder´ on Miguel Angel Directores: M. en C. V´ elez Salda˜ na Ulises Dr. Vadillo Hoyo Carlos ————————————— M´ exico, D.F., Noviembre del 2011

Upload: others

Post on 12-Apr-2022

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sistema paralelizado para prote omica

INSTITUTO POLITECNICO NACIONAL

ESCUELA SUPERIOR DE COMPUTO

ESCOM

Trabajo Terminal

“Sistema paralelizado para proteomica”

12-1-0015

Que para cumplir con la opcion de titulacion curricular en la carrera“Ingenierıa en Sistemas Computacionales”

Presenta:Resendiz Calderon Miguel Angel

Directores:M. en C. Velez Saldana Ulises

Dr. Vadillo Hoyo Carlos

————————————— Mexico, D.F., Noviembre del 2011

Page 2: Sistema paralelizado para prote omica

INSTITUTO POLITECNICO NACIONAL

ESCUELA SUPERIOR DE COMPUTO

ESCOM

No. registro: TT 1210015 Serie: Amarilla Noviembre 2011

Documento tecnico“Sistema paralelizado para proteomica”

Presenta:Resendiz Calderon Miguel Angel1

Directores:

M. en C. Velez Saldana Ulises

Dr. Vadillo Hoyo Carlos

Resumen

En bioinformatica, una de las tareas principales es el analisis de secuencias proteicas. Compu-tacionalmente, esto se traduce en busqueda de similitudes entre dos cadenas de caracteres. Sehan desarrollado distintos algoritmos para resolver esta tarea como los son Smith-Waterman,Levenshtein, Hirchberg y Needleman-Wunsh, por mencionar algunos. Sin embargo, estos algo-ritmos son costosos computacionalmente y se usan supercomputadoras para su ejecucion. Eneste trabajo se presenta la implementacion en CUDA del algoritmo de Needleman-Wunsh.

Palabras clave: bioinformatica, sistema paralelo, proteomica.

[email protected]

Page 3: Sistema paralelizado para prote omica

INSTITUTO POLITECNICO NACIONAL

ESCUELA SUPERIOR DE COMPUTO

ESCOM

Comision Academica de Trabajo Terminal.

Mexico, D.F. a 7 de Diciembre de 2011.

LIC. SANDRA PEREZ VERAPRESIDENTE DE LA COMISION ACADEMICADE TRABAJO TERMINALPRESENTE

Por medio del presente, informo que el alumno Resendiz Calderon Miguel Angel que realizoel TTR 12-1-0015 titulado “Sistema paralelizado para proteomica” concluyo satisfacto-riamente su trabajo.

El empastado del reporte tecnico final y el disco compacto (CD) fueron revisados y corregidospor un servidor, cubriendo el alcance y objetivo planteados en el protocolo original, cumpliendolos requisitos establecidos por la comision que usted preside.

ATENTAMENTE

Dr. Carlos Hoyo VadilloDirector

Page 4: Sistema paralelizado para prote omica

Advertencia

Este informe contiene informacion desarrollada por la Escuela Superior de Computodel Instituto Politecnico Nacional a partir de datos y documentos con derecho depropiedad y por lo tanto su uso queda restringido a las aplicaciones que explıcita-mente se convengan.

La aplicacion no convenida exime a la escuela se responsabilidad tecnica y da lugara las consecuencias legales que para tal efecto se dterminen.

Informacion adicional sobre este reporte tecnico podra obtenerse en:

Subdireccion Academica de la Escuela Superior de Computo del Instituto PolitecnicoNacional, situada en Av. Juan de Dios Batiz s/n Telefono: 5729−6000 Extension52000.

Page 5: Sistema paralelizado para prote omica

Agradecimientos

Agradezco principalmente a mis padres, que a pesar de la distancia, me han apoyado incondi-cionalmente, me han ensenado ha tomar buenas decisiones y nunca dejar las cosas a la deriva;ademas han respetado mis decisiones y mas aun, me han apoyado y motivado a seguir siempreadelante.

A mis directos y sinodales, que sin mas han decidido apoyarme y brindarme un poco de sutiempo para poder realizar este trabajo.

A mis hermanos y mi novia, que siempre estuvieron conmigo y siempre me apoyaron; que memotivaron y siempre me demostraron su compresion, ademas de siempre incitarme a ser mejorsiempre.

Resendiz Calderon Miguel Angel

Page 6: Sistema paralelizado para prote omica

Indice general

1. Introduccion 11.1. Problematica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2. Propuesta de solucion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3. Objetivo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.3.1. Objetivos Especificos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.4. Justificacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.5. Contenido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2. Fundamentos biologicos. 42.1. El ADN y su estructura. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2. Replicacion de ADN y Transcripcion de informacion . . . . . . . . . . . . . . . . 52.3. Sıntesis de proteınas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3. Biologıa computacional. 133.1. Bioinformatica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.2. Bases de datos biologicas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.3. Analisis de secuencias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.3.1. Matrices de sustitucion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.4. El algoritmo de Vladimir Levenshtein. . . . . . . . . . . . . . . . . . . . . . . . . 153.5. El algoritmo de Needleman-wunsch . . . . . . . . . . . . . . . . . . . . . . . . . . 183.6. El algoritmo de Smith-Waterman. . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4. El modelo de programacion de CUDA. 224.1. Hardware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224.2. El modelo de programacion de CUDA. . . . . . . . . . . . . . . . . . . . . . . . . 22

4.2.1. Cooperacion entre hilos e integracion de bloques. . . . . . . . . . . . . . . 224.2.2. Jerarquıa de memoria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.2.3. CUDA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

5. Analisis. 255.1. Fuerza bruta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255.2. Algoritmo de Needleman-Wunsh . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

6. Diseno. 316.1. Inter-task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

6.1.1. Optimizacion del algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . 316.2. Intra-task. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

6.2.1. Problema de los lectores y escritores. . . . . . . . . . . . . . . . . . . . . . 336.2.2. Algoritmo Intra-task con lectores y escritores . . . . . . . . . . . . . . . . 36

i

Page 7: Sistema paralelizado para prote omica

INDICE GENERAL ii

7. Resultados obtenidos 407.1. Ley de Amdahl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407.2. Resultados obtenidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

7.2.1. Alineamientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407.2.2. Tiempos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

8. Conclusiones. 448.1. Resultados obtenidos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448.2. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448.3. Trabajo a futuro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

Page 8: Sistema paralelizado para prote omica

Indice de figuras

2.1. Esqueleto Azucar-Fosfato de las cadenas de ADN . . . . . . . . . . . . . . . . . . 52.2. Puente de hidrogeno entre cadenas polinucleotidas . . . . . . . . . . . . . . . . . 62.3. Estructura del ADN, doble helice de dos cadenas polinucleotidas. . . . . . . . . . 62.4. Burbuja de replicacion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.5. Proceso de replicacion de cadenas de ADN. . . . . . . . . . . . . . . . . . . . . . 72.6. Proceso de transcripcion de informacion de ADN a ARN. . . . . . . . . . . . . . 82.7. Estructura de un ribosoma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.8. Union del complejo de iniciacion con la molecula de ARNm . . . . . . . . . . . . 102.9. Inicio de la traduccion de una proteına . . . . . . . . . . . . . . . . . . . . . . . . 112.10. Alargamiento de una proteına . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.11. Termino de la traduccion de una proteına . . . . . . . . . . . . . . . . . . . . . . 12

3.1. Alineamiento entre dos secuencias. . . . . . . . . . . . . . . . . . . . . . . . . . . 143.2. Matriz BLOSUM62 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4.1. Arquitectura de los GPUs de NVIDIA . . . . . . . . . . . . . . . . . . . . . . . . 23

5.1. Mınima comparacion de dos cadenas proteicas. . . . . . . . . . . . . . . . . . . . 255.2. Rutas posibles para una matriz de 2x2. . . . . . . . . . . . . . . . . . . . . . . . 265.3. Comparacion matriz de 1x2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265.4. Comparacion matriz 2x1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265.5. Rutas posibles para una matriz de 2x3. . . . . . . . . . . . . . . . . . . . . . . . 275.6. Rutas posibles para una matriz de 3x2. . . . . . . . . . . . . . . . . . . . . . . . 275.7. Comparacion matriz 2x2 aminoacidos. . . . . . . . . . . . . . . . . . . . . . . . . 285.8. Analisis de rutas para una matriz de 3x3. . . . . . . . . . . . . . . . . . . . . . . 285.9. Dependencia de celdas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295.10. Diagonales menores para una matriz de 3x3. . . . . . . . . . . . . . . . . . . . . . 305.11. Diagonales menores para una matriz de 4x4. . . . . . . . . . . . . . . . . . . . . . 30

7.1. Alineamiento de secuencias con implementacion secuencial. . . . . . . . . . . . . 417.2. Alineamiento de secuencias con implementacion paralela. . . . . . . . . . . . . . 42

iii

Page 9: Sistema paralelizado para prote omica

Indice de cuadros

2.1. Bases complementarias entre ARN y ADN . . . . . . . . . . . . . . . . . . . . . . 82.2. Codigo genetico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

5.1. Numero de rutas para matrices de 2x2 hasta 10x10. . . . . . . . . . . . . . . . . 29

7.1. Aceleraciones esperadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407.2. Tiempos de ejecucion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437.3. Aceleraciones obtenida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

iv

Page 10: Sistema paralelizado para prote omica

Capıtulo 1

Introduccion

La bioinformatica es una nueva area de la ciencia, la cual se basa en el uso de tecnologıas deinformacion que, utilizando un conjunto de datos biologicos, dan solucion a problemas, llegandoası, a una conclusion biologica.

El reto que enfrenta la biologıa computacional puede ayudar a descubrir nuevos genes y enel diseno de modelos moleculares, que con la ayuda de experimentos revelen relaciones descono-cidas entra la estructura y el funcionamiento de los genes y proteınas [16].

Una tecnica importante que permite la comparacion de las estructuras de proteınas es elalineamiento de secuencias, en este proceso las similitudes y diferencias son analizadas con elobjetivo de descubrir relaciones funcionales, estructurales y evolutivos entre las secuencias enestudio, es decir, una de las tareas mas importantes de la bioinformatica es la comparacion decadenas y busqueda de similitudes. Sin embargo, este tipo de analisis son costosos en cuantorecursos computacionales.

1.1. Problematica.

Imagine una crisis, en la cual un nuevo virus causa una epidemia de una enfermedad mortal parahumanos o animales. Para tener una idea de como es que el virus se comporta, cual es la formaen que se contagia y como poder atacarlo, lo biologos aıslan el material genetico y determinantanto su secuencia genetica como proteica.

Compara el nuevo genoma contra un banco de datos, el cual contiene todos los mensajesgeneticos conocidos, puede caracterizar el virus y revelar sus relaciones con los virus previamen-te estudiados, lo cual ayuda a entender como funciona el nuevo virus. [4] Estos estudios puedencontinuar con el objetivo de crear terapias antivirales, ya que los virus contienen moleculasproteicas con objetivos especıficos y existen farmacos que interfieren en la estructura viral o enel funcionamiento de estos proteınas [5].

Este tipo de procesos toman mucho tiempo, ya que el crecimiento de las bases de datos sonexponenciales[5], aumentando el conjunto de datos contra los cuales se debe hacer la compara-cion. Este crecimiento causa que tanto el espacio de memoria como el tiempo de procesamientoaumenten para lograr un alineamiento optimo. Por lo tanto es comun el uso de super compu-tadoras para realizar estas tareas, sin embargo, no toda la comunidad cientıfica tiene acceso aeste tipo de dispositivos; y tomando en cuenta el auge de las nuevas arquitecturas multi-nucleo,

1

Page 11: Sistema paralelizado para prote omica

CAPITULO 1. INTRODUCCION 2

ası como de otras tecnologıas de bajo costo como lo son los GPUs1, se pueden desarrollar aplica-ciones de alto rendimiento que permitan reducir los tiempos de computo, agilizando el analisisde secuencias.

1.2. Propuesta de solucion.

Tomando en cuenta la problematica que se menciona en la seccion previa, se observa que en unacrisis viral, donde la vida de un gran conjunto de personas esta en riesgo, el tiempo es crucialy se debe encontrar la manera de agilizar los procesos biologicos que ayuden a la encontrar unamedida de solucion a dicha crisis.

Se propone realizar una aplicacion de escritorio, que aprovechando el poder de computo delos GPUs de NVIDIA, realice el analisis de secuencias de una manera rapida utilizando comomarco de referencia los algoritmos existentes para dicho analisis.

1.3. Objetivo.

Desarrollar un conjunto de funciones que permitan la realizacion del alineamiento de secuenciasde manera paralela, con la finalidad de crear la base de un sistema de informacion que sirva pararealizar las principales tareas de bioinformatica de manera paralela.

1.3.1. Objetivos Especificos.

• Estudio del lenguaje para los GPUs (CUDA).

• Estudiar los procesos y algoritmos utilizados para el analisis de secuencias.

• Definir el algoritmos a utilizar.

• Paralelizar el algoritmo a utilizar.

1.4. Justificacion

Con la realizacion de un sistema que mejor el tiempo de ejecucion del alineamiento de secuen-cias, se puede ayudar a mejorar y optimizar la resolucion de los problemas biomedicos, ya queal realizar este tipo de analisis con herramientas convencionales, se puede llevar mucho tiempo,y puesto que dıa con dıa se descubren nuevos virus que amenazan con atentar con la integridadde la sociedad es necesario contar con una herramienta que este al alcance de la comunidadcientıfica promedio y realice los procesos de una manera optima y eficiente.

Teniendo en cuenta que cuando la vida de la sociedad esta en riesgo, el tiempo de respuestaes muy importante, ya que mientras mas rapido se ataque la amenaza se reduce la probabilidadde un desaste viral.

1GPU: Unidad de procesamiento grafico, GPGPU: Unidades de procesamiento grafico de proposito general;en este documento utilizaremos el termino indistintamente.

Page 12: Sistema paralelizado para prote omica

CAPITULO 1. INTRODUCCION 3

1.5. Contenido.

El presente trabajo esta dividido en 7 capıtulos y en 21 secciones las cuales se definen como sigue:En el capıtulo 1, se presentan los fundamentos biologicos necesarios para entender y realizar elpresente trabajo. En el Capıtulo 2, se hace una discusion de la importancia de la computaciondentro de la biologıa, ası como cuales son los algoritmos que se utilizan en la actualidad pararealizar el analisis de secuencias, ası como su funcionamiento. En el Capıtulo 3, se describe comola arquitectura de los GPUs de NVIDIA, ası como el modelo de programacion en CUDA. Enel Capıtulo 4, se plantea la solucion para resolver la problematica descrita con anterioridad. Enel Capıtulo 5, se presenta el diseno de la solucion planteada. En el Capıtulo 6, se presentan losresultados obtenidos.

Page 13: Sistema paralelizado para prote omica

Capıtulo 2

Fundamentos biologicos.

A traves de este capitulo se dan los conceptos basicos de biologıa molecular, esto con el fin dehacer claros los objetivos del presente trabajo. En este apartado se trataran los temas generalessobre: como esta constituido el acido desoxirribonucleico (ADN), como funciona el ADN, comose producen las proteınas.

2.1. El ADN y su estructura.

La naturaleza hereditaria de todo organismo viviente es definida por su genoma, el cual esuna larga secuencia de acido nucleico1 que proporciona la informacion para la construccion delorganismo; se denomina informacion ya que esta secuencia no tiene la capacidad como tal deconstruir el organismo, pero es utilizada como una plantilla para la construccion de las proteınasy determinar la funcion de las mismas. Por medio de transformaciones complejas, estas largassecuencias son utilizadas para producir todas las proteınas necesarias por el organismo en elmomento y lugar necesario. Fısicamente, el genoma puede ser dividido en varias moleculas dife-rentes de acido nucleico, dichas moleculas son conocidas como genes. Cada gen es una secuencia,que dentro del acido nucleico, representa a una proteına. [1]

El acido desoxirribonucleico (ADN) de todos los organismos en la Tierra se componen decuatro pequenas subunidades llamadas nucleotidos [3]. Los nucleotidos son moleculas simplesconstituida por un azucar, un fosfato y una bases nitrogenadas [4]. La importancia de losnucleotidos radica principalmente en que son los monomeros2 constituyentes de los acidos nu-cleotidos y los productos normales de su hidrolisis. Los acidos nucleicos (ADN y ARN) estanconstituidos por numerosos nucleotidos [2]. Cada nucleotido del ADN consta de tres partes: ungrupo fosfato, un azucar llamado desoxirribosa y una de las cuatro bases nitrogenadas posibles,las cuales son adenina (A), timina (T), guanina (G) o citosina (C). [3]

En un principio se creyo que el ADN estaba compuesto por cantidades iguales de las cuatrobases nitrogenadas (A, T, G y C) y que la unidad fundamental era el tetranucleotido3 [2]. Peroen la decada de 1940, Chargaff analizo las cantidades relativas de los cuatro nucleotidos en elADN de diversas especies y encontro una curiosa regularidad [3]. Los ADNs aislados a partirde celulas o tejidos diferentes de diversos individuos, dentro de una misma especie, presentan

1polımeros formados por la repeticion de monomeros llamados nucleotidos, unidos mediante enlaces fosfo-diester.

2Compuesto de peso molecular bajo3Compuesto formado por cuatro las cuatro bases nitrogenadas.

4

Page 14: Sistema paralelizado para prote omica

CAPITULO 2. FUNDAMENTOS BIOLOGICOS. 5

identica composicion en bases, que ademas no cambia con la edad, estado nutricional o varia-ciones del entorno. Por lo tanto, la composicion del ADN es caracterıstica de cada especie [2].Ademas se tiene que el ADN de cualquier especie contiene cantidades iguales de A y T, ası comocantidades iguales de G y C [3].

James Watson y Francis Crick propusieron que la molecula de ADN se compone de doscadenas polinucleotıdicas. Dentro de cada una de estas cadenas, el grupo Fosfato (P) de unnucleotido se enlaza con el Azucar (S) del siguiente nucleotido de la cadena, como se muestra enla figura 2.1, formando enlaces covalentes [3]. Esta modalidad crea una estructura de azucaresy fosfatos llamada Esqueleto Azucar-fosfato, del cual sobresalen las bases nitrogenadas.

Figura 2.1: Esqueleto Azucar-Fosfato de las cadenas de ADN

Del mismo modo, Watson y Crick determinaron, por medio de las reglas de Chargaff, quetanto A y T como G y C tienen una atraccion quımica entre ellos [4]. Esta atraccion quımicase produce por la formacion de enlaces por puentes de hidrogeno (dos atomos electronegativos,como nitrogeno (N) y oxigeno (O), comparten un atomo de hidrogeno) entre las dos cadenaspolinucleotidas, como se muestra en la figura 2.2 [2]. Gracias a este puente de hidrogeno entre lasdos cadenas polinucleotidas se crea la doble helice del ADN, el cual se muestra en la figura 2.3.

2.2. Replicacion de ADN y Transcripcion de informacion

Es crucial que el material genetico se reproduzca con exactitud. Dado que las cadenas poli-nucleotidas solo estan unidas por medio de puentes de hidrogeno, es muy facil separarlas sinnecesidad de romper enlaces covalentes [1]. Para la replicacion del ADN es necesario la partici-pacion de docenas de enzimas, pero una de las enzimas clave es la ADN Helicasa, esta enzimase encarga de romper enlaces de hidrogeno entre bases nitrogenadas complementarias. En estaparte del proceso, se separa y desenrolla el ADN progenitor y se forma la burbuja de replica-cion [3], y dentro de esta burbuja se crea dos regiones llamadas horquillas de replicacion [2], talcomo se muestra en la figura 2.4; esta horquilla de replicacion se asemeja a una bifurcacion decaminos y estas horquillas se desplazan en sentidos opuestos. La duplicacion implica un movi-miento de la horquilla de replicacion a lo largo de todo el ADN progenitor, de tal manera que

Page 15: Sistema paralelizado para prote omica

CAPITULO 2. FUNDAMENTOS BIOLOGICOS. 6

Figura 2.2: Puente de hidrogeno entre cadenas polinucleotidas

Figura 2.3: Estructura del ADN, doble helice de dos cadenas polinucleotidas.

Page 16: Sistema paralelizado para prote omica

CAPITULO 2. FUNDAMENTOS BIOLOGICOS. 7

existe un desenrollamiento de las cadenas progenitoras y un enrollamiento de los duplex hijos [1].

Figura 2.4: Burbuja de replicacion.

En el proceso de replicacion se producen muchas burbujas de replicacion, con el fin de ace-lerar el proceso. Estas burbujas crecen conforme la replicacion de ADN avanza, hasta que lasburbujas se encuentran al finalizar la replicacion [3].

La sıntesis de acidos nucleicos se realiza por enzimas especıficas, las cuales reconocen elmolde y emprenden la tarea de anadir nuevos nucleotidos a la cadena polinucleotıda; una deestas enzimas es la ADN polimerasa4 [1]. En cada horquilla de replicacion, la ADN polimerasasintetiza dos nuevas cadenas de ADN que son complementarias a las cadenas progenitoras.El ADN polimerasa reconoce una base nucleotıdica no apareada de la cadena progenitora yla combina con un nucleotido libre complementario. Despues realiza la tarea de crear enlacescovalentes que ligan el fosfato (P) del nucleotido entrante con el azucar (S) del nucleotidopreviamente agregado a la cadena hija en crecimiento [3]. En la figura 2.5 se muestra el trabajoque realiza tanto el ADN Helicasa como el ADN polimerasa.

Figura 2.5: Proceso de replicacion de cadenas de ADN.

La transcripcion de informacion de ADN a ARN (acido ribonucleico), es similar a la repli-cacion de ADN. Para comenzar la transcripcion, una enzima llamada ARN polimerasa debelocalizar el comienzo de los genes que habran de copiarse; esto no es tarea facil ya que se estimaque una celula humana contiene alrededor de 30 000 genes. La transcripcion comienza cuando laARN polimerasa se une al promotor de un gen5. Despues la ARN polimerasa cambia de forma yobliga a la doble helice de ADN a desenrollarse parcialmente [6]; una vez desenrollada la helice,la ARN polimerasa avanza en un sentido, a lo largo de una de las cadenas de ADN, sintetizandouna cadena individual de ARN que es complementaria a la cadena de ADN, en la tabla 2.1 semuestran las bases complementarias entre ADN y ARN [3]. La cadena de ADN a la que se une

4enzima que se encarga de hacer un polımero de ADN5Secuencia de bases nitrogenadas no transcrita que marca el inicio de un gen.

Page 17: Sistema paralelizado para prote omica

CAPITULO 2. FUNDAMENTOS BIOLOGICOS. 8

el ARN polimerasa se le da el nombre de cadena molde.

ADN

A T C G

ARN

A XU XC XG X

Tabla 2.1: Bases complementarias entre ARN y ADN

Cuando se han agregado aproximadamente 10 nucleotidos a la cadena de ARN en creci-miento, los primeros nucleotidos se separan de la cadena molde; esto permite que la helice deADN se enrolle nuevamente. Esto permite que mientras la cadena de ARN se va alargando, unextremo se desprende de la cadena de ADN y el otro permanece unido a la cadena de ADNpor medio de la ARN polimerasa. La sıntesis de la cadena de ARN continua hasta que la ARNpolimerasa alcanza una secuencia de nucleotidos llamada senal de terminacion; en este puntola cadena de ARN se desprende completamente de la cadena molde, y se tiene una molecula deARN terminada [3]. En la figura 2.6 se muestra el proceso de transcripcion.

Figura 2.6: Proceso de transcripcion de informacion de ADN a ARN.

2.3. Sıntesis de proteınas

Para la sıntesis de proteınas se necesitan de tres moleculas diferentes de ARN: ARN mensaje,ARN de transferencia y ARN ribosomico. Como sus nombres lo sugieren, cada tipo de ARN

Page 18: Sistema paralelizado para prote omica

CAPITULO 2. FUNDAMENTOS BIOLOGICOS. 9

tiene una funcion especıfica en la sıntesis de proteınas.

El ARN mensajero (ARNm) contiene el codigo de la secuencia de aminoacidos6 de una pro-teına [3]. El codigo utilizado para traducir la cadena polinucleotıda del ARNm a aminoacidos,se llama codigo genetico el cual se muestra en la tabla 2.2 [6]; este codigo se basa en un conjuntode tres nucleotidos, al cual se le llama codon. Cada codon codifica a un aminoacido [4].

U C A G

U

UUU}

PheUCU }

Ser

UAU}

TyrUGU

}Cys

UUUC UCC UAC UGC CUUA

}Leu

UCA UAA UGA AUUG UCG UAG UGG Trp G

C

CUU }Leu

CCU }Pro

CAU}

HisCGU }

Arg

UCUC CCC CAC CGC CCUA CCA CAA

}Gln

CGA ACUG CCG CAG CGG G

A

AUU }Ile

ACU }Thy

AAU}

AsnAGU

}Ser

UAUC ACC AAC AGC CAUA ACA AAA

}Lys

AGA}

ArgA

AUG Met ACG AAG AGG G

G

GUU }Val

GCU }Ala

GAU}

AspGGU }

Gly

UGUC GCC GAC GGC CGUA GCA GAA

}Glu

GGA AGUG GCG GAG GGG G

Tabla 2.2: Codigo genetico.

Donde:Empezar

Parar

El ARN de transferencia (ARNt) esta formado por una cadena polinucleotıda, principal-mente tiene dos extremos en uno se encuentra un anticodon7 y del otro extremo un aminoacido.Esta molecula entrega el aminoacido correcto para el apareamiento de anticodon ARNt con cadacodon de ARNm [6].

El ARN ribosomico (ARNr) es un compuesto importante para el ribosoma, el ribosoma sonlas estructuras en las cuales se lleva a cabo la traduccion de ARNm, esta estructura esta forma-da por dos subunidades: mayor y menor; las cuales estan compuestas por ARNr y muchas masproteınas. Las dos subunidades del ribosoma permanecen separadas, amenos que se encuentrensintetizando una proteına. La subunidad mayor del ribosoma contiene dos sitios de enlazamientopara moleculas de ARNt, el sitio A y el sitio P. En la figura 2.7 se muestra la estructura delribosoma.

El aminoacido metionina puede estar presente en muchos puntos de la secuencia de aminoaci-dos de una proteına, sin embargo, en todas las proteınas la metionina ocupa la primera posicion;y solo existe un codon capaz de sintetizar a la metionina, este es AUG. El codon AUG de la

6son las unidades elementales constitutivas de las proteınas7secuencia de tres nucleotidos que es complementaria a los codones que se encuentran en el ARNm.

Page 19: Sistema paralelizado para prote omica

CAPITULO 2. FUNDAMENTOS BIOLOGICOS. 10

Figura 2.7: Estructura de un ribosoma

secuencia de ARNm marca el inicio de una proteına. El complejo de iniciacion, que contiene unasubunidad ribosomica menor, un ARNt de metionina y varias proteınas mas, es el encargado deiniciar la traduccion [3].

Una vez que el complejo de iniciacion se adhiere al extremo de una molecula de ARNm elcomplejo de iniciacion avanza a lo largo de la molecula de ARNm hasta encontrar el primercodon AUG, el codon del ARNm forma pares de bases con el anticodon UAC del ARNt demetionina, como se muestra en la figura 2.8; en este punto la subunidad ribosomica mayor seune al complejo de iniciacion y comienza la traduccion de la proteına, como se muestra en lafigura 2.9. [6]

Figura 2.8: Union del complejo de iniciacion con la molecula de ARNm

El ribosoma ensamblado mantiene alineados dos codones del ARNm con los dos sitios deenlazamiento de ARNt de la subunidad ribosomica mayor. Una vez alineados los codones delARNm, un segundo ARNt, que contiene el anticodon complementario del codon de ARNm,se desplaza al segundo sitio de enlazamiento de la subunidad ribosomica mayor, quedando unARNt junto al otro. El ribosoma procede a unir los dos aminoacidos que contienen las dosmoleculas de ARNt, que dando sujeto el primer aminoacido al segundo y a la segunda moleculade ARNt; esto deja a la primer molecula de ARNt vacıa y a la segunda con una cadena dedos aminoacidos. Despues el ribosoma libera a la primer molecula de ARNt y desplaza a la se-

Page 20: Sistema paralelizado para prote omica

CAPITULO 2. FUNDAMENTOS BIOLOGICOS. 11

Figura 2.9: Inicio de la traduccion de una proteına

gunda al primer sitio de enlazamiento, en la figura 2.10 se muestra el proceso de alargamiento [3].

Figura 2.10: Alargamiento de una proteına

Al igual que en la transcripcion, la traduccion (o sıntesis) de proteınas necesitan una senal dealto, las cuales se muestran en la tabla 2.2. A diferencia de los demas codones, estas secuencias nose enlazan a un ARNt; cuando el ribosoma encuentra alguna de estas tres senales de alto libera ala cadena polipeptida (proteına) y al ARNm. El ribosoma se vuelve a separar permitiendo que sepueda volver a utilizar para sintetizar a otra proteına, este proceso se ilustra en la figura 2.11 [3].

Page 21: Sistema paralelizado para prote omica

CAPITULO 2. FUNDAMENTOS BIOLOGICOS. 12

Figura 2.11: Termino de la traduccion de una proteına

Page 22: Sistema paralelizado para prote omica

Capıtulo 3

Biologıa computacional.

En todas las areas de la investigacion medica y biologica, el rol de la computacion ha mejoradodrasticamente los resultados en los ultimos 5 o 10 anos [8]. En este capıtulo se hablara de comolas ciencias de la computacion ayudan a las investigaciones biologicas y cuales son las principalestareas que realiza la bioinformatica.

3.1. Bioinformatica.

La bioinformatica aborda el analisis de la informacion contenida en las proteınas y el ADN uti-lizando tecnicas de programacion para resumir los datos, para buscar implicaciones biologicasy relaciones filogeneticas1, y tambien para analizar las caracterısticas que permitan encontrarnueva informacion[11].

La principal actividad que realiza la bioinformatica es el analisis de secuencias, sin embargo,este proceso necesitarıa de mucho tiempo en caso de que se realice sin el apoyo de las cienciasde la computacion. Gracias a las ciencias de la computacion en junio del 2003 y se contaba conun total de 25 millones de secuencias almacenadas en la base de datos del Centro Nacional parala Informacion Biotecnologica (NBCI, por sus siglas en ingles) [9].

En las secciones siguientes se describira el proceso de analisis de secuencias, ası como losalgoritmos existentes para realizar dicho analisis.

3.2. Bases de datos biologicas.

La gran mayorıa de bases de datos biologicas se encuentran en formato FASTA. El formatoFASTA es un formato basado en texto, el cual es utilizado tanto para almacenar secuencias denucleotidos como secuencias proteicas, en donde los nucleotidos o aminoacidos son representa-dos por una sola letra. Este formato fue disenado para trabajar con la herramienta del mismonombre, pero en la actualidad se a convertido en un estandar [7].

Una secuencia en formato FASTA inicia con una lınea de descripcion, seguida por uno o maslıneas de datos de secuencia. La lınea de descripcion se distingue por empezar por un sımbolo

1Clasificacion cientıfica de las especies basada unicamente en las relaciones de proximidad evolutiva entre lasdistintas especies

13

Page 23: Sistema paralelizado para prote omica

CAPITULO 3. BIOLOGIA COMPUTACIONAL. 14

mayor-que (>), despues del cual la primer palabra que aparece es el identificador de la secuenciay el resto es la descripcion de la misma (en donde ambos valores son opcionales). Es recomen-dado que las lıneas de la secuencia tengan una dimension menor a 80 caracteres, en donde lalongitud que se a tomado como estandar es de 60 caracteres.

A continuacion se presenta una secuencia en formato FAST para ejemplificar su estructura:

1 >sp|Q6GZV8 |017 L_FRG3G Uncharacterized protein 017L

2 METMSDYSKEVSEALSALRGELSALSAAISNTVRAGSYSAPVAKDCKAGHCDSKAVLKSL

3 SRSARDLDSAVEAVSSNCEWASSGYGKQIARALRDDAVRVKREVESTRDAVDVVTPSCCV

4 QGLAEEAGKLSEMAAVYRCMATVFETADSHGVREMLAKVDGLKQTMSGFKRLLGKTAEID

5 GLSDSVIRLGRSIGEVLPATEGKAMRDLVKQCERLNGLVVDGSRKVEEQCSKLRDMASQS

6 YVVADLASQYDVLGGKAQEALSASDALEQAAAVALRAKAAADAVAKSLDSLDVKKLDRLL

7 EQASAVSGLLAKKNDLDAVVTSLAGLEALVAKKDELYKICAAVNSVDKSKLELLNVKPDR

8 LKSLTEQTVVVSQMTTALATFNEDKLDSVLGKYMQMHRFLGMATQLKLMSDSLAEFQPAK

9 MAQMAAAASQLKDFLTDQTVSRLEKVSAAVDATDVTKYASAFSDGGMVSDMTKAYETVKA

10 FAAVVNSLDSKKLKLVAECAKK

Este formato es utilizado en una gran variedad de aplicaciones de bioinformatica y sera uti-lizado para el desarrollo de este trabajo.

3.3. Analisis de secuencias.

La principal informacion que almacenan los biologos en sus bases de datos son: secuencias deADN y de proteınas; esta informacion quiza sea la principal herramienta de estudio para labiologıa molecular en la actualidad. Ademas, uno de los metodos mas poderoso utilizados porlos biologos es la comparacion de secuencias, ya que por lo general, una gran similitud entre dossecuencias corresponden a una alta similitud en funcionamiento o estructura [9].

Cuando se encuentra un nuevo gen, es difıcil que los biologos tengan una idea precisa decual es su funcionamiento; una forma de inferir en el funcionamiento de un gen, es encontrarsimilitudes con genes con funciones conocidas [4]. La finalidad de la comparacion de secuencias,es saber cuales partes de dos secuencias son similares y que partes son diferentes [9]. La formacomun de hacer esta comparacion es por medio de un analisis de secuencias.

La idea del alineamiento de secuencias es: colocar una cadena sobre la otra y, con ayuda deinsercion de espacios en una u otra cadena, alinear las subsequencias2 de forma que se cree unaconcordancia uno a uno, tomando en cuenta que los espacios no pueden ser agregados al mismotiempo en ambas secuencias. En la figura 3.1 se muestra un ejemplo de un alineamiento entredos cadenas, A =“ACAAGACAGCGT” y B= “AGAACAAGGCGT”, se observa que al finallas dos cadenas tienen el mismo tamano [9].

A = A C A A G A C A G - C G TB = A G A A C A - A G G C G T

Figura 3.1: Alineamiento entre dos secuencias.

El objetivo es hacer que las subsecuencias identicas coincidan de la mejor manera posible,sin embargo, sı las subsecuencias no son identica puede ocurrir que un par de aminoacidos nocoincidan creando un mismatch. Al tratar que las subsecuencias coincidan se insertar espacios,

2Pequenos conjuntos de aminoacidos de la cadena original.

Page 24: Sistema paralelizado para prote omica

CAPITULO 3. BIOLOGIA COMPUTACIONAL. 15

en cualquiera de las dos subsecuencias, creando lo que se conoce como gaps [4].

Si se observa el alineamiento como el proceso de convertir una secuencia en otra se tiene que:

• Un mismatch es una substitucion de caracteres, donde el caracter de la secuencia dos fuecambiado por el caracter de la secuencia uno.

• Un espacio, o gap, en la secuencia uno es una insercion, donde el caracter de la secuenciados fue insertado en la cadena uno.

• Un gap en la secuencia dos es un omision, donde el caracter de la secuencia uno fue omitidoen la cadena dos [9].

Estas tres operaciones son consideradas con las operaciones basicas en un alineamiento ycada una tiene un costo o penalizacion [4].

Una vez que las secuencias son alineadas, se asigna un score, o calificacion, a cada par deletras alineadas; donde los match, o coincidencia, son premiados y los matchs y gaps son pena-lizados [9]. Sin embargo, el alineamiento optimo entre dos secuencias no es dado por un unicocriterio, es decir, la puntuacion de match y la penalizacion de los mismatch no obtienen siempreel mismo valor, al igual que el costo por una insercion y omision [8].

Para obtener un alineamiento optimo cada algoritmo define el procedimiento para penalizaro premiar la ocurrencia de match y/o mismatch, ası como el costo por inserciones u omisiones.Ademas, las puntuaciones proporcionadas a match y mismatches se obtienen de las matrices desustitucion.

3.3.1. Matrices de sustitucion

Para realizar un alineamiento optimo, en biologıa, se utilizan esquemas de penalizacion que sonbasados en las propiedades fısico-quımicas de los aminoacidos o de los conocimientos evolutivosde los mismos; este tipo de esquemas son llamados de ponderacion alfabetica y son implementa-dos por medio de las matrices de sustitucion.

En la actualidad, existiendo dos tipos de matrices de sustitucion para aminoacidos, las cua-les son utilizadas ampliamente por los biologos para realizar alineamientos de proteınas: PAM yBLOSUM. Estas matrices fueron desarrolladas con diferentes conceptos, pero tienen la mismaestructura. Ademas se sabe que tanto la matriz BLOSUM50 y BLOSUM62 se han convertidoen los estandares para realizar un alineamiento de proteınas [9].

En la figura 3.2 se muestra un ejemplo de la matriz BLOSUM62.

3.4. El algoritmo de Vladimir Levenshtein.

En 1966 Vladimir Levenshtein introdujo el concepto de Distancia de edicion entre dos cadenas,la cual se basa en el mınimo numero de transformaciones necesarias para convertir una cadenaen otra. Estas transformaciones pueden ser: la insercion de un sımbolo, la omision de un sımboloo la sustitucion de un sımbolo. A pesar de que Levenshtein introdujo el concepto de edicion

Page 25: Sistema paralelizado para prote omica

CAPITULO 3. BIOLOGIA COMPUTACIONAL. 16

Figura 3.2: Matriz BLOSUM62

de distancia, nunca describio un algoritmo que permitiera encontrar distancia de edicion entredos cadenas; pero este algoritmo se ha encontrado en diversas aplicaciones que van desde elreconocimiento de voz hasta biologıa molecular. [4].

En el algoritmo 3.4 se describe el algoritmo de Levenshtein, Tomando en cuenta que S1 y S2son dos palabras diferentes:

A continuacion se presenta un ejemplo de este algoritmo con las palabras GUMBO y GAM-BOL.

1. n=5

2. m=6

3. n <> 0 y m <> 0

4. MS=

• • G U M B O

• • • • • • •G • • • • • •A • • • • • •M • • • • • •B • • • • • •O • • • • • •L • • • • • •

5. MS=

Page 26: Sistema paralelizado para prote omica

CAPITULO 3. BIOLOGIA COMPUTACIONAL. 17

Algoritmo 3.1 Algoritmo de Levenshtein

1: procedure Levenshtein(S1, S2)2: n← longitud(S1).3: m← longitud(S2).4: if n = 0 then5: DE(Distancia de edicion)← m.6: Fin del algoritmo.7: end if8: if m = 0 then9: DE ← n.

10: Fin del algoritmo.11: end if12: Se crea la matriz de score (MS) de tamano n+1*m+1.13: Se establece el primer renglon de MS con valores de 0 hasta n.14: Se establece la primer columna de MS con valores de 0 hasta m.15: for i = 1, n do16: for j=1 , m do17: if S1[i] = S2[j] then18: costo← 0.19: else20: costo← 1.21: end if22: a←MS[i− 1][j − 1] + costo23: b←MS[i− 1][j] + 124: c←MS[i][j − 1] + 125: MD[i][j]←MIN(a, b, c)26: j ← j + 127: end for28: i← i+ 129: end for30: DE ←MS[n][m]31: end procedure

Page 27: Sistema paralelizado para prote omica

CAPITULO 3. BIOLOGIA COMPUTACIONAL. 18

• • G U M B O

• 0 1 2 3 4 5

G • • • • • •A • • • • • •M • • • • • •B • • • • • •O • • • • • •L • • • • • •

6. MS=

• • G U M B O

• 0 1 2 3 4 5

G 1 • • • • •A 2 • • • • •M 3 • • • • •B 4 • • • • •O 5 • • • • •L 6 • • • • •

7. i = 1; j=1 hasta j=m

• • G U M B O

• 0 1 2 3 4 5

G 1 0 • • • •A 2 1 • • • •M 3 2 • • • •B 4 3 • • • •O 5 4 • • • •L 6 5 • • • •

8. i = 5; j=1 hasta j=m

• • G U M B O

• 0 1 2 3 4 5

G 1 0 1 2 3 4

A 2 1 1 2 3 4

M 3 2 2 1 2 3

B 4 3 3 2 1 2

O 5 4 4 3 2 1

L 6 5 5 3 3 2

9. DE = 2.

3.5. El algoritmo de Needleman-wunsch

El algoritmo de Needleman-wunsch toma como la unidad mınima de comparacion el par deaminoacidos, el cual consiste en un aminoacido de cada secuencia. La mejor alineacion se definecomo el mayor numero de aminoacidos de una secuencia alineados contra los aminoacidos de

Page 28: Sistema paralelizado para prote omica

CAPITULO 3. BIOLOGIA COMPUTACIONAL. 19

otra secuencia; permitiendo la aparicion de omisiones e inserciones [10].

El algoritmo de Needleman-wunsch utiliza una variable de penalizacion, que sirve para pon-derar la aparicion de gaps, ademas utiliza las matrices de sustitucion para evaluar los matchesy mismatches y para obtener el valor de cada celda se basa en la siguiente ecuacion:

Maximo =

matrizScore(i− 1, j − 1) +matrizSustitucion(i, j).

matrizScire(i− 1, j) + Penalizacion.

matrizScire(i, j − 1) + Penalizacion.

En donde matrizScore, es una matriz de tamano NxM, donde N y M son los tamanos de lassecuencias a comparar, en la cual se almacena los valores calculados previamente.

En el algoritmo 3.2 se muestra el pseudocodigo del algoritmo de Needleman-wunsch, el cualse divide en la parte: de pre-calculo, en donde la primera fila y columna se inicializa con losvalores de distancia de edicion, la cual se calcula por el numero de caracter diferentes por lapenalizacion; y la segunda etapa es el calculo del score para las dos secuencias que se alinearan,donde el score de la alineacion optima se presenta la celda n,m de la matriz de score.

3.6. El algoritmo de Smith-Waterman.

El algoritmo de Smith-Waterman es una variacion del algoritmo de Needleman-Wunsch, endonde solo se realizan tres cambios principales:

1. En el precalculo, la primer fila y columna se inicializan con ceros.

2. El valor mınimo que se puede almacenar es cero, y solo se guarda la ruta del alineamientopara valores mayores a cero.

3. El alineamiento se realiza solo para una seccion de la secuencia, es decir, solo se encuentranlas secciones mas similares entre si.

Teniendo en cuenta estos cambios el algoritmo 3.3 muestra el pseudocodigo para el algoritmode Smith-waterman.

Page 29: Sistema paralelizado para prote omica

CAPITULO 3. BIOLOGIA COMPUTACIONAL. 20

Algoritmo 3.2 Algoritmo de Needleman-wunsch

1: procedure NeedlemanWunsch(S1, S2, penalizacion,matrizSustitucion)2: arriba← 03: izquierda← 14: diagonal← 25: n← longitud(S1).6: m← longitud(S2).7: matrizScore← nuevamatriz(n,m)8: matrizRuta← nuevamatriz(n,m)9: //−−Pre-calculo−−//

10: for i = 0 , n do11: matrizScore(i, 0)← penalizacion ∗ i12: matrixRuta(i, 0)← arriba13: end for14: for i = 0 , m do15: MS(0, i)← penalizacion ∗ i16: matrixRuta(0, i)← izquierda17: end for18: //−−Calculo−−//19: for i = 1, n do20: for j=1 , m do21: sustitucon← sustitucionV alor(matrizSustitucion, S1(i), S2(j))22: a← matrizScore(i−, j − 1) + sustitucion23: b← matrizScore(i− 1, j)− penalizacion24: c← matrizScore(i, j − 1)− penalizacion25: matrizScore(i, j)← maxV alor(a, b, c)26: matrizRuta← rutaPorV alor(a, b, c)27: end for28: end for29: end procedure

Page 30: Sistema paralelizado para prote omica

CAPITULO 3. BIOLOGIA COMPUTACIONAL. 21

Algoritmo 3.3 Algoritmo de Smith-Waterman

1: procedure SmithWaterman(S1, S2, penalizacion,matrizSustitucion)2: arriba← 03: izquierda← 14: diagonal← 25: n← longitud(S1).6: m← longitud(S2).7: matrizScore← nuevamatriz(n,m)8: matrizRuta← nuevamatriz(n,m)9: //−−Pre-calculo−−//

10: for i = 0 , n do11: matrizScore(i, 0)← penalizacion ∗ i12: matrixRuta(i, 0)← arriba13: end for14: for i = 0 , m do15: MS(0, i)← penalizacion ∗ i16: matrixRuta(0, i)← izquierda17: end for18: //−−Calculo−−//19: for i=1 , n do20: for j=1 , m do21: sustitucon← sustitucionV alor(matrizSustitucion, S1(i), S2(j))22: a← matrizScore(i−, j − 1) + sustitucion23: b← matrizScore(i− 1, j)− penalizacion24: c← matrizScore(i, j − 1)− penalizacion25: maximo← maxV alor(a, b, c)26: if maximo ≥ 0 then27: matrizScore(i, j)← maximo28: matrizRuta← rutaPorV alor(a, b, c)29: else30: matrizScore← 031: end if32: end for33: end for34: end procedure

Page 31: Sistema paralelizado para prote omica

Capıtulo 4

El modelo de programacion deCUDA.

El desarrollo de nuevas tecnologıas que permiten la aceleracion de computo y de procesamientode datos, como arquitecturas multi-nucleo y GPUs, nos presentan la oportunidad de reducir eltiempo de ejecucion para muchas aplicaciones de bioinformatica. En este capitulo se explicarael modelo de programacion de CUDA, el cual es utilizado para el desarrollo del presente trabajo.

4.1. Hardware.

La arquitectura de CUDA esta construida sobre un arreglo escalable de Streaming Multiproces-sor(SMs) multihilos [12]; los cuales estan constituidos por ocho nucleos de Procesos Escalares(SP, por sus siglas en ingles), dos unidades de funciones especiales, una unidad de instruccionesmultihilo, un cache de instrucciones, una memoria constante de solo lectura, una memoria com-partida de 16 Kbyte [15].

El SM se encarga de crear, administrar y ejecutar los hilos concurrentes en el hardware,sin overhead de programacion [12]. Para administrar miles de hilos, se utiliza la arquitecturaSIMT(Instrucciones individuales, multiples hilos); esta arquitectura se basa en: Todos los SPejecutan el mismo conjunto de instrucciones simultaneamente, pero con diferentes datos; dondeademas, cada SP se ejecuta de manera independiente con registro de estado y su direccion deinstrucciones propias [13].

La unidad SIMT del SM, se encarga de crear, administrar y ejecutar hilos en grupos de 32hilos paralelos, llamados warp. Cuando se envıa uno o mas bloques a un SM, este se encarga dedividirlo en warps y despues enviarlos a la unidad SIMT para que sean ejecutados [12].

En la figura 4.1 se ejemplifica la arquitectura de CUDA.

4.2. El modelo de programacion de CUDA.

4.2.1. Cooperacion entre hilos e integracion de bloques.

El modelo de programacion de computo paralelo requiere que los hilos concurrentes se sincroni-cen, comuniquen, comparta datos y cooperen para obtener resultados eficientes. Para manejarun gran numero de hilos que pueden cooperar se introdujo el Arreglo de hilos cooperativos(CTA,

22

Page 32: Sistema paralelizado para prote omica

CAPITULO 4. EL MODELO DE PROGRAMACION DE CUDA. 23

Figura 4.1: Arquitectura de los GPUs de NVIDIA

por sus siglas en ingles), llamado Bloque de hilos en terminos de CUDA [15].

Un CTA es un arreglo de hilos concurrentes que ejecutan el mismo codigo y pueden cooperarpara obtener un resultado. Un CTA consiste un conjunto de 1 a 512 hilos concurrentes, y cadahilo tiene su propio identificador de hilo (TID, por sus siglas en ingles), el cual puede ir de 0 am. Ademas los hilos pueden compartir informacion en memoria global o compartida y sincroni-zarse con una instruccion de espera. Los CTA utilizan sus TIDs para seleccionar el trabajo y lainformacion que se realizara [15].

Cada CTA es creado dentro de un grid, el cual es un conjunto de CTA dentro del mismobloque de cooperacion, donde cada grid tiene su propio ID al igual que cada CTA tiene un IDunico. Sin embargo, los CTA se ejecutan y realizan el computo de su resultado independiente-mente de los otros CTAs, causando problemas de comunicacion entre CTAs [15].

4.2.2. Jerarquıa de memoria.

Los hilos de CUDA pueden tener acceso a memoria desde multiples espacios de memoria duran-te su tiempo de ejecucion. Por lo tanto, cada hilo tiene un espacio de memoria local privada,ası como cada bloque de hilos tiene un espacio de memoria compartida, visible para todos loshilos dentro del bloque y que tengan el mismo tiempo de vida que el bloque. Ademas, todos loshilos tienen acceso al mismo espacio de memoria global [12].

Existen ademas otros dos tipos de espacios de memoria, los cuales son de solo lectura: losespacios de memoria constante y de textura. Teniendo que los espacios de memoria global,constante y de textura son persistentes para todos los bloques de hilos lanzados por la mismaaplicacion [12].

Page 33: Sistema paralelizado para prote omica

CAPITULO 4. EL MODELO DE PROGRAMACION DE CUDA. 24

4.2.3. CUDA.

CUDA es una extension del lenguaje de programacion de C [15], lo cual permite que los progra-madores familiarizados con el lenguaje reduzcan la curva de aprendizaje del modelo de progra-macion paralelo con CUDA [12].

Las aplicaciones para CUDA se dividen en dos partes [13]:

• El codigo del Host, se ejecuta en el CPU de manera serial y tiene una interfaz con el GPU.

• Funciones de Kernel, llamadas kernels,se ejecuta en el GPU de menear paralela.

Por lo tanto, los programadores escriben codigos seriales que llaman a los kernels1, los cualespueden ser funciones sencillas o aplicaciones completas. Un programa de CUDA ejecuta el codigoserial y, a traves de un conjunto de hilos concurrentes en el GPU, ejecuta los kernels paralelos.El programador se encarga de organizar los kernels en jerarquıas de hilos bloques y grids parasu correcta ejecucion y cooperacion [15].

Los programas o aplicaciones de CUDA son compiladas utilizando el compilador nvcc, el cualsimplifica la tarea de compilacion. El proceso de compilacion realizado consiste en: 1) separarel codigo del GPU y el codigo del CPU; 2) Compilar el codigo del GPU; 3) General un codigoen C con el codigo del CPU y 4) compilar el codigo generado en C utilizando la herramientaadecuada para el trabajo [12].

1funcion que se ejecuta en paralelo dentro del GPU.

Page 34: Sistema paralelizado para prote omica

Capıtulo 5

Analisis.

A traves de este capıtulo se presentan las alternativas de como se puede realizar el paralelismode algunos de los algoritmos presentados previamente.

5.1. Fuerza bruta

Una forma de obtener el mejor alineamiento de dos secuencias proteicas es por medio de lafuerza bruta, es decir, comparar las dos cadenas de todas las formas posibles; de esta maneracomparando todos los valores obtenidos se puede saber cual es el mejor alineamiento.

El primer problema que se tiene es: saber cuantos alineamientos se pueden realizar para doscadenas proteicas. Para saber cual es el numero total de alineamientos posibles se realiza elanalisis de las cadenas proteicas mas pequenas que se pueden comparar; estas son dos cadenascon un unico aminoacido, lo que nos deja la matriz que se muestra en la figura 5.1. Lo que sebusca es encontrar todos las rutas posibles con las cuales se pueda unir el nodo de la esquinasuperior izquierda con el nodo de la esquina inferior derecha; de tal forma que solo se permitentres movimientos diferentes los cuales son:

• Derecha.

• Abajo

• Diagonal.

•M

M •

• •

Figura 5.1: Mınima comparacion de dos cadenas proteicas.

Utilizando todas las aristas de la matriz como nodos, para una matriz de 1x1 aminoacidos,se obtiene una matriz de 2x2 nodos, como se muestra en la figura 5.1. Trazando el numero totalde rutas que se pueden formar para la matriz de 2x2 nodos se obtiene que se pueden seguir tresrutas para llegar el nodo objetivo, como se muestra en la figura 5.2.

25

Page 35: Sistema paralelizado para prote omica

CAPITULO 5. ANALISIS. 26

• // •

��

��@@@

@@@@

• •

��

• • • • • // •

Figura 5.2: Rutas posibles para una matriz de 2x2.

•M

M • M •

• • •

Figura 5.3: Comparacion matriz de 1x2.

•M

M •

•M

• •

Figura 5.4: Comparacion matriz 2x1.

Page 36: Sistema paralelizado para prote omica

CAPITULO 5. ANALISIS. 27

De la misma manera, con la comparacion de dos cadenas, la primera con 1 aminoacido y lasegunda con 2 aminoacidos y viceversa, se obtiene una matriz que contiene 6 nodos, formandouna matriz de 2x3 y 3x2 nodos respectivamente; de tal modo que al analizar el numero posiblede rutas que se puede obtener en ambas matriz se observa que es de un total de 5 rutas; comose muestra en las figura 5.5 y 5.6.

• // • // •

��

• // •

��@@@

@@@@

• • // •

��

• • • • • • • • // •

��@@@

@@@@

• • •

��

• •

• • // • • // • // •

Figura 5.5: Rutas posibles para una matriz de 2x3.

• // •

��

��@@@

@@@@

• •

��

• •

��

• •

��

• // •

��• • • • • •

��

• •

��

��@@@

@@@@

• •

��

• • • // •

Figura 5.6: Rutas posibles para una matriz de 3x2.

Por medio de este analisis se observa que para matrices de 1x2 y 2x1 aminoacidos se puedeobtener el numero de rutas con la siguiente ecuacion:

nRut(1x2) = 2nRut(1x1)− 1 (5.1)

Page 37: Sistema paralelizado para prote omica

CAPITULO 5. ANALISIS. 28

Tomando en cuenta que el numero de rutas para una matriz de 1x1 siempre es 3.

Sin embargo cuando el numero de aminoacidos aumenta, al igual que el numero de nodos,la ecuaciones 5.1 no es valida para calcular el numero de nodos, ya que no se puede obtener unageneralizacion de esta ecuacion que funciones para cualquier tamano de matriz. Sin embargo, siaumentamos el numero de aminoacidos, una matriz de 2x2 aminoacidos (figura 5.7), se observaque el numero de rutas para esta matriz se puede obtener utilizando las tres matrices menores,1x1, 1x2 y 2x1 aminoacidos, para calcular su numero de rutas.

•M

M • M •

•M

• •

• • •

Figura 5.7: Comparacion matriz 2x2 aminoacidos.

• // •

��

//

��@@@

@@@@

��

��@@@

@@@@

• • •

��

• •

• •

��

//

��@@@

@@@@

��

• •

��

//

��@@@

@@@@

��

��

//

��@@@

@@@@

��

//

��@@@

@@@@

��• • // • • • // • • // • // •

Figura 5.8: Analisis de rutas para una matriz de 3x3.

Para calcular el numero de rutas de una matriz de 3x3 nodos, obtenida desde la matriz de2x2 aminoacidos, se realiza la suma de las tres matrices menores, ya que partiendo del primernodo y realizando los tres movimientos basicos podemos llegar con cada uno de ellos a unamatriz menos, como se muestra en la figura 5.8. Tomando en cuenta esto se obtiene el numerototal de rutas para una matriz de 2x2 con la siguiente ecuacion:

nRut(2x2) = nRut(1x2) + nRut(1x1) + nRut(2x1) (5.2)

Generalizando la ecuacion 5.2 se obtiene la ecuacion 5.3, la cual puede ser aplicada paramatrices de tamano nxm∀n,m > 1. Utilizando la ecuacion 5.3 se realizo un programa recursivoque calcule el numero de rutas para una matriz de cualquier tamano, la tabla 5.1 muestra elnumero de rutas para las matrices cuadradas desde tamanos 2x2 hasta10x10 aminoacidos.

nRut(nxm) = nRut(n− 1xm) + nRut(n− 1xm− 1) + nRut(nxm− 1) (5.3)

Page 38: Sistema paralelizado para prote omica

CAPITULO 5. ANALISIS. 29

N M Rutas

2 2 12

3 3 63

4 4 321

5 5 1,683

6 6 8,989

7 7 48,639

8 8 265,729

9 9 1,462,563

10 10 8,097,453

Tabla 5.1: Numero de rutas para matrices de 2x2 hasta 10x10.

Tomando en cuenta el numero de rutas de la tabla 5.1, para realizar el alineamiento desecuencias, por medio de fuerza bruta de manera paralela, serıa necesario lanzar 8,097,453 hilospara comprar dos secuencias de 10 aminoacidos cada una.

Si se sabe que las cadenas proteicas tienen tamanos que pueden ir desde 3 aminoacidos hastamillones, podemos asumir que es casi imposible implementar el metodo de fuerza bruta quepermita realizar el alineamiento de secuencias para cadenas proteicas de longitudes grandes, yaque se necesitarıa un gran numero de hilos para lograr el objetivo.

5.2. Algoritmo de Needleman-Wunsh

Al analizar el algoritmo Needleman-Wunsch, se observa que todos los elementos tienen una de-pendencia con los elementos que estan: a la izquierda, arriba y arriba-izquierda, como se muestraen la figura 5.9.

SM(i−1,j−1) SM(i,j−1)

SM(i−1,j) SM(i,j)

Figura 5.9: Dependencia de celdas

Esta dependencia implica que todos los elementos que se encuentran en la misma diagonalmenor son independientes y pueden ser calculados paralelamente, como se muestra en la figu-ra 5.10, en donde Xi representa los elementos que se encuentran en la misma diagonal menor.

En la figura 5.10 se observa que para una matriz de 3x3 cuenta con 5 diagonales menores,las cuales pueden ser calculadas independientemente, pero siempre y cuando la diagonal menoranterior ya haya sido calculada; por lo cual podemos tomar el numero de diagonales menorescomo los pasos necesarios para completar el alineamiento. Esto nos deja que:

Numero Pasos = Numero Diagonales Menores

Page 39: Sistema paralelizado para prote omica

CAPITULO 5. ANALISIS. 30

X1 X2 X3

X2 X3 X4

X3 X4 X5

Figura 5.10: Diagonales menores para una matriz de 3x3.

X1 X2 X3 X4

X2 X3 X4 X5

X3 X4 X5 X6

X4 X5 X6 X7

Figura 5.11: Diagonales menores para una matriz de 4x4.

Ademas, para una matriz de 4x4 se tiene un total de 7 diagonales menores (figura 5.11),tomando en consideracion el numero de pasos para una matriz de 3x3 y 4x4, se puede calcularel numero de pasos para cada una de ellas con la ecuacion 5.4; siendo esta ecuacion valida paramatrices de cualquier tamano.

Numero Pasos = n+m− 1. (5.4)

Este analisis tambien es valido para el algoritmo de Smith-Waterman, el cual presenta lasmismas dependencias, pero cambian la forma de obtener el resultado.

Page 40: Sistema paralelizado para prote omica

Capıtulo 6

Diseno.

En el capitulo previo se presento un modelo de paralelismo para el algoritmo de Needleman-Wunsch, el cual se puede implementar por medio de ınter-tas o intra-task. En este capitulo sedescribe como se diseno el algoritmo paralelo de para Needleman-Wunsch.

6.1. Inter-task

El termino inter-task se refiere a el paralelismo que se realiza sobre un bloque, es decir, todaslas operaciones necesarias para realizar el proceso paralelo se realizan sobre un solo bloque dehilos.

Teniendo en cuenta que para sincronizar los hilos dentro de un solo bloque, CUDA proporcio-na una mecanismo de sincronizacion, syncthreads(), el cual actua como una barrera, todoslos hilos esperan hasta que todos hayan alcanzado este punto, es decir hasta que todos hayantocado el syncthread().

Tomando en consideracion esta barrera y que el algoritmo se debe de ejecutar en pasos,donde cada paso representa una diagonal de la matriz se puede definir el algoritmo 6.1, tomandoen cuenta que S1 y S2 son secuencias de tamano n y m respectivamente.

El algoritmo 6.1 nos permite controlar la ejecucion paso a paso del algoritmo de Needleman-Wunsch, tomando en cuenta que cada hilo se encarga de procesar cada renglon de la matriz descore, por lo tanto se tienen que crear tantos hilos, como renglones.

6.1.1. Optimizacion del algoritmo

Al recibir los datos como parametros, se tiene que acceder a ellos por medio de memoria global,lo cual tiene un gran costo en cuanto tiempo de acceso y ya que en cada paso se tienen 6 accesosa memoria global causa un gran costo en el rendimiento de la aplicacion.

Una manera de evitar este costo, es copiar los datos estaticos a memoria compartida, lacual presenta una velocidad de acceso mucho mayor a la de memoria global. Sin embargo, enel momento de compilacion no se sabe cual es el tamano de las secuencias, lo cual nos impidecopiar esos datos a memoria compartida, ya que CUDA solo permite alojamiento estatico.

31

Page 41: Sistema paralelizado para prote omica

CAPITULO 6. DISENO. 32

Algoritmo 6.1 Control de pasos Needleman-Wunsch

1: procedure NW(S1, S2,matSustitucion, scoreMatrix, n,m, penalizacion)2: id← idThread()3: colum = 04: NumPasos← n+m− 1.5: for paso = 1, NumPasos do6: if id ≤ pasos ∨ colum < m then7: a← scoreMatix(id−, column− 1) + sustitutionMatrix(S1(id), S2(column))8: b← scoreMatrix(id− 1, colum)− penalizacion9: c← scoreMatrix(id, colum− 1)− penalizacion

10: scoreMatrix(id, colum]← maxV alor(a, b, c)11: colum← columna+ 112: end if13: syncthread()14: end for15: end procedure

Pero en cambio, sabemos que la matriz de substitucion es una matriz de 20x20, ya que soloexisten 20 aminoacidos; lo cual nos permite copiar estos datos dentro memoria compartida, re-duciendo el costo y tiempo de ejecucion de la aplicacion.

En el algoritmo 6.1.1 se presenta el diseno del algoritmo paralelo para Needleman-Wunschcreando una matriz de sustitucion en memoria compartida.

Esta optimizacion reduce el tiempo de ejecucion del algoritmo, sin embargo, dado que lacantidad de hilos permitida por un bloque es solo de 512 hilos y puesto que cada hilo se en-carga de analizar solo un renglon, solo se pueden analizar secuencias de maximo 512 aminoacidos.

6.2. Intra-task.

El termino intra-task se refiere a el paralelismo que se realiza sobre multiples bloques, es de-cir, todas las operaciones necesarias para realizar el proceso paralelo se dividen y distribuyen atraves de dos o mas bloques de hilos.

Para implementar el algoritmo de Needleman-Wunsch es necesario establecer una variableglobal, con la cual se le permite saber a cada hilo cual es el paso que se esta ejecutando ycuales son los valores que se deben utilizar actualmente; pero el valor de dicha variable solo debeser actualizado por un solo hilo. Ademas debido a que cada bloque tiene su propia memoriacompartida, la matriz de sustitucion se debe de copiar para cada bloque. En el algoritmo 6.2se muestra el diseno para dicho proceso. Se utilizan dos identificadores, idBloque se utiliza parasaber cual es identificador dentro de bloque e idGloal se utiliza para saber cual es el identificadordel hilo en la aplicacion.

Sin embargo, por la forma en que se realiza el calculo del alineamiento optimo, se da el casode que todos los hilos del primer bloque terminen de realizar el calculo, causando que el hiloencargado de actualizar la variaba paso causando que los hilos de los bloques siguientes no estensincronizados y realicen un calculo indebido del alineamiento optimo. Por lo tanto, la variablepaso se debe incrementar por un bloque que por lo menos tenga un hilo con pasos sin ejecutar.

Page 42: Sistema paralelizado para prote omica

CAPITULO 6. DISENO. 33

Algoritmo 6.2 Control de pasos Needleman-Wunsch con memoria compartida

1: procedure NW(S1, S2,matSustitucion, scoreMatrix, n,m, penalizacion)2: id← idThread()3: colum = 04: NumPasos← n+m− 1.5: shared matSustitucionShare(20, 20)6: if id < 20 then7: for i = 0, 20 do8: matSustitucionShare(id, i)← matSustitucion(id, i)9: i← i+ 1

10: end for11: end if12: syncthread()13: for paso = 1, NumPasos do14: if id ≤ pasos ∨ colum < m then15: a← scoreMatix(id− 1, column− 1) + sustitutionMatrix(S1(id))(S2(column))16: b← scoreMatrix(id− 1, colum)− penalizacion17: c← scoreMatrix(id, colum− 1)− penalizacion18: scoreMatrix(id, colum)← maxV alor(a, b, c)19: colum← columna+ 120: end if21: syncthread()22: end for23: end procedure

Para realizar esto se agrega la variable bloqueActual, que indica cual es el bloque que se debehacer cargo de la actualizacion de la variable pasos. En el algoritmo 6.2 se muestra el algoritmoque describe este proceso.

Donde, bloque es el identificador del bloque en ejecucion, tamano es el numero de hilos quese ejecutan dentro del bloque.

6.2.1. Problema de los lectores y escritores.

Tanto en el algoritmo 6.2 y 6.2, se crean secciones criticas que refieren al problema de lectoresy escritores, puesto que existe un recurso accesible por todos los hilos (variable paso para 6.2y variables paso y bloqueActual para 6.2) y en el cual algunos hilos leen y otros escriben, sinembargo estas tareas no se pueden realizar al mismo tiempo.

Sin embargo, en el modelo de programacion de CUDA no existe ningun mecanismo que per-mita la comunicacion entre bloques, solo a traves de variables globales, tomando en cuenta lasolucion general del problema se realizo un bosquejo sobre como solucionar este problema, sinembargo a la entrega de este documento no se ha solucionado completamente.

Page 43: Sistema paralelizado para prote omica

CAPITULO 6. DISENO. 34

Algoritmo 6.3 Intra-task Needleman-Wunsch

1: procedure NW(S1, S2,matSustitucion, scoreMatrix, n,m, penalizacion)2: device intpaso = 13: idBloque← idThreadInterno()4: idGlobal← idThreadGlobal()5: colum = 06: NumPasos← n+m− 1.7: shared matSustitucionShare(20, 20)8: if idBloque < 20 then9: for i = 0, 20 do

10: matSustitucionShare(idBloque, i)← matSustitucion(idBloque, i)11: i← i+ 112: end for13: end if14: syncthread()15: while paso < NumPasos do16: if idGlobal + colum = pasos andcolum < m then17: a← scoreMatix(id− 1, column− 1) + sustitutionMatrix(S1(id))(S2(column))18: b← scoreMatrix(id− 1, colum)− penalizacion19: c← scoreMatrix(id, colum− 1)− penalizacion20: scoreMatrix(id, colum)← maxV alor(a, b, c)21: colum← columna+ 122: end if23: syncthread()24: if idGlobal = 0 then25: paso← paso+ 126: end if27: syncthread()28: end while29: end procedure

Page 44: Sistema paralelizado para prote omica

CAPITULO 6. DISENO. 35

Algoritmo 6.4 Intra-task Needleman-Wunsch

1: procedure NW(S1, S2,matSustitucion, scoreMatrix, n,m, penalizacion)2: device intpaso = 13: device intbloqueActual = 04: idBloque← idThreadInterno()5: idGlobal← idThreadGlobal()6: bloque← idBloque()7: tamano← tamanoBloque()8: colum = 09: NumPasos← n+m− 1.

10: shared matSustitucionShare(20, 20)11: if idBloque < 20 then12: for i = 0, 20 do13: matSustitucionShare(idBloque, i)← matSustitucion(idBloque, i)14: i← i+ 115: end for16: end if17: syncthread()18: while paso < NumPasos do19: if idGlobal + colum = pasos andcolum < m then20: a← scoreMatix(id− 1, column− 1) + sustitutionMatrix(S1(id))(S2(column))21: b← scoreMatrix(id− 1, colum)− penalizacion22: c← scoreMatrix(id, colum− 1)− penalizacion23: scoreMatrix(id, colum)← maxV alor(a, b, c)24: colum← columna+ 125: end if26: syncthread()27: if idBloque = 0 and bloque = bloqueActual then28: paso← paso+ 129: end if30: if idBloque = tamano and bloque = bloqueActual and columna = m then31: bloqueActual← bloqueActual + 132: end if33: syncthread()34: end while35: end procedure

Page 45: Sistema paralelizado para prote omica

CAPITULO 6. DISENO. 36

6.2.2. Algoritmo Intra-task con lectores y escritores

En el algoritmo 6.2.2 se presenta el bosquejo que se tiene para realizar la alineacion optima conmas de un SM.

Page 46: Sistema paralelizado para prote omica

CAPITULO 6. DISENO. 37

Algoritmo 6.5 Intra-task Needleman-Wunsch

1: procedure NW(S1, S2,matSustitucion, scoreMatrix, n,m, penalizacion)2: device paso = 13: device escritorPaso = 04: device mutexPaso = 05: device numLectoresPaso = 06: device bloqueActual = 07: device escritorBloque = 08: device mutexBloque = 09: device numLectoresBloque = 0

10: idBloque← idThreadInterno()11: idGlobal← idThreadGlobal()12: bloque← idBloque()13: tamano← tamanoBloque()14: colum = 015: NumPasos← n+m− 1.16: shared matSustitucionShare(20, 20)17: if idBloque < 20 then18: for i = 0, 20 do19: matSustitucionShare(idBloque, i)← matSustitucion(idBloque, i)20: i← i+ 121: end for22: end if23: syncthread()24: while paso < NumPasos do25: loop26: if atomicCAS(mutexPaso, 0,1) = 0 then27: fin loop28: end if29: end loop30: numeroLectoresPaso← numeroLectoresPaso+ 131: if numeroLectoresPaso = 1 then32: loop33: if atomicCAS(escritorPaso, 0,1) = 0 then34: fin loop35: end if36: end loop37: end if38: threadfence()39: mutexPaso← 0

Page 47: Sistema paralelizado para prote omica

CAPITULO 6. DISENO. 38

Algoritmo 6.6 Intra-task Needleman-Wunsch

40: if idGlobal + colum = pasos andcolum < m then41: a← scoreMatix(id− 1, column− 1) + sustitutionMatrix(S1(id))(S2(column))42: b← scoreMatrix(id− 1, colum)− penalizacion43: c← scoreMatrix(id, colum− 1)− penalizacion44: scoreMatrix(id, colum)← maxV alor(a, b, c)45: colum← columna+ 146: end if47: loop48: if atomicCAS(mutexPaso, 0,1) = 0 then49: fin loop50: end if51: end loop52: numeroLectoresPaso← numeroLectoresPaso− 153: if numeroLectoresPaso = 0 then54: escritorPaso = 055: end if56: threadfence()57: mutexPaso← 058: if idBloque = 0 then59: loop60: if atomicCAS(mutexBloque, 0,1) = 0 then61: fin loop62: end if63: end loop64: numeroLectoresBloque← numeroLectoresBloque+ 165: if numeroLectoresBloque = 1 then66: loop67: if atomicCAS(escritorBloque, 0,1) = 0 then68: fin loop69: end if70: end loop71: end if72: threadfence()73: mutexBloque← 0

Page 48: Sistema paralelizado para prote omica

CAPITULO 6. DISENO. 39

Algoritmo 6.7 Intra-task Needleman-Wunsch

74: if bloque = bloqueActual then75: loop76: if atomicCAS(escritorPaso, 0,1) = 0 then77: fin loop78: end if79: end loop80: paso← paso+ 181: threadfence();82: escritorPaso = 0;83: end if84: loop85: if atomicCAS(mutexBloque, 0,1) = 0 then86: fin loop87: end if88: end loop89: numeroLectoresBloque← numeroLectoresBloque− 190: if numeroLectoresBloque = 0 then91: escritorBloque = 092: end if93: threadfence()94: mutexPaso← 095: end if96: if idBloque = tamano and bloque = bloqueActual and columna = m then97: loop98: if atomicCAS(escritorBloque, 0,1) = 0 then99: fin loop100: end if101: end loop102: bloqueActual← bloqueActual + 1103: threadfence();104: escritorPaso = 0;105: end if106: end while107: end procedure

Page 49: Sistema paralelizado para prote omica

Capıtulo 7

Resultados obtenidos

Dada la implementacion del modelo inter-task se realizaron mediciones para obtener el ren-dimiento y eficiencia del sistema con respecto a la implementacion serial del algoritmo deNeedleman-Wunsch.

7.1. Ley de Amdahl.

La ley de Amdahl es un modelo matematico que describe la relacion entre la aceleracion esperadade la implementacion paralela de un algoritmo y la implementacion serial del mismo algoritmo,se utiliza esta ley para hacer un estimado sobre cual puede ser la aceleracion esperada para elalgoritmo de Needleman-Wunsch.

En la tabla 7.1 se muestra las aceleraciones esperadas con diferentes tamanos de cadenas deaminoacidos.

n\m 512 1024 2048

512 4.4x 1.4x 1.2x

1024 1.9x .4x .3x

Tabla 7.1: Aceleraciones esperadas.

7.2. Resultados obtenidos

7.2.1. Alineamientos

El alineamiento resultante al realizar el proceso con la implementacion serial del algoritmo deNeedleman-Wunsch se presenta en la figura 7.1.

El alineamiento resultante al realizar el proceso con la implementacion paralela del algoritmode Needleman-Wunsch se presenta en la figura 7.2.

El resultado de ambos alineamientos es el mismo, con lo cual se comprueba que la eficienciadel algoritmo ınter-task implementado es la misma que el del algoritmo secuencial.

40

Page 50: Sistema paralelizado para prote omica

CAPITULO 7. RESULTADOS OBTENIDOS 41

Fig

ura

7.1:

Ali

nea

mie

nto

de

secu

enci

asco

nim

ple

men

taci

onse

cuen

cial

.

Page 51: Sistema paralelizado para prote omica

CAPITULO 7. RESULTADOS OBTENIDOS 42

Fig

ura

7.2:

Alin

eam

iento

de

secu

enci

asco

nim

ple

men

taci

onp

aral

ela.

Page 52: Sistema paralelizado para prote omica

CAPITULO 7. RESULTADOS OBTENIDOS 43

7.2.2. Tiempos

En la tabla 7.2 se muestran tanto los tiempos secuenciales(σ) y paralelos (ρ) obtenidos alejecutar ambas implementaciones con diferentes tamanos de secuencias.

n\m 512 1024 2048

512σ = 0.001706 s σ = 0.006926 s σ = 0.01696 sρ = 0.002176 s ρ = 0.005948 s ρ = 0.01369 s

1024σ = 0.00659 s σ = 0.02409 s σ = 0.0653 sρ = 0.00616 s ρ = 0.01769 s ρ = 0.0417 s

Tabla 7.2: Tiempos de ejecucion.

En la tabla 7.3 se muestra la aceleracion obtenida con la implementacion del algoritmo inter-task, la aceleracion se obtuvo con base a las mediciones obtenidas en la tabla 7.2.

n\m 512 1024 2048

512 0.8x 1.16x 1.2x

1024 1.4x 1.06x 1.5x

Tabla 7.3: Aceleraciones obtenida.

Page 53: Sistema paralelizado para prote omica

Capıtulo 8

Conclusiones.

8.1. Resultados obtenidos.

1. Estudio del lenguaje CUDA: se estudio funciona el lenguaje de programacion CUDA, elcual tiene una curva de aprendizaje corta, ya que es una extension de C/C++. Tambiense estudio la arquitectura de los GPUs, como se administran los hilos, las jerarquias dememorias y administracion bloques y grids.

2. Estudio de algoritmos de alineamiento de secuencias.

3. Seleccion de algoritmo: se selecciono el algoritmo de Needleman-Wunsch, puesto que es unalgoritmo general que puede realizar un alineamiento global, es decir, puede comparar lasimilitud completa de dos cadenas y no solo secciones de ellas.

4. Implentacion paralela del algoritmo: se realizaron dos implementaciones, una ınter-task yotra intra-task, la implementacion tiene una limitacion de longitud de secuencias, la cualesta dada por el numero de hilos que se pueden ejecutar en un bloque dependiendo deltipo de la arquitectura del GPU. Sin embargo, la version intra-task aun no se termina dedepurar a la fecha de entrega de este documento.

8.2. Conclusiones

A pesar de que los GPUs tienen un gran poder de procesamiento, no existe un mecanismo quepermita una sincronizacion entre dos o mas bloques de hilos, por lo cual se crea una gran difi-cultad y deficiencia en el rendimiento de aplicaciones que presentan una gran dependencia entrecalculo.

Sin embargo, los GPUs nos permiten mejorar el rendimiento de un gran numero de aplica-ciones con equipos de bajo costo, ya que algunos de los nuevos ordenadores cuentan con tarjetasgraficas de NVIDIA que permiten el desarrollo de aplicaciones con CUDA.

8.3. Trabajo a futuro.

• Optimizar el conjunto de funciones para aprovechar las caracterısticas del GPU.

• Implementacion de nuevas tareas de bioinformatica.

44

Page 54: Sistema paralelizado para prote omica

CAPITULO 8. CONCLUSIONES. 45

• Integracion de una interfaz de usuario.

• Integracion del conjunto de funciones en otras aplicaciones.

Page 55: Sistema paralelizado para prote omica

Bibliografıa

[1] Benjamin Lewin. Genes IX. Mc Graw Hill, Mexico, novena edicion, 2008.

[2] Jose Luque, Angel Herraez. Texto Ilustrado de Biologıa Molecular e Ingenierıa Genetica:Conceptos, Tecnicas y Aplicaciones en Ciencias de la Salud. ELSEVIER, Madrid, Espana,primera edicion, 2001.

[3] Teresa Audesirk, Gerald Audesirk, Bruce E. Byers. Biologıa: Ciencia y Naturaleza. Pearson.Mexico, sexta edicion, 2004.

[4] Neil C. Jones, Pavel A. Pevzner. An Introcuction To Bioinformatics Algorithms. The MITPress, Cambridge, Massachusetts, primera edicion, 2004.

[5] Arthur M. Lesk. Introduction to bioinformatics. OXFORD, New York, primera edicion,2002.

[6] Kenneth R. Miller, Joseph Levine. Biology. Pretince Hall, Needham, Massachusetts, segundaedicion,2002.

[7] Zhang Lab. What is the FASTA format?. Universidad de Michigan. Disponible en http:

//zhanglab.ccmb.med.umich.edu/FASTA/.

[8] Pierre Baldi, Søren Brunak .Bioinformatics: The Machine Learning Approach. Segundaedicion. The MIT Press Cambridge. Massachusetts, London, England. 2001

[9] Sergio Anibal de Carvalho Junior. Sequence Alignment Algorithms. King’s College London,London, 2003.

[10] Saul B. Needleman, Christian D. Wunsh. A General Method Applicable to the Search forSimilarities in the Amino Acid Sequence of Two Proteins. Chicago,Ill., 21July 1969

[11] Bioinformatics for Dummies, Caverie y Notredame. Wiley. 2003.

[12] NVIDIA. NVIDIA CUDA: Programming Guide. NVIDIA Corporation. Version 2.1. Cali-fornia. 2008.

[13] Mike Giles. Lectura 1: an introduction to CUDA. Oxford e-Research Centre.

[14] Jason Sanders, Edward Kandrot. CUDA by Example: An introduction to General-PurposeGPU programming. Addison-Wesley. United States. 2010

[15] Lindholm E, Nickolls J, Oberman S and Montrym J: NVIDIA Tesla: A Unified Graphicsand Computing Architecture. IEEE Micro. 2008.

[16] Andreas D. Baxevanis, B.F. Francis Ouellette. Bioinformatics: A practical guide to theanalysis of genes and proteins. Nueva York. Segunda edicion. Wiley-interscience. 2001

46