Home

Awesome

Fletcher logo

Fletcher: A framework to integrate FPGA accelerators with Apache Arrow

License Last Commit

Fletcher is a framework that helps to integrate FPGA accelerators with tools and frameworks that use Apache Arrow in their back-ends.

Apache Arrow specifies an in-memory format targeting large datasets and provides libraries for various languages to interface with the data in that format. Arrow prevents the need for serialization between different language run-times and provides zero-copy inter-process communication of datasets. Languages that have Arrow libraries (under development) include C, C++, Go, Java, JavaScript, Python, Ruby and Rust.

While many software projects can benefit from these advantages, hardware accelerated applications have also seen serious serialization bottlenecks. Fletcher focuses on FPGA accelerators. Through Fletcher and Arrow, interfacing efficiently between FPGA accelerator and high-level language runtimes is made available to all the supported languages.

Given a set of Arrow Schemas, Fletcher generates the following:

Fletcher overview

Apache Arrow support

Platform support

Current state

Our framework is functional, but experimental and under heavy development.

Especially the development branch (which is currently our main branch) may break without notice. Some larger examples and the supported platforms are quite hard to integrate in a CI pipeline (they would take multiple days to complete and would incur significant costs for platforms such as Amazon's EC F1). For now, these larger examples and platform support resides in separate repositories (shown above) and are tested against a specific tag of this repository.

Further reading

Tutorials:

Hardware design flow:

Software design flow:

Example projects

External projects using Fletcher:

Publications

If you used or studied Fletcher, please cite:

Additional publications: