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.
翻译:尽管高级合成工具大大提高了硬件描述语言的程序效率,但为FPGAs开发的FPGAs仍然乏味和容易出错。程序设计者必须学习和实施一大批针对供应商的具体语法、模式和技巧,以优化(甚至成功地编集)其应用程序,同时处理FPGA供应商不断变化的工具流程。我们提出了开发、优化和汇编FPGA程序的新方法。数据集中平行程序框架允许根据数据流和通过国家数据流多格(SDFG)代表处控制流程来定义应用程序,捕捉抽象的程序特性,并暴露大量优化机会。在这项工作中,我们展示了如何将具有多层次图书馆节点的SDFG将特定域和特定平台的优化纳入设计流程,使基于HLS的FGA代码生成能够跨应用领域和FPGA供应商进行知识转让。我们介绍了以HLS为基础的DACe代码的后端,并展示了SDFG是如何为FGA供应商生成的代码的,从而实现高规格的HLS。