A High-level Synthesis Toolchain for the Julia Language
By: Benedict Short, Ian McInerney, John Wickerson
Potential Business Impact:
Lets scientists build special computer chips easily.
With the push towards Exascale computing and data-driven methods, problem sizes have increased dramatically, increasing the computational requirements of the underlying algorithms. This has led to a push to offload computations to general purpose hardware accelerators such as GPUs and TPUs, and a renewed interest in designing problem-specific accelerators using FPGAs. However, the development process of these problem-specific accelerators currently suffers from the "two-language problem": algorithms are developed in one (usually higher-level) language, but the kernels are implemented in another language at a completely different level of abstraction and requiring fundamentally different expertise. To address this problem, we propose a new MLIR-based compiler toolchain that unifies the development process by automatically compiling kernels written in the Julia programming language into SystemVerilog without the need for any additional directives or language customisations. Our toolchain supports both dynamic and static scheduling, directly integrates with the AXI4-Stream protocol to interface with subsystems like on- and off-chip memory, and generates vendor-agnostic RTL. This prototype toolchain is able to synthesize a set of signal processing/mathematical benchmarks that can operate at 100MHz on real FPGA devices, achieving between 59.71% and 82.6% of the throughput of designs generated by state-of-the-art toolchains that only compile from low-level languages like C or C++. Overall, this toolchain allows domain experts to write compute kernels in Julia as they normally would, and then retarget them to an FPGA without additional pragmas or modifications.
Similar Papers
Hardware.jl - An MLIR-based Julia HLS Flow (Work in Progress)
Software Engineering
Makes computer chips faster for science programs.
From PyTorch to Calyx: An Open-Source Compiler Toolchain for ML Accelerators
Hardware Architecture
Turns AI code into computer chips.
Building Bridges: Julia as an MLIR Frontend
Programming Languages
Lets programmers easily make smart computer programs.