cuevogenet - universidad de sevilla cuevogene… · booleanas • continuo: ... algoritmo de...

42
cuEVOGENET Paralelizació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

Upload: others

Post on 16-May-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

  • 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

    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