# use Python3
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
bash miniconda.sh -b -p $HOME/usr/miniconda
[edit ~/.bashrc]
export PATH=$HOME/usr/miniconda/bin:$PATH
# use SJTU conda mirror
conda config --remove-key channels
conda config --add channels https://mirror.sjtu.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirror.sjtu.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirror.sjtu.edu.cn/anaconda/pkgs/mro
conda config --add channels https://mirror.sjtu.edu.cn/anaconda/pkgs/msys2
conda config --add channels https://mirror.sjtu.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirror.sjtu.edu.cn/anaconda/cloud/conda-forge/
# show the channel urls
conda config --set show_channel_urls yes
# create a virtual environment
conda create -n sga python=3.8
conda activate sga
# remove a virtual environment
# conda env remove -n sgaPyTorch, PyTorch Geo (PyG), Open Graph Benchmark (OGB)
conda install rdflib pyg -c pyg # pyg
pip install pytorch torchvision torchaudio # pytorch
pip install --upgrade ogb # ogbgit config --global core.autocrlf input # git push setting
conda install graphviz python-graphviz # graphviz
# Other common packages (optional)
conda install xlutils matplotlib pandas requests networkx scipy numba-
We provide the scripts
build.shandclean.shfor convenience. -
Then go to the folder of
cppmain/evaluationand runexecutionorpartitionwith proper arguments. -
You can run
makeincppmain/evaluationto rebuild.
See examples in cppmain/scripts.
We recommend tmux to launch and manage processes in background. We do not use
the nohup command anymore for the difficulty in scaling up the experiments.
chmod +x *.shWe recommend valgrind to check the memory usage of the simulation.
Before starting up, you may put the following line into the CMakeLists.txt and rebuild to expose the information to valgrind.
add_compile_options(-g)| Name | Vertex# | Edge# | Feature# | Class# |
|---|---|---|---|---|
| Cora (CR) | 2,708 | 10,556 | 1,433 | 7 |
| CiteSeer (CS) | 3,327 | 9,104 | 3,703 | 6 |
| PubMed (PM) | 19,717 | 88,648 | 500 | 3 |
| Flickr (FL) | 89,250 | 899,756 | 500 | 7 |
| Arxiv (AX) | 169,343 | 1,166,243 | 128 | 40 |
| Reddit (RD) | 232,965 | 23,213,838 | 602 | 41 |
| Yelp (YP) | 716,847 | 13,954,819 | 300 | - |
| Product (PD) | 2,449,029 | 61,859,140 | 100 | 47 |
| Name | Vertex# | Edge# |
|---|---|---|
| cit-Patents (CP) | 3,774,768 | 16,518,948 |
| soc-LiveJournal1 (SL) | 4,847,571 | 43,369,619 |
| hollywood (HW) | 1,139,905 | 57,515,616 |
| europe_osm (EO) | 50,912,018 | 54,054,660 |
| soc-twitter-2010 (ST) | 21,297,772 | 265,025,809 |
- Tile coalesce
- Thread <= Stream
- Code refactored in hardware perspective.
- Class == Module
- Online tiling via TilingUnit (TU).
- Supporting CSR, CSC formats
- Compiler from DGL to IR.
- ISCA 2022 submission.
- Multiple graph reordering/clustering algorithms.
- basic reordering (Sort, Random).
- hub-based sorting (HubSort, HubCluster).
- degree-based grouping (DBG).
- minhash grouping (TVC).
- New controller for the multi-stream execution.
- MICRO 2021 submission.
- Instruction driven Architecture.
- Tile-based multi-stream execution.
- Degree-sorting-based vertex reordering.
- High-performance C++ simulator.
- Hint-guided execution with hilbert-curve tiling.
- Decoupling the hardware execution and software partition.
- Ramulator DRAM simulator integration.
- Unified SA for both ApplyEdge & ApplyVertex
- Energy consumption in hardware execution.
- HPCA 2021 submission.
- An extra SA for SAGA-NN execution.
- Hilbert space-filing curve for graph partition.
- HyGCN performance simulation reproduction.
- with pipelined SIMD and SA design