Desarrollo de aceleradores hardware con técnicas de High-Level Synthesis: exploración de alternativas con paralelismo explícito y ejecución escalable

Castañares Franco, César (2016). Desarrollo de aceleradores hardware con técnicas de High-Level Synthesis: exploración de alternativas con paralelismo explícito y ejecución escalable. Tesis (Master), E.T.S.I. Industriales (UPM).

Descripción

Título: Desarrollo de aceleradores hardware con técnicas de High-Level Synthesis: exploración de alternativas con paralelismo explícito y ejecución escalable
Autor/es:
  • Castañares Franco, César
Director/es:
  • Torre Arnanz, Eduardo de la
  • Rodríguez Medina, Alfonso
Tipo de Documento: Tesis (Master)
Título del máster: Ingeniería Industrial
Fecha: Septiembre 2016
Materias:
Palabras Clave Informales: Aceleración hardware, High-Level Synthesis, paralelismo, OpenCL, FPGA, sistemas embebidos.
Escuela: E.T.S.I. Industriales (UPM)
Departamento: Automática, Ingeniería Eléctrica y Electrónica e Informática Industrial
Licencias Creative Commons: Reconocimiento - Sin obra derivada - No comercial

Texto completo

[img]
Vista Previa
Pdf - Se necesita un visor de ficheros PDF, como GSview, Xpdf o Adobe Acrobat Reader
Descargar (6MB) | Vista Previa

Resumen

La alta dependencia entre la evolución de la sociedad y de la tecnología está haciendo que la industria y la investigación hagan esfuerzos para poder hacer frente a la demanda que las personas exigen. Una de los temas más importantes que surgen es el de construir sistemas que sean capaces de procesar gran cantidad de datos con la máxima velocidad posible, pero teniendo la vista puesta, cada vez más, sobre el consumo energético. En torno a este paradigma, se plantea este Trabajo Fin de Máster con la intención de estudiar y proponer alternativas de diseño que den solución a los problemas planteados. El TFM tiene una asignación de 30 ECTS que se han ido distribuyendo a lo largo de un año entero. Su elaboración ha tenido lugar en el Centro de Electrónica Industrial de la Escuela Técnica Superior de Ingenieros Industriales de la UPM, enlazado con un contrato a tiempo parcial en un Proyecto de ámbito nacional de I+D+i denominado REBECCA. La principal meta que se pretende alcanzar con la realización del presente TFM es investigar y utilizar las mejores técnicas existentes de High-Level Synthesis (HLS) para la generación de aceleradores hardware, con el fin de facilitar su diseño e implementación sobre sistemas embebidos de hardware reconfigurable y, así, explotar al máximo las ventajas que ofrece paralelismo en la ejecución de aplicaciones. El desarrollo del proyecto se ha estructurado en cuatro etapas esenciales y así se refleja en el presente documento. La primera de ellas se ha basado en una fase de exploración de las alternativas existentes en el estado del arte de las metodologías de síntesis de alto nivel para la obtención de unidades de procesamiento hardware, así como el aprendizaje de lenguajes de programación en paralelo, como OpenCL y OpenMP, y el uso de herramientas de diseño sobre FPGA como Vivado, Vivado HLS y SDAccel. La segunda etapa ha consistido en el desarrollo de aceleradores hardware, empleando varios algoritmos paralelizables, para implementarlos sobre diferentes plataformas de aceleración, correspondiendo con la tercera fase. Por último, se han realizado los ensayos pertinentes para analizar y validar las mejores alternativas en función del entorno, el número y tipo de aceleradores empleados. Los avances tecnológicos durante las últimas décadas en el campo de la computación es la que ha motivado la realización de este trabajo. Desde el origen de los primeros procesadores monolíticos hasta los sistemas de procesamiento más complejos de la actualidad, el mundo de la electrónica ha ido evolucionando hacia dispositivos con un mayor número de transistores cada vez más pequeños, que consumen menos y trabajan a mayores velocidades. Los problemas de la técnica están acabando con la vida de la Ley de Moore, por ello se están buscando alternativas como la replicación del número de procesadores dentro de un chip, del orden de pocos cores en las CPU y cientos e incluso miles de ellos en las GPU. El auge que están consiguiendo en estos años los dispositivos basados en hardware reconfigurable (FPGA) por su buena relación rendimiento-consumo, está suponiendo que sean considerados como una alternativa a plataformas de alto rendimiento y consumo energético como las anteriores. Ese ahínco por conseguir dispositivos cada vez más rápidos y flexibles, capaces de ejecutar diversas tareas simultáneamente y que demanden menos energía, hacen de este trabajo un interesante estudio sobre el campo de la aceleración hardware. De cara a la definición del alcance del proyecto, a continuación, se muestran los objetivos fijados para el TFM: • Generación de aceleradores hardware a partir de lenguajes de alto nivel (C y OpenCL): o Para sistemas embebidos utilizando la herramienta Vivado HLS o Para entornos Data Center mediante el IDE SDAccel • Exploración de alternativas de paralelismo explícito en cuanto a lenguajes, algoritmos y metodologías de diseño HLS • Evaluación de diferentes algoritmos de referencia del parallel computing • Analizar las prestaciones en función de la escalabilidad de los aceleradores • Analizar las prestaciones en diferentes entornos de ejecución: standalone embebido, arquitectura custom y datacenter • Automatizar el proceso de generación de aceleradores para la arquitectura reconfigurable ARTICo3 • Comparación entre varios dispositivos del mismo tipo (CPU, GPU, FPGA) • Hacer una comparativa adecuada entre plataformas de diferentes prestaciones (sistemas de propósito general, embebidos, datacenter) El surgimiento de los núcleos de procesamiento se debe a la necesidad de distribuir una o varias tareas haciendo valer el concepto de paralelismo más purista de ejecutarlas de forma simultánea. Leyes como la de Amdahl, que defiende la distribución de la carga de trabajo sobre un número de aceleradores para acelerar una tarea, y la de Gustafson, que por el contrario propone aumentar la carga de trabajo, han sentado las bases de lenguajes de programación centrados en paralelizar aplicaciones: CUDA, OpenCL, OpenMP. Los dos últimos, de código abierto, se han utilizado en este TFM, teniendo un mayor peso OpenCL por los modelos que plantea de plataforma, memoria, ejecución y programación. Para poner en práctica el paralelismo de aplicaciones, se han elegido dos algoritmos que resultan muy útiles para la consecución de los objetivos planteados. Uno de ellos es un multiplicador de matrices en el que, siguiendo la Ley de Amdahl, se ha optado por asignar fragmentos de la operación matemática entre los distintos aceleradores implementados para acelerar el proceso. El otro algoritmo utilizado es Smith-Waterman, un algoritmo que alinea de forma local secuencias biogenéticas para determinar las similitudes que albergan cadenas de nucleótidos. La pérdida de información que surge al dividir las cadenas en fragmentos ha hecho que se siga el modelo de Gustafson para acelerar el procesamiento en dicha aplicación. Tras conocer los elementos que se tendrán en cuenta para la generación de aceleradores, es necesario determinar las herramientas de diseño hardware, las arquitecturas y las plataformas que se van a emplear. Como IDE se han empleado: Vivado, para el desarrollo de las arquitecturas donde implementar los aceleradores en sistemas embebidos, Vivado HLS, para la generación de los aceleradores, y SDAccel, para la generación de aceleradores y ejecución de programas basados en OpenCL enfocados a entornos datacenter. Los sistemas embebidos utilizados se han desglosado en entornos standalone, formados prácticamente por un procesador host (CPU) y los aceleradores hardware, comunicados por interconexiones lógicas, y una arquitectura reconfigurable denominada ARTICo3. Como plataformas de implementación se han utilizado FPGA y SoC de la compañía Xilinx, como la Zynq-7000 y la Virtex-7. ARTICo3 se trata de una arquitectura reconfigurable sobre FPGA de cuyo desarrollo el autor de este TFM ha formado parte durante los últimos años, junto a un grupo de doctorandos del CEI, y que fue el tema del Trabajo Fin de Grado realizado dos años atrás. Dicha arquitectura está basada en un conjunto de aceleradores que es posible reconfigurar según el punto de trabajo calculado teniendo en cuenta los requisitos de la aplicación que está ejecutando en su host y por condicionantes externos (p. ej.: nivel de batería). Los elementos que determinan ese punto de trabajo son la velocidad de cómputo, el consumo energético y la confiabilidad en la ejecución. Variando de forma dinámica los aceleradores alojados en slots independientes, mediante técnicas como la Reconfiguración Dinámica y Parcial, se atenderá en mayor o menor medida a los objetivos del espacio de soluciones. En cuanto a las pruebas realizadas para la consecución de los objetivos, se ha decidido dividir su explicación por algoritmos, dándole mayor importancia al multiplicador de matrices por la flexibilidad que aporta. En éste, los ensayos se han centrado en el procesamiento del producto de dos matrices de 1024x1024 sobre CPU, GPU y hardware. Para las pruebas software en CPU se ha utilizado un código puramente secuencial sobre un procesador Intel de gama alta y un ARM propio de un sistema embebido, con el fin de analizar el contraste de los resultados proporcionados. Para facilitar el cómputo se ha añadido una variante al código con memorias/variables locales que trabajan con submatrices más pequeñas, optimizando así el performance. De cara a analizar el comportamiento del paralelismo sobre las CPU, se han preparado códigos en OpenCL y OpenMP para ejecutarlos sobre el Intel y plataformas Raspberry Pi, estudiando la escalabilidad de la ejecución de las tareas sobre cada core (lo que se conoce como Work-Item o thread) y del tamaño de las submatrices. Los mejores tiempos se han obtenido con el Intel i7-4790 y un tamaño de submatriz de 128x128, llegando a tardar 63,2 milisegundos en multiplicar las matrices. El enfoque de las pruebas sobre GPU ha sido muy similar, utilizando código OpenCL, con y sin memoria local, sobre unos dispositivos de gama alta y media. De nuevo, el uso de memoria local y optimizaciones en el compilador devuelve los mejores resultados. La escalabilidad con un tamaño de submatriz de 32x32, el máximo soportado en dicho lenguaje por una de las GPU más potentes del mercado como es la GTX TITAN X, ha reportado un tiempo total de 3,7 ms. Pasando a las pruebas hardware, las más relevantes en el trabajo, se cambia el enfoque de buscar únicamente el máximo performance, teniendo en cuenta, también, la cantidad de recursos de la FPGA que se utilizan, ya que condiciona el número y tamaño de los aceleradores a generar. Para los sistemas embebidos standalone generados, se han diseñado aceleradores hardware desde C y OpenCL, variando las directivas HLS en busca del bloque más optimizado. Estas directivas se han centrado en segmentación y desenrollado de bucles, y particionados de memoria que permiten reducir las latencias del funcionamiento a costa de incrementar el nivel de recursos necesarios (lógicos, unidades DSP y memorias). Estos sistemas standalone han requerido el diseño de un entorno software personalizado. Posteriores diseños de aceleradores de mayor tamaño y variaciones en el número de ellos utilizados han arrojado suficientes datos para analizar minuciosamente. Con la herramienta SDAccel se ha realizado la generación de aceleradores desde OpenCL para entornos datacenter, con un motor de síntesis de alto nivel prácticamente igual al usado por Vivado HLS en los ensayos anteriores. La gestión de la ejecución por medio del runtime de OpenCL facilita en gran medida el diseño de los aceleradores y del sistema global. Los informes proporcionados por las herramientas han favorecido comparativas muy detalladas para las pruebas realizadas en todo el apartado de aceleradores HLS. Por último, se han realizado las pruebas del multiplicador de matrices sobre ARTICo3. Con un proceso HLS similar al de los sistemas standalone, en esta ocasión ha sido necesario instanciar la lógica generada dentro de los wrappers de la arquitectura: bloques prediseñados con bancos de registros y de memoria parametrizados que definen los aceleradores de ARTICo3. En su epígrafe se discute ampliamente acerca de cómo transferir los datos y los modelos de ejecución que aparecen en un proceso paralelizado, en función del tiempo de ejecución y del nivel de ocupación de las comunicaciones. En los apartados de análisis se argumenta detalladamente todos los aspectos involucrados tras estas curvas, siendo algunos de ellos: el mejor performance (46 ms) se obtiene con 3 aceleradores standalone de C de tamaño 128x128, seguido por dos de SDAccel del mismo tamaño (trabajando al doble de frecuencia, 200 MHz). Limitaciones de timing en ARTICo3 para este caso (que imponen una frecuencia máxima de funcionamiento del sistema de 75 MHz) penalizan la buena gestión que proporciona la arquitectura con las transacciones de memoria, quedando por detrás de los generados en C para standalone de 16x16, cuando deberían de tener resultados muy parecidos. Finalmente, los ensayos del algoritmo Smith-Waterman se han realizado sobre ARTICo3 para validar la generación de un acelerador con distintas condiciones (paralelismo, movimientos de datos, etc.). En este apartado se propone una alternativa al código original a nivel de diseño del acelerador, mejorando el performance. Este acelerador planteado mejora en tres veces al original (cuatro en un entorno datacenter) y en 9 veces respecto al mismo procesamiento software sobre una CPU embebida. Como conclusión, se hace una valoración del cumplimiento de los objetivos del TFM planteados originalmente y cuyo alcance queda demostrado explícitamente con el desarrollo y análisis del trabajo realizado, destacando especialmente la obtención de una gran variedad de aceleradores hardware utilizando técnicas de High-Level Synthesis y la validación de su funcionamiento y escalabilidad sobre diferentes entornos de ejecución. Además, se habla de la diseminación del trabajo realizado, comentarios acerca de las líneas futuras del trabajo, con los nuevos caminos que surgen a partir de este trabajo, y referencias de los aspectos relacionados con la responsabilidad legal, ética y profesional del proyecto. Se hace especial hincapié en que su realización no comporta ningún tipo de impacto negativo a nivel legal y profesional, debido al uso y seguimiento de todas las licencias y reglamentaciones legales recogidas en el Código Deontológico del Colegio Oficial de Ingenieros Industriales, así como tampoco, a nivel social o ético ya que el desarrollo de la aceleración hardware juega en favor de la evolución tecnológica en el campo de la computación y de la electrónica, fomentando la optimización del consumo energético.

Más información

ID de Registro: 44649
Identificador DC: http://oa.upm.es/44649/
Identificador OAI: oai:oa.upm.es:44649
Depositado por: Biblioteca ETSI Industriales
Depositado el: 13 Feb 2017 15:40
Ultima Modificación: 13 Feb 2017 15:40
  • Open Access
  • Open Access
  • Sherpa-Romeo
    Compruebe si la revista anglosajona en la que ha publicado un artículo permite también su publicación en abierto.
  • Dulcinea
    Compruebe si la revista española en la que ha publicado un artículo permite también su publicación en abierto.
  • Recolecta
  • e-ciencia
  • Observatorio I+D+i UPM
  • OpenCourseWare UPM