{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/gcod-graph-convolutional-network-acceleration","title":"GCoD: Graph Convolutional Network Acceleration via Dedicated Algorithm and Accelerator Co-Design","arxiv_id":"2112.11594","date":"2021-12-22","proceeding":null,"authors":["Haoran You","Tong Geng","Yongan Zhang","Ang Li","Yingyan Celine Lin"],"abstract":"Graph Convolutional Networks (GCNs) have emerged as the state-of-the-art graph learning model. However, it can be notoriously challenging to inference GCNs over large graph datasets, limiting their application to large real-world graphs and hindering the exploration of deeper and more sophisticated GCN graphs. This is because real-world graphs can be extremely large and sparse. Furthermore, the node degree of GCNs tends to follow the power-law distribution and therefore have highly irregular adjacency matrices, resulting in prohibitive inefficiencies in both data processing and movement and thus substantially limiting the achievable GCN acceleration efficiency. To this end, this paper proposes a GCN algorithm and accelerator Co-Design framework dubbed GCoD which can largely alleviate the aforementioned GCN irregularity and boost GCNs' inference efficiency. Specifically, on the algorithm level, GCoD integrates a split and conquer GCN training strategy that polarizes the graphs to be either denser or sparser in local neighborhoods without compromising the model accuracy, resulting in graph adjacency matrices that (mostly) have merely two levels of workload and enjoys largely enhanced regularity and thus ease of acceleration. On the hardware level, we further develop a dedicated two-pronged accelerator with a separated engine to process each of the aforementioned denser and sparser workloads, further boosting the overall utilization and acceleration efficiency. Extensive experiments and ablation studies validate that our GCoD consistently reduces the number of off-chip accesses, leading to speedups of 15286x, 294x, 7.8x, and 2.5x as compared to CPUs, GPUs, and prior-art GCN accelerators including HyGCN and AWB-GCN, respectively, while maintaining or even improving the task accuracy. Codes are available at https://github.com/RICE-EIC/GCoD.","url_abs":"https://arxiv.org/abs/2112.11594v3","url_pdf":"https://arxiv.org/pdf/2112.11594v3.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"gcod-graph-convolutional-network-acceleration","repo_url":"https://github.com/rice-eic/gcod","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"graph-learning","task_name":"Graph Learning"}],"methods":[{"method_slug":"gcn","method_name":"GCN"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2112.11594","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2112.11594"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/rice-eic/gcod","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran_draft_wrong":1,"unverified":7},"by_repo_kind":{"official":{"samples":8,"ran":1,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"750c588ade0c659c","entry":"calculate_qparams","repo":"rice-eic/gcod","repo_kind":"official","path":"models/quantize.py","file_url":"https://github.com/rice-eic/gcod/blob/HEAD/models/quantize.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"750c588ade0c659c"}},{"code_sha256_prefix":"5ba7856e1a05ccb7","entry":"adj_to_edge","repo":"rice-eic/gcod","repo_kind":"official","path":"network.py","file_url":"https://github.com/rice-eic/gcod/blob/HEAD/network.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"5ba7856e1a05ccb7"}},{"code_sha256_prefix":"062282f6072504c6","entry":"conv2d_biprec","repo":"rice-eic/gcod","repo_kind":"official","path":"models/quantize.py","file_url":"https://github.com/rice-eic/gcod/blob/HEAD/models/quantize.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"062282f6072504c6"}},{"code_sha256_prefix":"e937df8ccfb708eb","entry":"edge_to_adj","repo":"rice-eic/gcod","repo_kind":"official","path":"network.py","file_url":"https://github.com/rice-eic/gcod/blob/HEAD/network.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e937df8ccfb708eb"}},{"code_sha256_prefix":"5c1912386ea62651","entry":"get_dataset","repo":"rice-eic/gcod","repo_kind":"official","path":"datasets.py","file_url":"https://github.com/rice-eic/gcod/blob/HEAD/datasets.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"5c1912386ea62651"}},{"code_sha256_prefix":"297d5d898de1171b","entry":"linear_biprec","repo":"rice-eic/gcod","repo_kind":"official","path":"models/quantize.py","file_url":"https://github.com/rice-eic/gcod/blob/HEAD/models/quantize.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"297d5d898de1171b"}},{"code_sha256_prefix":"ddbf8cfff1976036","entry":"my_get_bd","repo":"rice-eic/gcod","repo_kind":"official","path":"get_boundary.py","file_url":"https://github.com/rice-eic/gcod/blob/HEAD/get_boundary.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ddbf8cfff1976036"}},{"code_sha256_prefix":"e4fd85762e9b0d67","entry":"my_get_boundary","repo":"rice-eic/gcod","repo_kind":"official","path":"get_boundary.py","file_url":"https://github.com/rice-eic/gcod/blob/HEAD/get_boundary.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e4fd85762e9b0d67"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}