[论文解读] Dynamic Load Balancing Strategies for Graph Applications on GPUs
本文提出三种动态负载均衡策略——工作负载分解、节点拆分和分层工作列表,用于GPU上的图应用,以解决不规则工作负载导致的性能下降问题。通过结合基于边的负载均衡与基于节点的结构,并适应运行时工作分布的变化,这些方法在大规模图上将执行时间减少了高达75%,优于静态的基于节点和基于边的方法。
Acceleration of graph applications on GPUs has found large interest due to the ubiquitous use of graph processing in various domains. The inherent extit{irregularity} in graph applications leads to several challenges for parallelization. A key challenge, which we address in this paper, is that of load-imbalance. If the work-assignment to threads uses node-based graph partitioning, it can result in skewed task-distribution, leading to poor load-balance. In contrast, if the work-assignment uses edge-based graph partitioning, the load-balancing is better, but the memory requirement is relatively higher. This makes it unsuitable for large graphs. In this work, we propose three techniques for improved load-balancing of graph applications on GPUs. Each technique brings in unique advantages, and a user may have to employ a specific technique based on the requirement. Using Breadth First Search and Single Source Shortest Paths as our processing kernels, we illustrate the effectiveness of each of the proposed techniques in comparison to the existing node-based and edge-based mechanisms.
研究动机与目标
- 解决由于节点度数不规则、分布不均导致的GPU加速图应用中负载不平衡引发的性能瓶颈。
- 克服静态基于节点和基于边的任务分配方法的局限性,后者因负载不平衡或高内存开销而表现不佳。
- 开发动态、自适应的负载均衡策略,以响应图算法执行过程中工作负载的变化。
- 在多种图类型和核函数(BFS、SSSP)上评估策略,以识别上下文相关的最优方法。
- 通过最小化内存占用并最大化负载均衡,实现GPU上大规模图工作负载的高效执行,尤其在内存受限的环境下。
提出的方法
- 工作负载分解将活跃节点的边分配给线程,结合基于边的负载均衡与基于节点的结构,以减少内存开销。
- 节点拆分通过将高阶节点动态分解为多个低阶虚拟节点,实现工作在各线程间更均衡的分布。
- 分层处理使用主工作列表和动态创建的子工作列表,以在各线程间实现负载均衡,并根据子工作列表大小调整线程数量。
- 这些策略被集成到LoneStar-GPU框架中,并使用BFS和SSSP核函数在真实世界和合成图上进行了评估。
- 提出一种新颖启发式方法,自动确定节点拆分策略中虚拟节点的最优数量,避免手动调优。
- 所有方法均设计为兼容CSR图格式,相比基于COO的边处理方式,显著降低了内存开销。
实验结果
研究问题
- RQ1在不规则图上,工作负载分解与传统的基于节点和基于边的任务分配相比,在负载均衡和性能方面表现如何?
- RQ2节点拆分在高阶节点较多的图中能在多大程度上减少负载不平衡?与虚拟节点方法相比表现如何?
- RQ3在边处理方法因内存限制而失效的大规模图中,分层工作列表处理能否有效管理负载不平衡?
- RQ4在哪些图特征(如直径、度分布)下,每种所提策略优于静态负载均衡方法?
- RQ5与基线实现相比,动态负载均衡对计算密集型图核函数(如SSSP)的性能影响如何?
主要发现
- 基于边的处理在BFS上比基线提升10%,在SSSP上提升60–80%,表明其在负载均衡工作负载中具有明显优势。
- 对于小直径图,工作负载分解优于其他基于节点的策略,在负载均衡方面优于标准的基于节点的分配方式。
- 对于大直径图,节点拆分在基于节点的策略中表现最佳,有效缓解了高阶节点带来的负载不平衡。
- 在边处理方法因内存限制而失效的超大规模图上,分层处理方法相比基线将执行时间减少了48–75%。
- 没有一种策略在所有情况下均全面优于其他策略;性能显著依赖于图类型和算法,表明需要上下文感知的选择机制。
- 所提策略在SSSP上显著提升了性能,基线的基于节点方法因严重负载不平衡而表现不佳,所有动态策略均实现了至少20%的性能提升。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。