论文标题
Python FPGA编程以数据为中心的多层次设计
Python FPGA Programming with Data-Centric Multi-Level Design
论文作者
论文摘要
尽管高级合成(HLS)工具比硬件描述语言显着提高了程序员的生产率,但FPGA的开发仍然繁琐且容易出错。程序员必须学习并实施一套供应商特定的语法,模式和技巧,以优化(甚至成功编译)其应用程序,同时处理FPGA供应商的不断变化的工具流。我们提出了一种开发,优化和编译FPGA程序的新方法。以数据为中心的并行编程(DACE)框架允许应用程序通过其数据流和控制流过的数据流量和控制流量来定义。在这项工作中,我们展示了如何扩展使用多级库节点的SDFG将特定于域特异性和平台特定优化的优化纳入设计流中,从而使知识传输跨应用程序域和FPGA供应商。我们介绍了基于HLS的FPGA代码生成DACE的后端,并展示了如何为FPGA供应商生成SDFGS,并发出有效的HLS代码,该代码构成并注释以实现所需的体系结构。
Although high-level synthesis (HLS) tools have significantly improved programmer productivity over hardware description languages, developing for FPGAs remains tedious and error prone. Programmers must learn and implement a large set of vendor-specific syntax, patterns, and tricks to optimize (or even successfully compile) their applications, while dealing with ever-changing toolflows from the FPGA vendors. We propose a new way to develop, optimize, and compile FPGA programs. The Data-Centric parallel programming (DaCe) framework allows applications to be defined by their dataflow and control flow through the Stateful DataFlow multiGraph (SDFG) representation, capturing the abstract program characteristics, and exposing a plethora of optimization opportunities. In this work, we show how extending SDFGs with multi-level Library Nodes incorporates both domain-specific and platform-specific optimizations into the design flow, enabling knowledge transfer across application domains and FPGA vendors. We present the HLS-based FPGA code generation backend of DaCe, and show how SDFGs are code generated for either FPGA vendor, emitting efficient HLS code that is structured and annotated to implement the desired architecture.