TY - JOUR
T1 - PyLog
T2 - An Algorithm-Centric Python-Based FPGA Programming and Synthesis Flow
AU - Huang, Sitao
AU - Wu, Kun
AU - Jeong, Hyunmin
AU - Wang, Chengyue
AU - Chen, Deming
AU - Hwu, Wen Mei
N1 - Funding Information:
This work was supported in part by Xilinx Center of Excellence at UIUC, Xilinx Adaptive Compute Cluster (XACC) initiative, Hewlett Packard Labs, under Grant BAH HT 15-1158, and IBM-ILLINOIS Center for Cognitive Computing Systems Research (C3SR).
Publisher Copyright:
© 1968-2012 IEEE.
PY - 2021/12/1
Y1 - 2021/12/1
N2 - The exploding complexity and computation efficiency requirements of applications are stimulating a strong demand for hardware acceleration with heterogeneous platforms such as FPGAs. However, a high-quality FPGA design is very hard to create and optimize as it requires FPGA expertise and a long design iteration time. In contrast, software applications are typically developed in a short development cycle, with high-level languages like Python, which have much higher levels of abstraction than all existing hardware design flows. To close this gap between hardware design flows and software applications, and simplify FPGA programming, we create PyLog, a high-level, algorithm-centric Python-based programming and synthesis flow for FPGA. PyLog is powered by a set of compiler optimization passes and a type inference system to generate high-quality hardware design. It abstracts away the implementation details, and allows designers to focus on algorithm specification. PyLog takes in Python functions, generates PyLog intermediate representation (PyLog IR), performs several optimization passes, including pragma insertion, design space exploration, and memory customization, etc., and creates complete FPGA system designs. PyLog also has a runtime that allows users to run the PyLog code directly on the target FPGA platform without any extra code development. The whole design flow is automated. Evaluation shows that PyLog significantly improves FPGA design productivity and generates highly efficient FPGA designs that outperform highly optimized CPU implementation and state-of-the-art FPGA implementation by $3.17\times$3.17× and $1.24\times$1.24× on average.
AB - The exploding complexity and computation efficiency requirements of applications are stimulating a strong demand for hardware acceleration with heterogeneous platforms such as FPGAs. However, a high-quality FPGA design is very hard to create and optimize as it requires FPGA expertise and a long design iteration time. In contrast, software applications are typically developed in a short development cycle, with high-level languages like Python, which have much higher levels of abstraction than all existing hardware design flows. To close this gap between hardware design flows and software applications, and simplify FPGA programming, we create PyLog, a high-level, algorithm-centric Python-based programming and synthesis flow for FPGA. PyLog is powered by a set of compiler optimization passes and a type inference system to generate high-quality hardware design. It abstracts away the implementation details, and allows designers to focus on algorithm specification. PyLog takes in Python functions, generates PyLog intermediate representation (PyLog IR), performs several optimization passes, including pragma insertion, design space exploration, and memory customization, etc., and creates complete FPGA system designs. PyLog also has a runtime that allows users to run the PyLog code directly on the target FPGA platform without any extra code development. The whole design flow is automated. Evaluation shows that PyLog significantly improves FPGA design productivity and generates highly efficient FPGA designs that outperform highly optimized CPU implementation and state-of-the-art FPGA implementation by $3.17\times$3.17× and $1.24\times$1.24× on average.
KW - FPGA
KW - Python
KW - design optimization
KW - high-level synthesis
UR - http://www.scopus.com/inward/record.url?scp=85118595158&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=85118595158&partnerID=8YFLogxK
U2 - 10.1109/TC.2021.3123465
DO - 10.1109/TC.2021.3123465
M3 - Article
AN - SCOPUS:85118595158
SN - 0018-9340
VL - 70
SP - 2015
EP - 2028
JO - IEEE Transactions on Computers
JF - IEEE Transactions on Computers
IS - 12
ER -