2 FPGA助力Python加速计算 陈志勇
2020-03-01 252浏览
- 1.FPGA 助力 Python 加速计算 陈志勇 高级技术市场经理 安富利电子科技 2019年9月21日, 上海
- 2.Python 工程师关心的问题 Python 语言:易学易读易用、可扩展性、可移植性等。 Python 开发工具:库丰富、效率高、调试方便 Python 的应用: 人工智能、数据分析等 Python 的生态环境:软件平台、硬件平台、方案合作伙伴等 用 Python 如何开发嵌入式产品?如何实现 算法硬件加速? Ø 之前基于python开发的工程师很少接触嵌入式环境, 接触硬件 Ø 本次题目的主要内容 Ø Python <- tools -> FPGA Ø 算法硬件加速:用FPGA的逻辑硬件实现算法加速 Ø 算法如何在FPGA 中实现?如何用”与或非”门电路去写 算法? Ø 目前哪些 Xilinx FPGA的开发工具支持python 语言? Ø 目前Xilinx 工具支持python 的主要应用领域 Ø Ø Ø Ø Ø 2
- 3.Python 与嵌入式计算 Python 工程师开发嵌入式产品的时候哪些地方可能会遇到性能瓶颈? Ø 传统的计算平台:基于通用处理器的架构,Intel x86 Ø 新的嵌入式计算平台:MCU,DSP,FPGA,GPU、ASSP等 Ø 嵌入式计算: Ø 嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统对功能、可靠 性、成本、体积、功耗有严格要求的专用计算机系统,它一般由嵌入式微处理器、外围硬件设备、 嵌入 式操作系统以及用户的应用程序等四个部分组成。 Ø 嵌入式系统促使计算机的形态和性能更加小型化,多功能,低功耗. Ø 加速计算: Ø 如何提高计算效率,提高计算性能 Ø 加速计算框架的考虑 Ø 加速计算平台的考虑 Ø FPGA 是如何作为加速平台的?在边缘和云端 3
- 4.FPGA 介绍 Ø FPGA(Field Programmable Gate Array)是在PAL、GAL等可编程器件的基础上进一步发展的 产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路 的不足,又克服了原有可编程器件门电路数有限的缺点。 Ø 设计语言:硬件描述语言(HDL)是一种用来设计数字逻辑系统和描述数字电路的语言,常用 的主要有VHDL、Verilog HDL Ø 信号处理:数据可以并行处理 Ø 主要实现功能: Ø 组合逻辑 -》计数器 -》算法实现 -》SOC 设计 Ø 新一代FPGA器件:高速接口、ARM SOC、多个 IP 硬核、大容量存储器等 Ø 新一代PCIE加速卡:人工智能、金融计算、数据库、高性能计算、视频转码等。 Ø 主要应用: Ø 通信设备:路由器、交换机、5G 设备 Ø 工业市场:工业伺服、控制器、安防相机、机器视觉、超声设备等。 Ø 消费类和广播设备:电视台演播设备、电视墙 Ø 测量测试仪器:示波器、信号发生器、逻辑分析仪等 4
- 5.串行计算和并行计算 FPGA 运行频率 基于 FPGA 计算 - Parallelism 600 MHz 1 clock cycle C8 C128 250 MHz 1 clock cycle 传统的基于 DSP 计算 - Serial 5 = 250 MSPS DSP 运行频率 1 GHz 126 loops needed to process samples = 600 MSPS 126 clock cycles = 8 MSPS / MAC unit
- 6.软件仿真和硬件仿真 Ø 软件仿真:这种方法主要是使用计算机软件来模拟运行, 用户不需要搭建硬件电路就可以对程序进行验证,特别 适合于偏重算法的程序。软件仿真的缺点是无法完全仿 真与硬件相关的部分,因此最终还要通过硬件仿真来完 成最终的设计。 Ø 大部分算法工程师经常做的事情 Ø 大量的仿真软件:Matlab,Simulink Ø 数学建模:核心技术 Ø 硬件仿真:使用附加的硬件来替代用户系统的单片机并 完成单片机全部或大部分的功能。使用了附加硬件后用 户就可以对程序的运行进行控制,例如单步,全速,查 看资源断点等。硬件仿真是开发过程中所必须的。 Ø 大家对硬件加速的最初印象 Ø 不仅是嵌入式系统 6
- 7.加速计算 (Accelerate Computing) Ø 近期很热门的话题 Ø 目的:提高算法计算效率,缩短算法开发时间和验证时间 Ø 加速框架: Ø 分布式计算:多节点计算 Ø 并行计算:多处理器、多线程计算 Ø 分布式计算引擎:Spark Ø 并行计算语言(函数式编程):Scala Ø 加速方法: Ø 算法的优化 Ø 算法的并行化 ØCPU:多核 CPU Ø GPU: 多核处理器 Ø 硬件仿真:算法计算在FPGA里实现,输入和输出在 PC 端实现。 Ø Hardware in the loop simulation 7 多核处理器系统
- 8.FPGA 如何实现算法加速 Ø HDL:硬件描述语言 (Verilog, VHDL),通过与或非 门、触发器等逻辑电路实现一些特定的功能。 Ø 最核心技术:算法并行处理。相比于传统CPU的串 行处理架构 Ø 存储器架构:芯片内有大容量存储器,不需要和外 面的 DDR 做反复读写。 Ø DSP 硬核:硬核乘加器,一个时钟实现。 Ø 数据的处理以FPGA 时钟 cycle 来计算的 Ø 100M 时钟,10ns Ø D 触发器:数据可以准确和时钟同步。一个 时钟 cycle 可以实现多个数据流的同步:数 据打齐 Ø 纯并行处理架构 / 流水线处理架构 8 FPGA 基本架构
- 9.赛灵思 Zynq UltraScale+ MPSoC (16nm SOC 芯片) Memory Subsystem High Bandwidth Low Latency Real-Time Processors 32-bit Dual-Core Graphics Processor ARM Mali-400MP2 High Speed Peripherals Application Processor Key Interfaces 64-bit Dual/Quad-Core Video Codec Fabric Acceleration 8K4K (15fps) 4K2K (60fps) Customizable Engines High Speed Connectivity Platform & Power Management 9 Granular Power Control Functional Safety Configuration & Security Unit Anti-Tamper & Trust Industry Standards
- 10.高层次综合工具 (Vivado HLS) Ø Ø Ø Ø Ø Ø Ø 是一种从 C -> RTL 语言的转换工具 全面覆盖 C、C++、OpenCL,能够进行浮点运算和任意精度浮点运算 可以输出 Verilog和 VHDL代码 可以通过制定约束 (Directive) 来提高运算性能和优化资源利用率 从算法验证到硬件实现的自动化工作流程 适合C算法的工程师进行快速硬件验证 赛灵思提供基于 OpenCV 的库函数,适用于图像处理 Ø 高层次EDA开发工具,C开发者的福音,Xilinx 开发工具的核心引擎。 Ø 怎么用C语言写硬件逻辑设计? Ø 使用C 的编程语法 Ø 借用硬件设计的思路
- 11.赛灵思 openCV 库:xFopencv - HW Accelerated OpenCV Functions Level 1 Absolute Channel difference combine Channel Accumulate extract Accumulate Color convert squared Accumulate Convert bit weighted depth Arithmetic Table lookup addition Arithmetic Histogram subtractionBitwise:AND, OR, Gradient XOR, NOT Phase Pixel-wise Min/Max multiplication Location Mean & Integral image Standard Deviation Gradient Thresholding Magnitude 11 Level 2 Level 3 Box Scale/Resize Histogram of Oriented Gradients (HOG) Gaussian StereoRectify ORB Median Warp Affine SVM (binary) Sobel Warp Perspective OTSU Thresholding Mean Shift Tracking (MST) Custom convolution Fast corner Dilate Harris corner Canny edge detection Erode Remap Image pyramid Bilateral Equalize Histogram Color Detection LK Dense Optical Flow StereoLBM Ø Xilinx并没有专注在机器视觉算 法,HLS中所使用的算法基本 都是开源的 OpenCV 算法 Ø 目前HLS提供的视觉算法函数, 只是opencv原版函数的一个重 构。功能以及接口参数基本上 同原opencv函数保持一致,方 便客户使用。同时适合于HLS 综合成 HDL代码硬件实现 Ø 客户可以直接调用这些函数, 也可以参考它们的实现,针对 自己的算法做修改
- 12.什么是 PYNQ? •PYNQ:Python Productivity for Zynq (Xilinx SOC 芯片) •http://www.pynq.io/• PYNQ is an open-source project from Xilinx® that makes it easy to design embedded systems with Xilinx Zynq® Systems on Chips (SoCs). • Using the Python language and libraries, designers can exploit the benefits of programmable logic and microprocessors in Zynq to build more capable and exciting embedded systems. PYNQ can be ported to any Zynq or ZynqMP PetaLinux supported platform 12
- 13.PYNQ 是如何加速 Python 设计效率的? • Programmable logic circuits are presented as hardware libraries called overlays. These overlays are analogous to software libraries. A software engineer can select the overlay that best matches their application. The overlay can be accessed through an application programming interface (API). Creating a new overlay still requires engineers with expertise in designing programmable logic circuits. The key difference however, is the build once, re-use many times paradigm. Overlays, like software libraries, are designed to be configurable and re-used as often as possible in many different applications. 解释: Ø PYNQ:软件框架 Ø Hardwarelibrary:'>library: