Fortran High-Level Synthesis: Reducing the barriers to accelerating HPC codes on FPGAs
Gabriel Rodriguez-Canal, Nick Brown, Tim Dykes, Jessica R. Jones,, Utz-Uwe Haus

TL;DR
This paper introduces a method to compile Fortran directly for FPGAs, reducing the complexity for scientific programmers and enabling them to leverage existing Fortran codebases for high-performance FPGA computing.
Contribution
It connects the LLVM Flang front end to AMD Xilinx's LLVM back end, allowing Fortran to be used directly for FPGA programming with HLS, which was previously limited to C++.
Findings
Enables direct Fortran compilation for FPGAs.
Shows Fortran's features are advantageous for FPGA programming.
Reduces barriers for scientific computing on FPGAs.
Abstract
In recent years the use of FPGAs to accelerate scientific applications has grown, with numerous applications demonstrating the benefit of FPGAs for high performance workloads. However, whilst High Level Synthesis (HLS) has significantly lowered the barrier to entry in programming FPGAs by enabling programmers to use C++, a major challenge is that most often these codes are not originally written in C++. Instead, Fortran is the lingua franca of scientific computing and-so it requires a complex and time consuming initial step to convert into C++ even before considering the FPGA. In this paper we describe work enabling Fortran for AMD Xilinx FPGAs by connecting the LLVM Flang front end to AMD Xilinx's LLVM back end. This enables programmers to use Fortran as a first-class language for programming FPGAs, and as we demonstrate enjoy all the tuning and optimisation opportunities that HLS…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Embedded Systems Design Techniques · Distributed and Parallel Computing Systems
