This is a repo of Mlsys'23 paper[to apppear] HyperGef, a novel system of designing efficient fusion kernel for Hypergraph Nerual Network. Here we focus on accelerating HGNNConv and UniGNNConv, which are classic models of hypergraph GNN. By kernel fusion and workload balance, our backend can bring significant speedup compared to previous SpMM backend. We compare our implementation to the cuSPARSE baseline in the kernel setting, and compare to the PyG and DGL framework in the end2end setting.
cuda >= 11.6
torch >= 1.11
dgl >= 0.9
pyg >= 2.1
pandas
sklearn
GPUtil
Note that currently pyg don't support torch 2.0+, so make sure you use pytorch 1.x version. Also, please download the optional dependencies of pyg like torch_scatter and torch_sparse libraries.
Please first config your $CUDA_HOME
environment. It probably locates at /usr/local/cuda
or something like that.
Then config the ncu_report environment:
export PYTHONPATH="${CUDA_HOME}/nsight-compute-xxxx.x.x/extras/python"
Build the project
bash build.sh
Download dataset
cd HyperGsys/data
bash prepare.sh
Run HGNN with our backend
cd HyperGsys
python ugsys.py --backend hgsys --model-name HGNN
Compared with other backend (DGL, PyG)
python ugsys.py --backend dgl --model-name HGNN
python ugsys.py --backend pyg --model-name HGNN
cd HyperGsys/source
make
./aggr_proto ../data/mtx_data/cora.mtx [feature_length,e.g: 32]
cd test
pytest
cd experiment
make
python fig6.py
python fig7.py
python fig8.py
python fig9.py
python fig10.py
The result of fig8 will appear in profile/tables directory. Other result will be presented in figX.csv file.