{"id":18800578,"url":"https://github.com/xtra-computing/g3","last_synced_at":"2025-04-13T17:31:25.372Z","repository":{"id":86257220,"uuid":"264848754","full_name":"Xtra-Computing/G3","owner":"Xtra-Computing","description":"G3: A Programmable GNN Training System on GPU","archived":false,"fork":false,"pushed_at":"2020-08-29T03:48:56.000Z","size":11429,"stargazers_count":43,"open_issues_count":1,"forks_count":8,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-27T08:22:32.943Z","etag":null,"topics":["deep-neural-networks","gnn","gnn-architectures","gpu","gpu-acceleration","gpu-computing","graph-neural-network","graph-processing","graph-systems","gunrock"],"latest_commit_sha":null,"homepage":"","language":"Cuda","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Xtra-Computing.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.TXT","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null}},"created_at":"2020-05-18T06:32:38.000Z","updated_at":"2025-02-04T22:59:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"b7d71d1a-2a15-4930-be9c-36cc27c00d30","html_url":"https://github.com/Xtra-Computing/G3","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xtra-Computing%2FG3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xtra-Computing%2FG3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xtra-Computing%2FG3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xtra-Computing%2FG3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Xtra-Computing","download_url":"https://codeload.github.com/Xtra-Computing/G3/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248752375,"owners_count":21156080,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deep-neural-networks","gnn","gnn-architectures","gpu","gpu-acceleration","gpu-computing","graph-neural-network","graph-processing","graph-systems","gunrock"],"created_at":"2024-11-07T22:19:09.382Z","updated_at":"2025-04-13T17:31:20.362Z","avatar_url":"https://github.com/Xtra-Computing.png","language":"Cuda","readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/gunrock/gunrock/\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/2193051/82186697-d54e4800-991d-11ea-9123-e0575a07bc4f.png\" width=\"200\"\u003e\u003c/a\u003e\n  \u003cbr\u003e\n\u003c/p\u003e\n\n## G3: A Programmable GNN Training System on GPU\n\n## What's new\nG3 is research prototype that is currently in active development. You are welcome to share ideas and contribute.\n\nThe web-based GUI can be found at https://g3-gui.web.app/. \n\nVLDB 2020 demo video (with a case study on predicting COVID in Singapore): https://www.youtube.com/watch?v=UJH0nh38wSg\n\n## Overview\n**G\u003csup\u003e**3**\u003c/sup\u003e** is built as a programming framework for Graph Neural Network (GNN) applications that supports graph related operations natively and leverages on the computation power of Graphics Processing Units (GPU). It is named G3, which stands for Graph processing system but tailored for GNN processing on GPUs. The values of G3 can be summarized as follow:\n\n- G3 thrives to fundamentally enhance the performance of GNN applications by incorporating graph oriented operators at the low level.\n- G3 provides a set of existing basic modules that can be stacked up to build up user-customized GNN architectures.\n- G3 provides ﬂexible C++ based APIs such that developers are able to deﬁne and implement their own GNN layers when such layers do not exist in our system.\n- G3 frees the programmers from low level GPU thread management and memory management concerns, which is usually daunting and injects numerous unnoticeable bugs into the system.\n- G3 automatically applies graph-centric optimizations on the GNN architectures during run time.\n\nWe have done some preliminary studies to show how such system can be used to build Graph Convolutional Network (GCN) , the state of the art in various GNN models, and how our implementation exceeds the performances of Tensorﬂow implementation (the original implementation) as well as PyTorch implementation by a signiﬁcant margin. Details are [here](https://www.comp.nus.edu.sg/~hebs/pub/vldb2020-G3.pdf).\n\nG3 is built based on **Gunrock**, a CUDA library for graph-processing designed specifically for the GPU. For more details, see [Gunrock's Github repo](https://github.com/gunrock/gunrock/). Most of the code is reused from Gunrock's code base. G3 added these components to Gunrock to efficiently support GNN training 1) [GCN App](/gunrock/app/gcn) and 2) [GCN Example](/examples/gcn).\n\n## Getting Started\n\n### Prerequisites\n```\nCMake \u003e= 3.10\nG++ \u003e= 7.5\nCUDA \u003e= 9.0\n```\n\n### Quick Install\n```\ngit clone --recursive https://github.com/Xtra-Computing/G3.git\ncd G3\nmkdir build\ncd build\ncmake ..\nmake -j\n```\nAfter that, you can run the example GCN application:\n```\ncd bin\n./gcn\n```\n\n## How to cite **G\u003csup\u003e**3**\u003c/sup\u003e** \nIf you use **G\u003csup\u003e**3**\u003c/sup\u003e**  in your paper, please cite our work ([full version](https://www.comp.nus.edu.sg/~hebs/pub/vldb2020-G3.pdf)).\n```\n@article{husong2020g3,\n author = {Liu, Husong and Lu, Shengliang and Chen, Xinyu and He, Bingsheng},\n title = {G3: When Graph Neural Networks Meet Parallel Graph Processing Systems on GPUs},\n journal = {PVLDB (Proceedings of the VLDB Endowment), demo paper},\n year = {2020}\n}\n```\n\n## Related work\n* Graph systems on GPU: [Gunrock](https://github.com/gunrock/gunrock/) | [Medusa](https://github.com/Xtra-Computing/Medusa)\n* Graph neural network systems: [PyTorch Geometric (PyG)](https://github.com/rusty1s/pytorch_geometric) | [Tensorflow](https://github.com/tensorflow/tensorflow) \n\n## Acknowledgement \n* We acknowledge Ee Ter Low, Long Sha, and Karan Sapra\nfor their contributions on developing the demo (with special support under COVID internship program (T1 251RES1824)). \n* This work is supported by a collaborative grant from Microsoft Research Asia.\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxtra-computing%2Fg3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxtra-computing%2Fg3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxtra-computing%2Fg3/lists"}