一句话:提出一种把全局同步转化为全局通信的软件架构,借消息传递与块内 scratchpad 实现高效的 GPU 细粒度全局同步。
通用 GPU 编程长期难以支持全局内存上的高效细粒度同步,这限制了不规则问题的并行化。本文提出一种新的软件架构:其核心思想是把全局同步转化为全局通信,使冲突在线程块(thread block)粒度上被串行化,而每个线程块内部的线程则通过低延迟、高带宽的本地 scratchpad memory 完成同步。为支撑该架构,作者实现了一个可扩展且高效的消息传递库,并据此把细粒度全局同步能力引入通用 GPU 编程。评估在 Nvidia GTX 1080 Ti GPU 上进行,作者用该架构求解五个不规则问题并在多种工作负载下与经过仔细调优的最新方案对比,平均取得 3.6 倍的性能提升。
This paper extends the reach of General Purpose GPU programming by presenting a software architecture that supports efficient fine-grained synchronization over global memory. The key idea is to transform global synchronization into global communication so that conflicts are serialized at the thread block level. With this structure, the threads within each thread block can synchronize using low latency, high-bandwidth local scratchpad memory. To enable this architecture, we implement a scalable and efficient message passing library. Using Nvidia GTX 1080 ti GPUs, we evaluate our new software architecture by using it to solve a set of five irregular problems on a variety of workloads. We find that on average, our solutions improve performance over carefully tuned state-of-the-art solutions by 3.6×.