cuEVOGENETParalelización en CUDA de la Dinámica Evolutiva de Redes Génicas
Realizado por:
Raúl García Calvo
Dirigido por:
Fernando Díaz del Río
José Luis Guisado Lizar
Objetivos
• Implementar un algoritmo genético en CUDA para analizar
redes complejas
• Estudiar el rendimiento obtenido
Índice1. Antecedentes
1. Biología de sistemas y redes génicas
2. Modelo matemático usado
3. Problema a resolver
4. Algoritmos genéticos
5. CUDA
2. Implementación en CUDA
3. Estudio de pruebas y resultados
4. Conclusiones
Biología de sistemas y redes génicas
Enfoque reduccionista y estático Enfoque dinámico y evolutivo
Biología de sistemas y redes génicas
Sistema biológico realReacciona a cambios del
entorno generando proteínas
Biología de sistemas y redes génicas
Gen: zona del ADN que se traduce en proteína
¿Qué proteína crear?
Factores de transcripción: moléculas que se unen al ADN para acelerar o disminuir el
ritmo de producción de proteínas.
Redes de regulación génica
Modelo matemático usado
Modelos:
• Lógico: redes
booleanas
• Continuo: ecuaciones
diferenciales
• A nivel unimolecular:
máximo nivel de detalle
Modelo matemático usado
Nodos: genes o proteínas
• Activo: verde (1)
• Inactivo: rojo (0)
Enlaces: factores de transcripción
• Activador: verde (1)
• Represor: rojo (-1)
• Sin enlace: 0
Problema a resolver
Fuente: Johnson JT, Hansen MS, Wu I, Healy LJ, Johnson CR, et al. (2006) Virtual Histology of
Transgenic Mouse Embryos for High-Throughput Phenotyping
¿?
Problema a resolver
Conjunto de reglas que obedece cada nodo
Comprobar mediciones
Algoritmo genéticoAlgoritmo de optimización heurístico
Definiciones:
• Cromosoma: posible solución al problema
• Gen: cada uno de los elementos de un
cromosoma
• Población: conjunto de cromosomas (posibles
soluciones)
• Función de evaluación: estima la bondad de los
cromosomas
Algoritmo genético
Modelo básico
Generar población
inicial
Condición de parada
Aplicar reglas
Evaluar población
Elección de padres
Entrecruzamiento
MutaciónMostrar mejor
individuo
Sí
No
Algoritmo genético
Modelo híbridoModelo paralelo: islas Modelo paralelo: celular
Índice1. Antecedentes
1. Biología de sistemas y redes génicas
2. Modelo matemático usado
3. Problema a resolver
4. Algoritmos genéticos
5. CUDA
2. Implementación en CUDA
3. Estudio de pruebas y resultados
4. Conclusiones
5. Estimación de coste
CUDAAmpliación C/C++ que permite ejecutar código paralelo en GPU
Arquitectura SIMD: una instrucción a múltiples datos
CUDA
• Registros: memoria: más rápida, poco
espacio
• Memoria compartida: muy rápida, ámbito
bloque
• Memoria (ámbito) local: ámbito hilo, lenta
• Memoria global: más amplia, lenta, ámbito
global
• Memoria constante: difusión dentro de un
warp
• Memoria de textura: optimizada para
patrones
CUDA
cuRANDGenera números pseudo-
aleatorios de manera muy
eficiente
cuBLASOperaciones básicas de
álgebra lineal de manera
paralela
ThrustProvee funciones de ordenación,
reducción, transformación, etc.
de vectores
Implementación en CUDA
+ +Islas
Celular
Híbrido
Algoritmo D. Aguilar-Hidalgo et.al.
Implementación en CUDA
Cada hilo aplica las reglas a un nodo.
Necesita:
• Estado todos los nodos (mem.
Compartida)
• Entradas a su nodo.
Proceso:
• Copìa su nodo a memoria
compartida
• Copia sus 32 entradas en array local
• Aplica las reglas 5 veces
Implementación en CUDA
Problema:
• Divergencias dentro de un warp:
cada nodo obedece a una regla y
unas entradas
Solución:
• Expresiones genéricas que ejecuten
todos los hilos y den el resultado
correcto
Implementación en CUDA
estados = {0, 1, estadoActual}
índiceEstados = [MOST, ABSOL_REPR, U_ACT, U_REPR}
Solución aplicada a las divergencias
El hilo calculará el nuevo estado para cara regla y
guardará el índice a ese nuevo estado dentro de
la posición correspondiente a su regla
estados = {0, 1, estadoActual}
índiceEstados = [1, 2, 1, 2}
Regla Estado
Mayoría (0) 1
Repr. Absoluto (1) Actual
U. Activadores (2) 1
U. Represores (3) Actual
Implementación en CUDAOtras mejoras
Contador en memoria compartida
Carga vectorial de entradas
Lectura escalar Lectura vectorial
Ace
lera
ció
n
Implementación en CUDAUso de cuBLAS para el evaluar individuos
Estudio de pruebas y resultadosUn equipo portátil con las siguientes características:
• Procesador Intel Core i7-4712MQ. Hasta 3.30 GHz, 4 núcleos, 8
hilos.
• 8 GB RAM DDR3 @ 800 MHz.
• MSI NVIDIA GeForce 820M. 96 CUDA Cores.
Un equipo de sobremesa con el siguiente hardware:
• Procesador Intel Core 2 Quad Q6600. Cuatro núcleos y 2.40 GHz.
• 2 GB RAM DDR2 @ 333 MHz.
• ASUS NVIDIA GeForce GTX 660. 960 CUDA Cores.
Pruebas• Aceleración
• Fitness sin islas
• Fitness con islas
• Fitness con modelo celular
• Fitness con modelo híbrido
• Fitness frente a tiempo por
generación
Estudio de pruebas y resultadosParalelismo a nivel de datos
240x poblaciones muy grandes
Tiempos para 1000 generaciones
Población
Ace
lera
ció
n
Estudio de pruebas y resultadosPruebas de fitness sin islas: Intentamos encontrar el mejor valor de mutación y la mejor
selección
Estudio de pruebas y resultadosPruebas de fitness sin islas
Élite:
Mutación enlaces = 0.001
Mutación reglas = 0.001
Ruleta:
Mutación enlaces = 0.001
Mutación reglas = 0.6
Generación1 10 100 1000 10000 100000
Generación
0.14
0.12
0.1
0.08
0.06
0.04
0.02
0
Fitn
ess
10240 Elite 20480 Elite 10240 Ruleta 20480 Ruleta
Estudio de pruebas y resultadosPruebas de fitness con islas, población constante
Estudio de pruebas y resultadosPruebas de fitness con islas, población por isla constante
Generación10 100 1000 10000 100000
0.018
0.016
0.014
0.012
0.01
0.008
0.006
0.004
0.002
0
Fitn
ess
Estudio de pruebas y resultadosPruebas de fitness con islas, tamaño de isla variable
10 100 1000 10000 100000Generación
0.0240.022
0.020.0180.0160.0140.012
0.010.0080.0060.0040.002
0
Fitn
ess
Estudio de pruebas y resultadosComparativa de todas las implementaciones
Híbrido: migraciones aleatorias
Resto: migraciones elitistas512 x 10 (16,16)
Celular 32 x 32
0.006
0.005
0.004
0.003
0.002
0.001
0
4096 x 3 (2,4)
Híbrido 32 x 32 (2,4)
512 x 10 (2,4)
Básico 20480 Élite
4096 x 3 (16,16)
300 500 700 900 1100 1300 1500 1700 1900 2100
Tiempo (s)
Fit
ne
ss
Conclusiones• Desarrollo de una implementación paralela sobre GPU (Graphics Processing Units)
usando C/C++ y CUDA de un algoritmo genético aplicado al campo de la
Bioinformática, que analiza la dinámica evolutiva de redes de regulación génica.
• Implementación de distintos modelos para la paralelización del algoritmo: modelo
maestro-esclavo, modelo de islas, modelo celular y modelo híbrido.
• Minimización del tiempo de ejecución del algoritmo mediante la aplicación de
procedimientos de desarrollo que optimicen el uso de los recursos de la GPU mediante
CUDA.
• Estudio comparativo del rendimiento obtenido por la aplicación paralela sobre GPU
empleando cada uno de los modelos frente a la aplicación secuencial sobre CPU
Trabajo futuro
• Añadir nuevos tipos de selección
• Mejorar aún más la eficiencia
• Añadir modelos matemáticos más complejos
• Algoritmo adaptativo
• Interfaz de usuario
Estimación de coste
Actividad
25/1
1/20
14
02/1
2/20
14
09/1
2/20
14
16/1
2/20
14
23/1
2/20
14
30/1
2/20
14
06/0
1/20
15
13/0
1/20
15
20/0
1/20
15
27/0
1/20
15
03/0
2/20
15
10/0
2/20
15
17/0
2/20
15
24/0
2/20
15
03/0
3/20
15
10/0
3/20
15
17/0
3/20
15
24/0
3/20
15
31/0
3/20
15
07/0
4/20
15
14/0
4/20
15
21/0
4/20
15
28/0
4/20
15
05/0
5/20
15
12/0
5/20
15
19/0
5/20
15
26/0
5/20
15
02/0
6/20
15
09/0
6/20
15
16/0
6/20
15
23/0
6/20
15
30/0
6/20
15
07/0
7/20
15
14/0
7/20
15
Búsqueda de fuentesEstudio del problema y del algoritmo propuestoAprendizaje y prácticas de C y CUDAEstudio de diferentes planteamientos de GA en CUDAImplementación secuencialPruebas de correcciónImplementación paralelaEnfoque maestro-esclavoPruebas de correcciónEnfoque celularPruebas de correcciónEnfoque por islasPruebas de correcciónPruebas y rendimiento alg. secuencialPruebas y rendimiento alg. paralelosRedacción de la memoria del proyectoDesarrollo de la presentación
cuEVOGENET
Media de 45 horas semanales x 32 semanas = 1440
horas
project
cuEVOGENET
Actividad
11/25/1412/2/1412/9/1412/16/1412/23/1412/30/141/6/151/13/151/20/151/27/152/3/152/10/152/17/152/24/153/3/153/10/153/17/153/24/153/31/154/7/154/14/154/21/154/28/155/5/155/12/155/19/155/26/156/2/156/9/156/16/156/23/156/30/157/7/157/14/152/5/002/6/002/7/002/8/002/9/002/10/002/11/002/12/002/13/002/14/002/15/002/16/002/17/002/18/002/19/002/20/002/21/002/22/002/23/002/24/002/25/002/26/002/27/002/28/003/1/00
Búsqueda de fuentes
Estudio del problema y del algoritmo propuesto
Aprendizaje y prácticas de C y CUDA
Estudio de diferentes planteamientos de GA en CUDA
Implementación secuencial
Pruebas de corrección
Implementación paralela
Enfoque maestro-esclavo
Pruebas de corrección
Enfoque celular
Pruebas de corrección
Enfoque por islas
Pruebas de corrección
Pruebas y rendimiento alg. secuencial
Pruebas y rendimiento alg. paralelos
Redacción de la memoria del proyecto
Desarrollo de la presentación
Implementación en CUDAGeneración de números aleatorios de calidad
Recomendación NVIDIA:
• Diferente número de secuencia por hilo: espacian los
hilos 267 posiciones para evitar solapamientos
Problema:
• Número de hilos muy grande Extremadamente
costoso
Solución:
• Mismo número de secuencia y diferente semilla para
cada hilo
Evolución celular
Evolución híbrido
Comparativa tiempos 100000 gen.
Solución encontrada
Fórmula distancia
Optimización migraciones
cuEVOGENETObjetivosÍndiceBiología de sistemas y redes génicasBiología de sistemas y redes génicasBiología de sistemas y redes génicasModelo matemático usadoModelo matemático usadoProblema a resolverProblema a resolverAlgoritmo genéticoAlgoritmo genéticoAlgoritmo genéticoÍndiceCUDACUDACUDAImplementación en CUDAImplementación en CUDAImplementación en CUDAImplementación en CUDAImplementación en CUDAImplementación en CUDAEstudio de pruebas y resultadosEstudio de pruebas y resultadosEstudio de pruebas y resultadosEstudio de pruebas y resultadosEstudio de pruebas y resultadosEstudio de pruebas y resultadosEstudio de pruebas y resultadosEstudio de pruebas y resultadosConclusionesTrabajo futuroSlide Number 34Estimación de costeImplementación en CUDAEvolución celular Evolución híbridoComparativa tiempos 100000 gen.Solución encontradaFórmula distanciaOptimización migraciones
Top Related