[论文解读] SIMD-X: Programming and Processing of Graph Algorithms on GPUs
该论文提出 simd-x,一种GPU框架,通过将编程简洁性与系统级优化解耦,实现了不规则图算法的高性能执行。它引入了直观的主动-计算-合并(ACC)模型,采用运行时自适应过滤的即时任务管理实现工作负载均衡,并通过无死锁的推送-拉取内核融合减少内核启动次数和内存流量,相较于最先进的框架(如Ligra)最高可实现24倍的性能提升。
With high computation power and memory bandwidth, graphics processing units (GPUs) lend themselves to accelerate data-intensive analytics, especially when such applications fit the single instruction multiple data (SIMD) model. However, graph algorithms such as breadth-first search and k-core, often fail to take full advantage of GPUs, due to irregularity in memory access and control flow. To address this challenge, we have developed SIMD-X, for programming and processing of single instruction multiple, complex, data on GPUs. Specifically, the new Active-Compute-Combine (ACC) model not only provides ease of programming to programmers, but more importantly creates opportunities for system-level optimizations. To this end, SIMD-X utilizes just-in-time task management which filters out inactive vertices at runtime and intelligently maps various tasks to different amount of GPU cores in pursuit of workload balancing. In addition, SIMD-X leverages push-pull based kernel fusion that, with the help of a new deadlock-free global barrier, reduces a large number of computation kernels to very few. Using SIMD-X, a user can program a graph algorithm in tens of lines of code, while achieving 3?, 6?, 24?, 3? speedup over Gunrock, Galois, CuSha, and Ligra, respectively.
研究动机与目标
- 解决由于不规则内存访问和控制流导致的GPU上不规则图算法性能瓶颈。
- 在无需了解底层GPU架构知识的前提下,简化图工作负载的GPU编程。
- 在运行时实现工作负载均衡和内核融合等系统级优化。
- 解决GPU图处理中内核融合时全局软件屏障导致的死锁问题。
- 在不同图算法和GPU架构上,以极少的代码量实现高性能。
提出的方法
- 主动-计算-合并(ACC)模型将图算法抽象为三种数据并行函数:顶点激活条件、边计算和状态合并,实现高层级、直观的编程。
- 即时(JIT)任务管理根据工作负载大小动态选择在线过滤或选票过滤,以最小化内存消耗并平衡GPU核心间的工作负载。
- 一种新颖的无死锁全局屏障机制,可安全地在内核边界融合推送和拉取阶段,消除同步风险。
- 基于推送-拉取的内核融合通过融合相邻内核,减少内核启动次数和全局内存流量,同时最小化寄存器使用和线程块重新启动。
- 该框架支持根据硬件动态配置线程数量,最大化K20、K40和P100等不同GPU的占用率和性能。
- 系统将编程抽象与底层优化解耦,使用户仅需数十行代码即可编写图算法,同时实现高性能。
实验结果
研究问题
- RQ1如何设计一种高层级编程模型,以简化不规则图算法在GPU上的实现,同时不牺牲性能?
- RQ2何种运行时任务管理策略能有效平衡GPU核心间的工作负载,同时最小化不规则图工作负载的内存开销?
- RQ3如何安全地在GPU图处理中跨全局屏障应用内核融合,以减少启动开销和内存流量?
- RQ4自适应过滤(在线 vs. 选票)对活跃顶点列表构建及整体性能的影响是什么?
- RQ5系统级优化(如内核融合和动态线程配置)在不同图算法和GPU架构上,能在多大程度上提升性能?
主要发现
- simd-x 在各种图算法和数据集上,相较于Gunrock最高提升3倍,Galois提升6倍,CuSha提升24倍,Ligra提升3倍。
- JIT任务管理组件通过减少内存消耗和改善内存访问模式,相较基线系统平均提升16倍性能。
- 内核融合相比非融合内核将寄存器消耗降低50%,使可配置线程数翻倍,相较非融合方案性能提升42%,相较激进融合方案提升25%。
- 在P100上实现5.1倍性能提升,在K40上实现1.7倍性能提升,相较K20;而Gunrock和CuSha仅分别实现1.7倍和3.5倍提升,归因于动态线程配置。
- 该框架支持以数十行代码实现图算法,相比需要数千行CUDA代码的系统,显著降低了复杂度。
- 无死锁全局屏障支持在软件屏障边界安全融合内核,解决了Gunrock和CuSha等系统中长期未解决的问题。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。