/gnn-builder

An Automated Framework for Generic Graph Neural Network Accelerator Generation, Simulation, and Optimization

Primary LanguageC++GNU Affero General Public License v3.0AGPL-3.0

🛠️ GNNBuilder

A framework for generating FPGA hardware accelerators for graph neural networks (GNNs) using High Level Synthesis (HLS).

GNNBuilder is developed and maintained by the Stefan Abi-Karam from Sharc Lab at Georgia Tech.

Demonstration of GNNBuilder

Below is a demo of how to use GNNBUilder to generate an FPGA accelerator for Graph-Level Classification.

import gnnbuilder as gnnb

# TODO: Add example code

A user can provide a trained PyTorch model, and the GNNBuilder framework can generate high-level synthesis (HLS) C++ code for the model.

This HLS model can then be used to build a bitstream of the model that can be executed on an FPGA.

This framework also provides some simple design space exploration (DSE) tools using a performance model that the designer can use to parameterize the hardware implementation in terms of parallelism and numerical precision for accuracy, latency, and resource usage tradeoffs.

Documentation

Comprehensive documentation is available at the following link: https://sharc-lab.github.io/gnn-builder/.

You can find information about package installation, setup, demo usage, common use cases, and package API details.

Quick Installation

We have packaged GNNBuilder as both a pip package and a conda package to streamline the installation process.

To install GNNBuilder using pip, run the following command:

pip install git+https://github.com/sharc-lab/gnn-builder.git​

To install GNNBuilder using conda (or equivalent package manager like mamba), run the following command:

conda install gnnbuilder

Requirements and System Setup

The core library itself only requires Python packages and does not require any external tools.

However, without external tools, the library will only be able to generate source code and build scripts for the user's design.

To build the design, testbenches, and hardware bitstreams, the user will need to have installed the Xilinx Vitis HLS, Vivado, and Vitis tools on their system in additon to some standard Linux tools like make and clang.

For ease of setup, we highly recommend using a Linux-based operating system. We have only really tested GNNBuilder on Linux systems.

We are also currently working on composing all the necessary tools and libraries into a Docker image for ease of use across different systems.

Citing and Referencing GNNBuilder

You can cite GNNBuilder as it was mainly published at FPL 2023.

S. Abi-Karam and C. Hao, "GNNBuilder: An Automated Framework for Generic Graph Neural Network Accelerator Generation, Simulation, and Optimization," in 2023 33nd International Conference on Field-Programmable Logic and Applications (FPL), Gothenburg, Sweden: IEEE, Sep. 2023.
@inproceedings{abi-karam_gnnbuilder_2023,
    location = {Gothenburg, Sweden},
    title = {{GNNBuilder}: An Automated Framework for Generic Graph Neural Network Accelerator Generation, Simulation, and Optimization},
    eventtitle = {2023 33nd International Conference on Field-Programmable Logic and Applications ({FPL})},
    booktitle = {2023 33nd International Conference on Field-Programmable Logic and Applications ({FPL})},
    publisher = {{IEEE}},
    author = {Abi-Karam, Stefan and Hao, Cong},
    date = {2023-09},
}

Associated Publications