Giter Site home page Giter Site logo

iccad-accel-gcn's Introduction

ICCAD-Accel-GCN

Official Implementation of "Accel-GCN: High-Performance GPU Accelerator Design for Graph Neural Networks"

Please cite our paper if you use the code โœ”

@inproceedings{xi2023AccelGCN,
  title={Accel-GCN: High-Performance GPU Accelerator Design for Graph Convolution Networks},
  author={Xie, Xi and Peng, Hongwu and Hasan, Amit and Huang, Shaoyi and Zhao, Jiahui and Fang, Haowen and Zhang, Wei and Geng, Tong and Khan, Omer and Ding, Caiwen},
  booktitle={Proceedings of the 42st IEEE/ACM International Conference on Computer-Aided Design},
  year={2023}
}

Abstract

This code contains a lightweight framework for benchmarking SPMM kernel designs.

The following SPMM kernels are benchmarked here:

spmm_accel.cu The implementation of our Accel-GCN's SPMM kernel design.

spmm_gnna.cu The SPMM kernel of GNNAdvisor.

spmm_cusparse.cu The cuSPARSE SPMM functionality.

Get started

Prerequisites

Nvidia GPU with compute capability greater than or equal to 8.6

CUDA toolkit 12.0

cmake version 3.5

For the python scripts, numpy and scipy are required

Download dataset

Our benchmark dataset contains 18 graphs: benchmark graphs

It can be downloaded from https://drive.google.com/file/d/1_sE65oveGpzRdCcExBmUaNG982lUB-Cx/view?usp=drive_link , or you can use the following command:

wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=1_sE65oveGpzRdCcExBmUaNG982lUB-Cx' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=1_sE65oveGpzRdCcExBmUaNG982lUB-Cx" -O 18graphs.tar.gz && rm -rf /tmp/cookies.txt

Place the downloaded file in the project directory, then unzip it (and rename it).

tar xzvf 18graphs.tar.gz
mv 18graphs graphs

Generate block-level partitioning meta-data.

mkdir block_level_meta
python block_level_partition.py

Compilation

mkdir build
cd build
cmake ..
make -j10

After compilation, an executable file named spmm_test is generated.

Benchmarking

Benchmark SPMM kernels on a specified graph and a specified right-hand matrix column dimension:

./spmm_test artist 60

If no parameters are attached, it will execute a traversal-style benchmark for all graphs and all right-multiply matrix column dimensions (controlled by dim_min, dim_max, and interval in main.cu):

./spmm_test

You can use a pipe to save the results:

./spmm_test > result.txt

Kernel design of Accel-GCN

The SPMM kernel of Accel-GCN incorporates block-level partitioning and a combined warp strategy for traversing the right-hand matrix column dimension. This approach exploits multi-level memory efficiency, memory coalescing, and alignment, which further optimizes execution efficiency.

architecture

Speedups over other SPMM kernels

On average, evaluation of Accel-GCN across 18 benchmark graphs demonstrates that Accel-GCN surpasses cuSPARSE, GNNAdvisor, and graph-BLAST by 17.3%, 86.3%, and 193.5% respectively.

speedup

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.