首页> 外文OA文献 >Desarrollo de aceleradores hardware con técnicas de High-Level Synthesis: exploración de alternativas con paralelismo explícito y ejecución escalable
【2h】

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

机译:使用高级综合技术开发硬件加速器:探索具有显式并行性和可伸缩执行的替代方案

摘要

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. udEn 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. udLa 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. udEl 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. udLos 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. udEl 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. udDe cara a la definición del alcance del proyecto, a continuación, se muestran los objetivos fijados para el TFM: ud• Generación de aceleradores hardware a partir de lenguajes de alto nivel (C y OpenCL): udo Para sistemas embebidos utilizando la herramienta Vivado HLS udo Para entornos Data Center mediante el IDE SDAccel ud• Exploración de alternativas de paralelismo explícito en cuanto a lenguajes, algoritmos y metodologías de diseño HLS ud• Evaluación de diferentes algoritmos de referencia del parallel computing ud• Analizar las prestaciones en función de la escalabilidad de los aceleradores ud• Analizar las prestaciones en diferentes entornos de ejecución: standalone embebido, arquitectura custom y datacenter ud• Automatizar el proceso de generación de aceleradores para la arquitectura reconfigurable ARTICo3 ud• Comparación entre varios dispositivos del mismo tipo (CPU, GPU, FPGA) ud• Hacer una comparativa adecuada entre plataformas de diferentes prestaciones (sistemas de propósito general, embebidos, datacenter) udEl 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. udPara 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. udTras 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. udARTICo3 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. udEn 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. udPara 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. udEl 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. udPasando 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. udPara 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. udCon 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. udPor ú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.udEn 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. udFinalmente, 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. udComo 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. udAdemá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.
机译:社会与技术发展之间的高度依赖正在促使工业和研究机构努力满足人们的需求。出现的最重要的问题之一是建立能够以最大可能的速度处理大量数据的系统,但是对能源消耗的关注却越来越多。 ud关于此范例,提出此最终硕士项目的目的是研究和提出设计替代方案,以提供解决方案。 TFM分配了30个ECTS,已分配了整整一年。这项工作已在芬欧汇川工业工程师高等技术学校的工业电子中心进行,该中心与一项名为REBECCA的国家研发项目的兼职合同相关。 ud完成本TFM的主要目标是研究和使用现有的最佳高级综合(HLS)技术来生成硬件加速器,以便于在嵌入式系统的嵌入式系统上进行设计和实现。可重新配置的硬件,从而最大程度地利用并行性在应用程序执行中提供的优势。 ud项目的开发已分为四个基本阶段,并已反映在本文档中。他们中的第一个是在探索高级合成方法的现有技术中存在的替代方案的阶段进行的,该替代方案用于获取硬件处理单元以及学习并行编程语言,例如OpenCL和OpenMP,以及在FPGA上使用设计工具,例如Vivado,Vivado HLS和SDAccel。第二阶段包括使用各种可并行化算法开发硬件加速器,以在对应于第三阶段的不同加速平台上实现它们。最后,根据环境,所用加速器的数量和类型,已经进行了相关测试以分析和验证最佳替代方案。 ud推动了这项工作的是过去几十年来计算机领域的技术进步。从最早的单片处理器的起源到当今最复杂的处理系统,电子领域已发展成为晶体管数量不断增加,消耗更少,运行速度更高的设备。该技术的问题正在终结摩尔定律的寿命,这就是为什么正在寻求替代方案的原因,例如复制芯片中处理器的数量,CPU中几个核的数量级以及在CPU中成百上千个核的数量级。 GPU。近年来,由于可重构硬件设备(FPGA)的良好的性能消耗比,使得可重构硬件设备(FPGA)蓬勃发展,这是假定它们被认为是像以前的高性能和能耗平台的替代产品。努力实现更快,更灵活的设备,能够同时执行各种任务并且需要更少的精力的努力,使这项研究成为硬件加速领域中的一项有趣的研究。 ud为了定义项目的范围,为TFM设定的目标如下所示: ud•从高级语言(C和OpenCL)生成硬件加速器: udo对于使用Vivado HLS udo工具用于使用SDAccel ud IDE的数据中心环境•在语言,算法和设计方法方面探索显式并行性的替代方案HLS ud•评估不同的并行计算算法 ud•分析基于加速器可扩展性的功能 ud•分析不同执行环境中的优势:嵌入式独立,自定义架构和数据中心 ud•自动为可重配置架构ARTICo3 ud生成加速器的过程•各种设备之间的比较类型相同(CPU,GPU,FPGA) ud•在具有不同优势的平台之间进行适当的比较(d通用,嵌入式,数据中心) ud出现处理核心是由于需要分发一个或多个任务,从而主张了同时执行它们的更纯粹的并行性概念。像阿姆达尔(Amdahl)的法律(捍卫工作负载在许多加速器上的分配以加速任务),古斯塔夫森(Gustafson)的法律则建议增加工作量,奠定了专注于并行化应用程序的编程语言的基础:CUDA,OpenCL,OpenMP。此TFM中使用了最后两个开源软件,由于OpenCL提供的平台,内存,执行和编程模型,其权重更大。为了实现应用程序并行性,选择了两种算法,它们对于实现既定目标非常有用。其中之一是矩阵乘法器,根据阿姆达尔定律,已选择该矩阵乘法器,以在实现加速过程的不同加速器之间分配数学运算的片段。使用的另一种算法是Smith-Waterman,该算法局部比对生物遗传序列,以确定核苷酸链所具有的相似性。当将链分成片段时出现的信息丢失导致遵循Gustafson模型以加快所述应用程序的处理速度。 ud了解了加速器生成将要考虑的要素之后,有必要确定要使用的硬件设计工具,体系结构和平台。以下已用作IDE:Vivado,用于开发在嵌入式系统中实现加速器的体系结构; Vivado HLS,用于生成加速器;以及SDAccel,用于生成加速器和基于针对环境的OpenCL的程序执行数据中心。所使用的嵌入式系统已分解成独立的环境,主要由通过逻辑互连进行通信的主机处理器(CPU)和硬件加速器以及称为ARTICo3的可重新配置体系结构组成。作为实现平台,使用了Xilinx公司的FPGA和SoC,例如Zynq-7000和Virtex-7。 udARTICo3是FPGA上的可重配置体系结构,该TFM的作者与来自CEI的一组博士生一起是近年来发展的一部分,这是两年前完成的最终学位项目的主题。所述架构基于一组加速器,该加速器可以根据计算出的工作点进行重新配置,并考虑到在其主机上运行的应用程序的需求以及由于外部条件(例如电池电量)而导致的加速器。决定该工作点的要素是计算速度,能耗和执行的可靠性。通过使用诸如动态和部分重新配置之类的技术动态改变独立插槽中容纳的加速器,解决方案空间的目标将或多或少地得到解决。对于为实现目标而进行的测试,已决定将其解释按算法划分,由于矩阵乘法器具有灵活性,因此更加重要。在这一测试中,测试集中于在CPU,GPU和硬件上处理两个1024x1024矩阵的乘积。 ud在CPU上进行软件测试时,在高端Intel处理器和嵌入式系统中典型的ARM上使用了纯顺序代码,以便分析提供的结果的对比。为便于计算,已向代码中添加了带有局部存储器/变量的变体,这些变体与较小的子矩阵一起工作,从而优化了性能。为了分析CPU上的并行行为,已准备好在英特尔和Raspberry Pi平台上运行OpenCL和OpenMP代码,研究每个内核上任务执行的可扩展性(称为Work-项目或线程)以及子矩阵的大小。使用Intel i7-4790和子矩阵大小为128x128可获得最佳时间,将矩阵相乘需要63.2毫秒。 udGPU测试方法与高中档设备上使用OpenCL代码(带有或不带有本地内存)非常相似。同样,在编译器中使用本地内存和优化可返回最佳结果。子矩阵大小为32x32的可扩展性,据报道,这种时间是市场上最强大的GPU之一(例如GTX TITAN X)所支持的最大值,总时间为3.7 ms。 ud通过进行与工作最相关的硬件测试,重点转移到只寻求最高性能,同时还要考虑使用的FPGA资源的数量,因为这决定了FPGA的数量和大小。产生的加速器。 ud对于生成的独立嵌入式系统,已使用C和OpenCL设计了硬件加速器,它们在搜索最优化的块时会更改HLS指令。这些策略集中于循环的分段和展开以及可以减少操作延迟的内存分区,但以增加必要资源(逻辑,DSP单元和内存)的水平为代价。这些独立系统需要设计定制软件环境。大型加速器的后续设计及其使用数量的变化产生了足够的数据以进行全面分析。 ud已使用SDAccel工具从OpenCL为数据中心环境生成加速器,其高级综合引擎实际上与Vivado HLS在以前的测试中使用的引擎相同。使用OpenCL运行时管理执行可以极大地促进加速器和整个系统的设计。工具提供的报告支持对整个HLS加速器部分中进行的测试进行非常详细的比较。最后,已经在ARTICo3的矩阵乘法器上进行了测试。使用类似于独立系统的HLS流程,这一次需要实例化体系结构包装器中生成的逻辑:带有参数化寄存器的预设计块和定义ARTICo3加速器的存储体。在其题词中,将广泛讨论如何根据并行处理时间和通信的占用程度来传输并行进程中出现的数据和执行模型。这些曲线涉及的方面包括:3个C大小为128x128的独立加速器,然后是两个相同大小的SDAccel(在200 MHz双频下工作),可获得最佳性能(46 ms)。在这种情况下,ARTICo3的时间限制(要求最大系统工作频率为75 MHz)不利于该架构通过内存事务提供的良好管理,而在16x16独立时,这种情况落后于C中生成的事务。他们应该有非常相似的结果。最后,已经在ARTICo3上进行了Smith-Waterman算法的测试,以验证具有不同条件(并行性,数据移动等)的加速器的生成。本部分在加速器设计级别提出了原始代码的替代方法,从而提高了性能。相对于嵌入式CPU上的相同软件处理,该建议的加速器将原始速度提高了三倍(在数据中心环境中为四倍),而性能提高了9倍。总而言之,我们对最初提出的TFM目标的实现情况进行了评估,并通过对工作的发展和分析来明确证明其范围,特别强调了使用高级综合技术获得的各种硬件加速器。以及在不同执行环境下对其操作和可伸缩性的验证。此外,还讨论了已完成工作的传播,对未来工作路线的评论以及这项工作中出现的新途径,并提到了与项目的法律,道德和专业责任有关的方面。特别强调的是,由于使用和监视了《官方工业工程师职业道德规范》以及《工业工程师职业道德规范》中包含的所有许可证和法律法规,因此实现它不会在法律和专业层面造成任何类型的负面影响。自从硬件加速发展以来,它在社会或伦理层面上都在促进计算和电子领域的技术发展,从而促进了能耗的优化。

著录项

  • 作者

    Castañares Franco César;

  • 作者单位
  • 年度 2016
  • 总页数
  • 原文格式 PDF
  • 正文语种 spa
  • 中图分类

相似文献

  • 外文文献
  • 中文文献
  • 专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号