Compiling Graph Applications for GPUs with GraphIt

被引:11
作者
Brahmakshatriya, Ajay [1 ]
Zhang, Yunming [1 ]
Hong, Changwan [1 ]
Kamil, Shoaib [2 ]
Shun, Julian [1 ]
Amarasinghe, Saman [1 ]
机构
[1] MIT, CSAIL, Cambridge, MA 02139 USA
[2] Adobe Res, San Jose, CA USA
来源
CGO '21: PROCEEDINGS OF THE 2021 IEEE/ACM INTERNATIONAL SYMPOSIUM ON CODE GENERATION AND OPTIMIZATION (CGO) | 2021年
关键词
Compiler Optimizations; Graph Processing; GPUs; Domain-Specific Languages; ALGORITHMS; ANALYTICS;
D O I
10.1109/CGO51591.2021.9370321
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
The performance of graph programs depends highly on the algorithm, the size and structure of the input graphs, as well as the features of the underlying hardware. No single set of optimizations or one hardware platform works well across all settings. To achieve high performance, the programmer must carefully select which set of optimizations and hardware platforms to use. The GraphIt programming language makes it easy for the programmer to write the algorithm once and optimize it for different inputs using a scheduling language. However, GraphIt currently has no support for generating high-performance code for GPUs. Programmers must resort to re-implementing the entire algorithm from scratch in a low-level language with an entirely different set of abstractions and optimizations in order to achieve high performance on GPUs. We propose G2, an extension to the GraphIt compiler framework, that achieves high performance on both CPUs and GPUs using the same algorithm specification. G2 significantly expands the optimization space of GPU graph processing frameworks with a novel GPU scheduling language and compiler that enables combining load balancing, edge traversal direction, active vertexset creation, active vertexset processing ordering, and kernel fusion optimizations. G2 also introduces two performance optimizations, Edge-based Thread Warps CTAs load balancing (ETWC) and EdgeBlocking, to expand the optimization space for GPUs. ETWC improves load balancing by dynamically partitioning the edges of each vertex into blocks that are assigned to threads, warps, and CTAs for execution. EdgeBlocking improves the locality of the program by reordering the edges and restricting random memory accesses to fit within the L2 cache. We evaluate G2 on 5 algorithms and 9 input graphs on both Pascal and Volta generation NVIDIA GPUs, and show that it achieves up to 5.11x speedup over state-of-the-art GPU graph processing frameworks, and is the fastest on 66 out of the 90 experiments.
引用
收藏
页码:248 / 261
页数:14
相关论文
共 50 条
  • [1] Experience Deploying Graph Applications on GPUs with SYCL
    Jin, Zheming
    Vetter, Jeffrey S.
    PROCEEDINGS OF THE 52ND INTERNATIONAL CONFERENCE ON PARALLEL PROCESSING WORKSHOPS PROCEEDINGS, ICPP-W 2023, 2023, : 30 - 39
  • [2] Optimizing Ordered Graph Algorithms with GraphIt
    Zhang, Yunming
    Brahmakshatriya, Ajay
    Chen, Xinyi
    Dhulipala, Laxman
    Kamil, Shoaib
    Amarasinghe, Saman
    Shun, Julian
    CGO'20: PROCEEDINGS OF THE18TH ACM/IEEE INTERNATIONAL SYMPOSIUM ON CODE GENERATION AND OPTIMIZATION, 2020, : 158 - 170
  • [3] Graph-Waving architecture: Efficient execution of graph applications on GPUs
    Yilmazer-Metin, Ayse
    JOURNAL OF PARALLEL AND DISTRIBUTED COMPUTING, 2021, 148 : 69 - 82
  • [4] GraphIt: A High-Performance Graph DSL
    Zhang, Yunming
    Yang, Mengjiao
    Baghdadi, Riyadh
    Kamil, Shoaib
    Shun, Julian
    Amarasinghe, Saman
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2018, 2
  • [5] Efficient Load Balancing Techniques for Graph Traversal Applications on GPUs
    Busato, Federico
    Bombieri, Nicola
    EURO-PAR 2018: PARALLEL PROCESSING, 2018, 11014 : 628 - 641
  • [6] GraphPEG: Accelerating Graph Processing on GPUs
    Lu, Yashuai
    Guo, Hui
    Huang, Libo
    Yu, Qi
    Shen, Li
    Xiao, Nong
    Wang, Zhiying
    ACM TRANSACTIONS ON ARCHITECTURE AND CODE OPTIMIZATION, 2021, 18 (03)
  • [7] Medusa: Simplified Graph Processing on GPUs
    Zhong, Jianlong
    He, Bingsheng
    IEEE TRANSACTIONS ON PARALLEL AND DISTRIBUTED SYSTEMS, 2014, 25 (06) : 1543 - 1552
  • [8] An Overview of Medusa: Simplified Graph Processing on GPUs
    Zhong, Jianlong
    He, Bingsheng
    ACM SIGPLAN NOTICES, 2012, 47 (08) : 283 - 284
  • [9] Graph Processing on GPUs: A Survey
    Shi, Xuanhua
    Zheng, Zhigao
    Zhou, Yongluan
    Jin, Hai
    He, Ligang
    Liu, Bo
    Hua, Qiang-Sheng
    ACM COMPUTING SURVEYS, 2018, 50 (06)
  • [10] Optimizing Graph Processing on GPUs
    Zhong, Wenyong
    Sun, Jianhua
    Chen, Hao
    Xiao, Jun
    Chen, Zhiwen
    Cheng, Chang
    Shi, Xuanhua
    IEEE TRANSACTIONS ON PARALLEL AND DISTRIBUTED SYSTEMS, 2017, 28 (04) : 1149 - 1162