Reproduction of the ASPLOS'24 Hector paper, Hector: An Efficient Programming and Compilation Framework for Implementing Relational Graph Neural Networks in GPU Architectures. For the original implementation, please contact the author.
The following repos, as submodules in third_party/, are depended on to compile our code. Please recursively clone these submodules.
Besides, as we register our kernels in PyTorch (optional cmake build component), pytorch-dev and libtorch are also required.
We need to set BUILD_TEST and BUILD_BENCHMARK as they will be passed on to sub-repo sputnik and build necessary components.
mkdir build
cd build
cmake .. -DBUILD_TEST=ON -DBUILD_BENCHMARK=ON -DBUILD_GENERATED=ON -DCMAKE_PREFIX_PATH=`python -c 'import torch;print(torch.utils.cmake_prefix_path)'` -DBUILD_TORCH_API=ON
You may optionally set CUDA architecture by passing CUDA_ARCH_LIST to cmake. For example, to set the architecture to sm_70, you may use the following command.
-DCUDA_ARCH_LIST=70
For debugging purpose, you may invoke the following command after cmake configuration.
cmake --build . --verbose
To change the url of a submodule, use the following command:
git submodule set-url </reporoot/to/submodule_name> <new_url>
To set a different push url than the fetch url, inside the submodule directory, use the following command:
git remote set-url --push <branch_name> <new_url>
Try the following command to push in a submodule:
git push origin HEAD:master
Here is the reference for the naming of hrt and pyctor.