Skip to content

Latest commit

History

233 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Artifact for OSDI'23 paper

Yuke Wang, et al. Accelerating Graph Neural Networks with Fine-grained intra-kernel Communication-Computation Pipelining on Multi-GPU Platforms. OSDI'23.

DOI

1. Setup (Skip to Section-2 if evaluated on provided GCP)

1.1. Clone this project from Github.

git clone --recursive git@github.com:YukeWang96/MGG-OSDI23-AE.git

1.2. Download libraries and datasets.

  • Download libraries (cudnn-v8.2, nvshmem_src_2.0.3-0, openmpi-4.1.1).
wget https://storage.googleapis.com/mgg_data/local.tar.gz
tar -zxvf local.tar.gz && rm local.tar.gz
tar -zxvf local/nvshmem_src_2.0.3-0/build_cu112.tar.gz
  • Setup baseline DGL
cd dgl_pydirect_internal
wget https://storage.googleapis.com/mgg_data/graphdata.tar.gz && tar -zxvf graphdata.tar.gz && rm graphdata.tar.gz
cd ..
  • Setup baseline ROC
cd roc-new
git submodule update --init --recursive
wget https://storage.googleapis.com/mgg_data/data.tar.gz && tar -zxvf data.tar.gz && rm -rf data.tar.gz

or

gsutil cp -r gs://mgg_data/roc-new/ .

1.3. Launch Docker for MGG.

cd Docker ./launch.sh

1.4. Compile implementation.

mkdir build && cd build && cmake .. && cd ..
./build.sh

2. Run initial test experiment.

  • Please try study experiments in below Section-3.4 and Section-3.5

3. Reproduce the major results from paper.

3.1 Compare with UVM on 4xA100 and 8xA100 (Fig.8a and Fig.8b).

./0_run_MGG_UVM_4GPU_GCN.sh
./0_run_MGG_UVM_4GPU_GIN.sh
./0_run_MGG_UVM_8GPU_GCN.sh
./0_run_MGG_UVM_8GPU_GIN.sh

Note that the results can be found at Fig_8_UVM_MGG_4GPU_GCN.csv, Fig_8_UVM_MGG_4GPU_GIN.csv, Fig_8_UVM_MGG_8GPU_GCN.csv, and Fig_8_UVM_MGG_8GPU_GIN.csv.

3.2 Compare with DGL on 8xA100 for GCN and GIN (Fig.7a and Fig.7b).

./launch_docker.sh
cd gcn/
./0_run_gcn.sh
cd ../gin/
./0_run_gin.sh

Note that the results can be found at 1_dgl_gin.csv and 1_dgl_gcn.csv and our MGG reference is in MGG_GCN_8GPU.csv and MGG_8GPU_GIN.csv.

3.3 Compare with ROC on 8xA100 (Fig.9).

cd roc-new/docker
./launch.sh

Note that the results can be found at Fig_9_ROC_MGG_8GPU_GCN.csv and Fig_9_ROC_MGG_8GPU_GIN.csv.

Results of ROC is similar as

DatasetTime (ms)
reddit425.67
enwiki-2013619.33
it-20045160.18
paper100M8179.35
ogbn-products529.74
ogbn-proteins423.82
com-orkut571.62

3.4 Compare NP with w/o NP (Fig.10a).

python 2_MGG_NP.py

Note that the results can be found at MGG_NP_study.csv. Similar to following table.

DatasetMGG_WO_NPMGG_W_NPSpeedup (x)
Reddit76.79716.7164.594
enwiki-2013290.16988.2493.288
ogbn-product86.36226.0083.321

3.5 Compare WL with w/o WL (Fig.10b).

python 3_MGG_WL.py

Note that the results can be found at MGG_WL_study.csv. Results are similar to

DatasetMGG_WO_NPMGG_W_NPSpeedup (x)
Reddit75.03518.923.966
enwiki-2013292.022104.8782.784
ogbn-product86.63229.9412.893

3.6 Compare API (Fig.10c).

python 4_MGG_API.py

Note that the results can be found at MGG_API_study.csv. Results are similar to

Norm.Time w.r.t. ThreadMGG_ThreadMGG_WarpMGG_Block
Reddit1.00.2990.295
enwiki-20131.00.2670.263
ogbn-product1.00.3100.317

3.7 Design Space Search (Fig.11a)

python 5_MGG_DSE_4GPU.py

Note that the results can be found at Reddit_4xA100_dist_ps.csv and Reddit_4xA100_dist_wpb.csv. Results similar to

  • Reddit_4xA100_dist_ps.csv
dist\ps12481632
117.86617.45916.82116.24416.71117.125
217.24716.72216.43716.68217.05317.808
416.82616.4116.58317.21717.62718.298
816.27116.72517.19317.65518.42618.99
1616.59317.21417.61718.26619.00919.909
  • Reddit_4xA100_dist_wpb.csv
dist\wpb124816
134.77323.16416.57615.23516.519
234.59923.55717.25415.98119.56
434.83523.61617.67417.03422.084
834.72923.81718.30218.70825.656
1634.80324.16118.87923.4432.978
python 5_MGG_DSE_8GPU.py

Note that the results can be found at Reddit_8xA100_dist_ps.csv and Reddit_8xA100_dist_wpb.csv.

Reference

  • NVIDIA OpenSHMEM Library (NVSHMEM) Documentation.
    https://docs.nvidia.com/nvshmem/api/index.html

  • NVIDIA Unified Memory.
    https://developer.nvidia.com/blog/unified-memory-cuda-beginners/

  • cuDNN Example for MNIST.
    https://github.com/haanjack/mnist-cudnn

  • Deep Graph Library
    Wang, Minjie, et al. Deep graph library: A graph-centric, highly-performant package for graph neural networks.. The International Conference on Learning Representations (ICLR'19).

  • ROC
    Jia, Zhihao, et al. Improving the accuracy, scalability, and performance of graph neural networks with roc.Proceedings of Machine Learning and Systems 2 (MLsys'20).

  • GNNAdvisor
    Wang, Yuke, et al. GNNAdvisor: An adaptive and efficient runtime system for GNN acceleration on GPUs.15th USENIX symposium on operating systems design and implementation (OSDI'21).

  • GE-SpMM
    Huang, Guyue, et al. Ge-spmm: General-purpose sparse matrix-matrix multiplication on gpus for graph neural networks.International Conference for High Performance Computing, Networking, Storage and Analysis (SC'20).

About

OSDI'23-MGG-Artifact

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages