Generating FPGA-based image processing accelerators with Hipacc: (Invited paper)

Domain-Specific Languages (DSLs) provide a high-level and domain-specific abstraction to describe algorithms within a certain domain concisely. Since a DSL separates the algorithm description from the actual target implementation, it offers a high flexibility among heterogeneous hardware targets, such as CPUs and GPUs. With the recent uprise of promising High-Level Synthesis (HLS) tools, like Vivado HLS and Altera OpenCL, FPGAs are becoming another attractive target architecture. Particularly in the domain of image processing, applications often come with stringent requirements regarding performance, energy efficiency, and power, for which FPGA have been proven to be among the most suitable architectures. In this work, we present the Hipacc framework, a DSL and source-to-source compiler for image processing. We show that domain knowledge can be captured to generate tailored implementations for C-based HLS from a common high-level DSL description targeting FPGAs. Our approach includes FPGA-specific memory architectures for handling point and local operators, as well as several high-level transformations. We evaluate our approach by comparing the resulting hardware accelerators to GPU implementations, generated from exactly the same DSL source code.

[1]  Jürgen Teich,et al.  Loop coarsening in C-based High-Level Synthesis , 2015, 2015 IEEE 26th International Conference on Application-specific Systems, Architectures and Processors (ASAP).

[2]  Jürgen Teich,et al.  Code generation for embedded heterogeneous architectures on android , 2014, 2014 Design, Automation & Test in Europe Conference & Exhibition (DATE).

[3]  Christopher G. Harris,et al.  A Combined Corner and Edge Detector , 1988, Alvey Vision Conference.

[4]  Roberto Manduchi,et al.  Bilateral filtering for gray and color images , 1998, Sixth International Conference on Computer Vision (IEEE Cat. No.98CH36271).

[5]  Jürgen Teich,et al.  Code generation from a domain-specific language for C-based HLS of hardware accelerators , 2014, 2014 International Conference on Hardware/Software Codesign and System Synthesis (CODES+ISSS).

[6]  Jürgen Teich,et al.  Auto-vectorization for image processing DSLs , 2017, LCTES.

[7]  Jürgen Teich,et al.  Synthesis and optimization of image processing accelerators using domain knowledge , 2015, J. Syst. Archit..

[8]  John C. Russ,et al.  The Image Processing Handbook , 2016, Microscopy and Microanalysis.

[9]  Jürgen Teich,et al.  HIPAcc: A Domain-Specific Language and Compiler for Image Processing , 2016, IEEE Transactions on Parallel and Distributed Systems.

[10]  Antje Baer,et al.  Handbook Of Medical Image Processing And Analysis , 2016 .

[11]  Pat Hanrahan,et al.  Darkroom , 2014, ACM Trans. Graph..

[12]  Jürgen Teich,et al.  FPGA-based accelerator design from a domain-specific language , 2016, 2016 26th International Conference on Field Programmable Logic and Applications (FPL).

[13]  Uday Bondhugula,et al.  A DSL compiler for accelerating image processing pipelines on FPGAs , 2016, 2016 International Conference on Parallel Architecture and Compilation Techniques (PACT).

[14]  James Reinders,et al.  Intel threading building blocks - outfitting C++ for multi-core processor parallelism , 2007 .

[15]  Pat Hanrahan,et al.  Rigel , 2016, ACM Trans. Graph..

[16]  Jason Cong,et al.  AutoPilot: A Platform-Based ESL Synthesis System , 2008 .

[17]  Fridtjof Stein,et al.  Efficient Computation of Optical Flow Using the Census Transform , 2004, DAGM-Symposium.

[18]  Reinhard Klette,et al.  Handbook of image processing operators , 1996 .

[19]  Dirk Koch,et al.  FPGAs for Software Programmers , 2016 .