Simulación

Simulación refiere a la reproducción (computacional) de fenómenos y procesos del mundo real. Típicamente involucra primero el modelado de dicho proceso o fenómeno a través de experimentos estadísticos. Después la reproducción involucra la generación pseudo-aleatoria para crear los modelos en el ambiente simulado. Sus aplicaciones son numerosas en temas científicos, industriales, de construcción, de la salud, evacuaciones, etcétera. Las epidemias son particularmente interesantes de estudiar con simulaciones. El análisis de elemento finito (FEM) para aspectos estructurales es muy parecido a la simulación; se extrapola el comportamiento de una entidad a través de un modelo que lo parte a una cantidad discreta de elementos pequeños de comportamiento ya modelado. La simulación también está presente en el entretenimiento (películas y videojuegos) en la creación de ambientes virtuales y efectos.

Las computadoras modernas ya cuentan con más de un núcleo de procesamiento y además es fácil para una organización aprovechar de manera simultánea el poder computacional de más de una computadora al enfrentar un problema cuya solución requiere una cantidad elevada de recursos. Sin embargo, las técnicas típicas de procesamiento de datos que uno aprende al comenzar a programar no son capaces de aprovechar los recursos de más que un núcleo a la vez. La programación paralela refiere al diseño y la implementación de métodos de procesamiento que buscan utilizar dos o más núcleos — o hasta todos los disponibles en un momento dado — para repatir el trabajo entre los núcleos con el propósito de disminuir el tiempo de reloj requerido para llevar a cabo la tarea en cuestión.

En este curso se realizan actividades de aprendizaje que permiten la paralelización de algunas tareas fundamentales de análisis y procesamiento de datos en los lenguajes R y Python, desde más sencillos hasta más complejos, para que el participante pueda en sus trabajos futuros identificar oportunidades de paralelización y dominar las técnicas básicas de llevarlo a cabo con elegancia y eficiencia. Se implementan diversas simulaciones computacionales para generar y analizar información de distintos tipos. Si algún participante quiere realizar las prácticas en un lenguaje emergente distinto como por ejemplo Julia, esto se permite con que el participante informe previamente a la profesora y acepte que no habrá ejemplos disponibles en otros lenguajes.

Temario

  • Introducción (semana 1)
  • Medición de desempeño computacional (semana 2)
  • Cómputo paralelo en CPU y GPU (semana 3)
  • Práctica 1: movimiento Browniano (semana 4)
  • Práctica 2: autómata celular (semana 5)
  • Práctica 3: teoría de colas (semana 6)
  • Práctica 4: diagramas de Voronoi (semana 7)
  • Práctica 5: método Monte-Carlo (semana 8)
  • Práctica 6: sistema multiagente (semana 9)
  • Práctica 7: búsqueda local (semana 10)
  • Práctica 8: modelo de urnas (semana 11)
  • Práctica 9: interacciones entre partículas (semana 12)
  • Práctica 10: algoritmo genético (semana 13)
  • Práctica 11: frentes de Pareto (semana 14)
  • Práctica 12: red neuronal (semana 15)
  • Registro de temas del proyecto integrador (semana 16)
  • Avances del proyecto integrador (semanas 17 y 18)
  • Presentaciones de proyecto integrador (semana 19)
  • Entrega de portafolios de evidencia y llenado de la encuesta docente (semana 20)
  • Bibliografía
  • Este sitio web ha sido preparado para ser utilizado con el navegador Google Chrome. Contacten a la profesora si tienen problemas en su uso; en el caso de reporte error, favor de incluir captura de pantalla del error para agilizar su corrección.


    Criterios de calificación y resultados


    Actualizado el 4 de agosto del 2021.
    https://elisa.dyndns-web.com/teaching/comp/par/