Setup#

Installation#

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

Install via pip#

To install GNNBuilder using pip, run the following command:

pip install gnnbuilder

Install via conda#

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

conda install gnnbuilder

Requirements#

Core Library#

The core library for GNNBuilder only has other Python packages as dependencies. All the required Python depndeices for the core lirbary are included in the GNNBuilder package specification so that Python dependencies can be resolved and installed automaticly by pip or conda (as what normally happens when installing packages).

With the core library alone, you can create GNN models that interoperate with PyTorch, PyTorch Geometric, and GNNBuilder. The core library also allows you to generate C++ high-level synthesis source code for the hardware accelerator from the created GNN models, along with all the testbench code, testbench data, host code, and all software and tool build scripts.

Even without external tools to build the designs, the core library is still useful for creating, training, and evaluating GNN models in software using the components (layers and model architectures) that fit within the GNNBuilder framework. In addition, build scripts and tool execution may be done on dedicated build servers, allowing designers to fully package a self-contained project that can be copied to a build server for execution.

External Vendor Tools#

To actually build a hardware accelerator from the generated HLS source code and deploy it on an FPGA, you will need to have certain external vendor tools installed on your system. The GNNBuilder library uses these external tools when generating build scripts, as well as when executing certain build steps supported in the GNNBuilder library.

Below lists the external vendor tools from Xilinx that are required:

  • Vitis HLS - Used for C++ high-level synthesis to generate RTL (Register-Transfer Level) source code and IP (Intellectual Property) blocks.

  • Vitis - Responsible for FPGA (Field-Programmable Gate Array) synthesis and implementation, as well as bitstream generation for deployment to Vitis-supported accelerators and FPGAs.

  • Vivado - Utilized for FPGA synthesis, place-and-route, and bitstream generation. Vitis calls Vivado when generating bitstreams.

  • XRT (Xilinx Runtime) - Manages FPGA bitstream deployment and execution on the FPGA.

Note that the user only needs to have external tools installed for their specific requirements. The examples below illustrate this point.

  • If a user is interested in just running HLS synthesis to create a Vivado IP for integration into a custom Vivado project, then only Vitis HLS is required by GNNBuilder.

  • If a user is interested in running HLS synthesis to create a Vitis kernel for integration into a custom Vitis project, then only Vitis HLS is required by GNNBuilder.

  • If a user is interested in deploying a fully built GNNBuilder accelerator on an FPGA accelerator card supported by Vitis (e.g., Alveo U50) and running the accelerator on the FPGA, then all the external tools listed above are required by GNNBuilder.

External System Tools#

In addition to the external vendor tools listed above, GNNBuilder also requires certain system tools to be installed. These tools are used by GNNBuilder to execute specific build steps in addition to being used by the build scripts themselves.

Below lists the required external system tools. Most of these necessary tools are standard Linux build tools that are likely already installed on your system.

  • Make: Used to execute the build scripts generated by GNNBuilder.

  • Clang: Used to compile the host and testbench code generated by GNNBuilder.

It’s worth noting that we are currently working on reducing the dependencies on external system tools. Given that Vitis HLS and Vitis come with their own versions of Clang, Make, and other required system tools, we are developing an API that will automatically utilize the tools packaged with Vitis HLS and Vitis if they are present on the system.

System Support#

GNNBuilder has primarily been tested using Linux-based systems. Currently, we cannot offer any guarantees about how GNNBuilder will perform on Windows and MacOS systems. If there is an interest in supporting these systems, please inform us by reaching out to us directly. We understand that certain computing setups and environments might have unusual constraints, so we are open to providing support for other systems if there is sufficient interest.