Descripción del proyecto
El proyecto Plataformas Heterogéneas para la Identificación de Música (BEBOP) plantea el desarrollo de una solución tecnológica que permita utilizar el potencial computacional de hardware de bajo coste, alta flexibilidad y reducido consumo. Más concretamente se explorarán dos alternativas tecnológicas de uso creciente en los sistemas de supercomputación y BigData: las Graphical Processing Units (GPUs) que incorporan las placas gráficas de cualquier ordenador estándar y, las Field Programmable Gate Array (FPGAs) por su alto grado de flexibilidad de re-programación, para realizar operaciones complejas. Este enfoque abre la puerta a una solución a los mencionados problemas de escalabilidad con un coste mucho menor. La solución propuesta por el proyecto BEBOP permitirá conseguir la aceleración computacional requerida en servidores para ciertas aplicaciones con volúmenes de usuarios simultáneos elevados, centrándose en tres objetivos: Mejor utilización de los recursos: incrementar la capacidad de procesamiento de datos de cada unidad de la infraestructura Reducir costes de la plataforma: menor número de sistemas a mantener Preparar la plataforma de análisis para entornos Cloud heterogéneos (actualmente experimentales)Es importante resaltar que este proyecto plantea importantes retos tecnológicos en lo referente a la reprogramación requerida para conseguir tiempos de cálculo óptimos. Más concretamente es necesario abordar los siguientes puntos: Analizar el rendimiento de los pipelines de identificación y análisis de las fuentes de audio a procesar. En concreto, será necesario empezar por un análisis de rendimiento de los sistemas de indexación basados en Lucene, el procesamiento de imágenes con ffmpeg y el analizador de fuentes de audio con Musicspeech. Localizar los principales problemas de rendimiento de los sistemas usados actualmente Diseñar alternativas a los principales problemas en CPU usando multi-cores y hyperthreading Adaptar nuevas soluciones a sistemas GPU y maximizar la eficiencia usando millones de threads en paralelo Diseñar alternativas en sistemas CPU+GPU donde hay unas etapas en CPU y otras en GPU ejecutándose de forma concurrente. Diseñar alternativas en sistemas CPU+CPU+FPGA del mismo pipeline de procesamiento donde se usa la FPGA para implementar las secciones más críticas para el rendimiento que se hayan encontrado Estudiar el rendimiento y prestaciones obtenidas en varios sistemas de última generación en nodos físicos y en Cloud y describir una serie de recomendaciones técnicas de plataforma.El objetivo principal del proyecto es la adaptación del pipeline de análisis de fuentes de audio y vídeo y el de identificación de firmas obtenidas de estas fuentes a una plataforma computacional heterogénea. El pipeline optimizado será capaz de utilizar los recursos computacionales existentes en la actualidad como las CPU multi-core, las GPUs y las FPGAs con una mayor eficiencia energética y computacional.La metodología utilizada en el proyecto estará basada en el análisis de rendimiento de la solución en estudio. Inicialmente, se estudia la ejecución de las aplicaciones y algoritmos de forma serie para averiguar los principales factores que limitan su rendimiento. Después, se plantean mejoras y alternativas para hacer escalar las aplicaciones en entornos multi-core. Tomando este nuevo diseño como base, se plantean rediseños específicos para entornos con miles de threads colaborando. De esta forma, se evalúa el potencial de uso de las GPUs. Aquellos algoritmos especialmente relevantes por su impacto en la eficiencia, se llevan a la FPGA del sistema. Finalmente, se plantea el uso de todo el sistema computacional donde cada recurso se encarga de ejecutar un grupo de tareas distintas especialmente optimizadas para CPU, GPU o FPGA.