cuEVOGENET - Universidad de Sevilla cuEVOGENE… · booleanas • Continuo: ... Algoritmo de...
Transcript of cuEVOGENET - Universidad de Sevilla cuEVOGENE… · booleanas • Continuo: ... Algoritmo de...
-
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