Introducción a Embedded High-Performance-Computing

Vista simplificada de la arquitectura many-core (34,64,100 cores) de Tilera. Fuente: Tilera Corp.

Avances en la tecnología de integración de semiconductores y herramientas de software permiten que nos acerquemos rápidamente a la era en que sistemas embebidos puedan ejecutar aplicaciones anteriormente reservadas solo para supercomputadoras, en otras palabras supercomputadoras de bolsillo.

High-performance-computing (HPC) o computación-de-alto-desempeño, es la capacidad de correr aplicaciones grandes que demandan mucho cómputo (compute-intensive) para resolver algoritmos complejos usados típicamente en áreas como procesamiento de imágenes, simulaciones climáticas, predicciones estadísticas financieras, etc.  Por otra parte, los sistemas embebidos son dispositivos computacionales en una sola placa o chip clásicamente usados para ejecutar aplicaciones específicas, los cuales interactúan con el mundo físico y responden en tiempo-real a estímulos del entorno.

Sin embargo, hoy en dia ya es posible tener la capacidad de cómputo de una supercomputadora de varias décadas atrás, pero en la palma de nuestra mano, e.g., smartphones, laptops, tablets, drones. Debido a que es posible actualmente integrar billiones de transistores en un solo die, es posible la integración de sistemas computacionales completos en un solo chip, conocidos como systems-on-chip (SoC). Actualmente, estos SoC pueden incluso contener varios (Multi-core) o cientos (Many-core) núcleos de procesamiento. Progresivamente, estos SoCs se convertirán en heterogéneos ya que podrán contener diferentes tipos de unidades de procesamiento, i.e., central purpose unit (CPU) , graphic-processing-unit (GPU), e incluso regiones de hardware configurables como FPGA.

Al mismo tiempo, la utilización efectiva de estas unidades de procesamiento y la programación se vuelve también más compleja. Para aprovechar toda esta capacidad de cómputo, los estudiantes, ingenieros, y científicos deben entender la arquitectura de computadores modernos, técnicas para procesamiento paralelo, librerias, compiladores, y metodos para análisis de performance. Asi, el programador del futuro ya no puede pensar solo secuencialmente, sino de manera paralela y concurrente.

En conclusión, si te gustan los retos, investigar, y aprender como utilizar nuevas tecnologías,  no pierdas la oportunidad e inscribete en este curso “Introducción a Embedded HPC” (Nota: cupo limitado, primero en llegar primero en ser atendido). Talvez puedas descubrir cuánto puedes exprimir la capacidad de los procesadores de tu propia laptop o competir con tus compañeros para obtener el mayor speedup al acelerar en hardware una aplicación orientada a tu propia carrera.

Este curso opcional para estudiantes de últimos niveles del DEEE, se ofrece por primera vez, estará en continua adaptación de acuerdo al nivel de pregrado, y utilizará herramientas de fácil acceso. Sin embargo, por su orientación y contenido es generalmente un curso de posgrado y se espera que evolucione en esa dirección. Por tales razónes, este curso podría convertirse en la base de tu proyecto de carrera o la motivación para tus estudios de posgrado.

CONTENIDO

  • Conceptos generales.
  • Modelos de programación paralela, implementación, y metodologías.
  • Arquitecturas modernas para computación en paralelo.
  • Principios de computación heterogénea y programación.
  • Diseño, implementación, optimización, y evaluación de programas en paralelo.
  • Ejemplos y tutoriales.

OBJETIVOS DE APRENDIZAJE

  • Entender y aplicar métodos de programación paralela en sistemas con shared-memory (e.g., OpenMP, POSIX), y en sistemas heterogéneos (e.g., CUDA/GPU).
  • Conocer y aplicar teoría y métodos para medir y evaluar el performance y aceleración.
  • Comprender arquitectura de computadores modernos y jerarquía de memorias
  • Aplicar los conocimientos para acelerar algoritmos usados en la respectiva carrera (i.e., telecomunicaciones, o automatización-y-control).

PRE REQUISITOS

  • Diseño VLSI
  • Control Digital (Carrera Automatización-y-Control)
  • Comunicación y Codificación Digital (Carrera Telecomunicaciones)

EVALUACION

  • Proyecto final (implementación, reporte/paper, presentación)
  • Pruebas presenciales y deberes en casa.
  • Practicas de laboratorio

RESPONSABLE DEL CURSO

Byron Navas Ph.D.

DEEE

brnavas@espe.edu.ec

  VERSION 2016 marzo. N.B. En construccion !