File Download
Supplementary
-
Citations:
- Appears in Collections:
postgraduate thesis: Vertex-centric graph processing on FPGA
Title | Vertex-centric graph processing on FPGA |
---|---|
Authors | |
Advisors | |
Issue Date | 2019 |
Publisher | The University of Hong Kong (Pokfulam, Hong Kong) |
Citation | Engelhardt, N.. (2019). Vertex-centric graph processing on FPGA. (Thesis). University of Hong Kong, Pokfulam, Hong Kong SAR. |
Abstract | With the rise of big data and machine learning, the area of graph analytics has received renewed interest in recent years. Graph data structures, which represent connections between items, can be found in many domains: road networks are street connections between locations, social networks are friendships between people, neural networks are connections between artificial neurons, etc. However, graph workloads have several unique characteristics stemming from their irregular structure that make them challenging to implement on traditional architectures.
By using Field Programmable Gate Arrays (FPGA), one can build custom architectures that are a better fit for these algorithms than CPUs or GPUs. FPGA development, however, is significantly more low-level and hence complex than programming on CPU or GPU, and building a custom FPGA implementation of an algorithm can take months or even years.
This dissertation work examines ways to increase productivity of FPGA development and make it viable to take advantage of FPGA-based platforms for a greater spectrum of use cases. Graph algorithms, as a class of problems, share many similarities, which offers the opportunity to find common solutions. In the case of vertex-centric graph algorithms, the actual computation at the vertex is usually very simple, and most of the complexity lies in the generic data management functionality that is common across many applications.
The interplay between the algorithms, the programming model, the execution model and the architecture is investigated. A common algorithm structure is identified for which a well-suited vertex-centric programming model can be developed that is easy to use while exposing explicit information about the different data accesses required. This model provides an abstraction for which multiple implementation options are explored. Suitable architectural choices for single-FPGA and multi-FPGA platforms are found, and the influence of platform elements such as off-chip memory and inter-FPGA communication network is examined both through an analytical model and real-life experiments.
The result of this research is GraVF, a graph processing framework with a focus on programmability, where the programmer only needs to implement a small computational kernel in a vertex-centric programming model, but which nevertheless generates designs that achieve performance exceeding other FPGA frameworks in the literature.
There are two main components to the GraVF framework: a software simulator to assist rapid cycling in the early development steps without involving too many hardware details, and a hardware library that implements the GraVF execution model. The simulator, written in C++, can interface with either a native C or C++ implementation of the user application kernel, or with a verilog implementation through the use of the Verilator verilog-to-C++ translation tool. The hardware library is implemented in Migen, a python-based metaprogramming language for generating hardware, which outputs Verilog. This means that the user is free to use any hardware description language that is based on Verilog.
Together, these allow rapid development of highly efficient customized FPGA designs for vertex-centric graph processing. |
Degree | Doctor of Philosophy |
Subject | Field programmable gate arrays Graph algorithms Graph theory - Data processing |
Dept/Program | Electrical and Electronic Engineering |
Persistent Identifier | http://hdl.handle.net/10722/278435 |
DC Field | Value | Language |
---|---|---|
dc.contributor.advisor | So, HKH | - |
dc.contributor.advisor | Tsia, KKM | - |
dc.contributor.author | Engelhardt, Nina | - |
dc.date.accessioned | 2019-10-09T01:17:42Z | - |
dc.date.available | 2019-10-09T01:17:42Z | - |
dc.date.issued | 2019 | - |
dc.identifier.citation | Engelhardt, N.. (2019). Vertex-centric graph processing on FPGA. (Thesis). University of Hong Kong, Pokfulam, Hong Kong SAR. | - |
dc.identifier.uri | http://hdl.handle.net/10722/278435 | - |
dc.description.abstract | With the rise of big data and machine learning, the area of graph analytics has received renewed interest in recent years. Graph data structures, which represent connections between items, can be found in many domains: road networks are street connections between locations, social networks are friendships between people, neural networks are connections between artificial neurons, etc. However, graph workloads have several unique characteristics stemming from their irregular structure that make them challenging to implement on traditional architectures. By using Field Programmable Gate Arrays (FPGA), one can build custom architectures that are a better fit for these algorithms than CPUs or GPUs. FPGA development, however, is significantly more low-level and hence complex than programming on CPU or GPU, and building a custom FPGA implementation of an algorithm can take months or even years. This dissertation work examines ways to increase productivity of FPGA development and make it viable to take advantage of FPGA-based platforms for a greater spectrum of use cases. Graph algorithms, as a class of problems, share many similarities, which offers the opportunity to find common solutions. In the case of vertex-centric graph algorithms, the actual computation at the vertex is usually very simple, and most of the complexity lies in the generic data management functionality that is common across many applications. The interplay between the algorithms, the programming model, the execution model and the architecture is investigated. A common algorithm structure is identified for which a well-suited vertex-centric programming model can be developed that is easy to use while exposing explicit information about the different data accesses required. This model provides an abstraction for which multiple implementation options are explored. Suitable architectural choices for single-FPGA and multi-FPGA platforms are found, and the influence of platform elements such as off-chip memory and inter-FPGA communication network is examined both through an analytical model and real-life experiments. The result of this research is GraVF, a graph processing framework with a focus on programmability, where the programmer only needs to implement a small computational kernel in a vertex-centric programming model, but which nevertheless generates designs that achieve performance exceeding other FPGA frameworks in the literature. There are two main components to the GraVF framework: a software simulator to assist rapid cycling in the early development steps without involving too many hardware details, and a hardware library that implements the GraVF execution model. The simulator, written in C++, can interface with either a native C or C++ implementation of the user application kernel, or with a verilog implementation through the use of the Verilator verilog-to-C++ translation tool. The hardware library is implemented in Migen, a python-based metaprogramming language for generating hardware, which outputs Verilog. This means that the user is free to use any hardware description language that is based on Verilog. Together, these allow rapid development of highly efficient customized FPGA designs for vertex-centric graph processing. | - |
dc.language | eng | - |
dc.publisher | The University of Hong Kong (Pokfulam, Hong Kong) | - |
dc.relation.ispartof | HKU Theses Online (HKUTO) | - |
dc.rights | The author retains all proprietary rights, (such as patent rights) and the right to use in future works. | - |
dc.rights | This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. | - |
dc.subject.lcsh | Field programmable gate arrays | - |
dc.subject.lcsh | Graph algorithms | - |
dc.subject.lcsh | Graph theory - Data processing | - |
dc.title | Vertex-centric graph processing on FPGA | - |
dc.type | PG_Thesis | - |
dc.description.thesisname | Doctor of Philosophy | - |
dc.description.thesislevel | Doctoral | - |
dc.description.thesisdiscipline | Electrical and Electronic Engineering | - |
dc.description.nature | published_or_final_version | - |
dc.identifier.doi | 10.5353/th_991044146572403414 | - |
dc.date.hkucongregation | 2019 | - |
dc.identifier.mmsid | 991044146572403414 | - |