PruX:优化图 500 中并行广度优先搜索算法的通信剪枝方法
1. 并行广度优先搜索算法优化
在图 500 基准测试中,并行广度优先搜索(BFS)算法的性能评估标准是 TEPS(每秒遍历的边数)。具体计算方式如下:
- 定义 num_travali 为第 i 次迭代中 BFS 遍历的边数, bfs_timei 为第 i 次迭代的运行时间。则第 i 次迭代的 TEPS 为:
[TEPS_i = \frac{num_travali}{bfs_timei}]
- 生成 64 个唯一的根顶点,运行 64 次 BFS,取 TEPS 的平均值(mean TEPS)作为最终标准:
[mean\ TEPS = \frac{\sum_{i = 1}^{64} TEPS_i}{64}]
当遍历边数几乎恒定时,可通过减少 BFS 时间来提升算法性能。BFS 时间由计算时间和通信时间组成,为提升性能,重点在于减少机器间的通信时间。经实验发现,图 500 中并行 BFS 的原始实现存在大量无效通信,因此对其通信模式进行修改以减少无效通信。
2. 图存储
PruX 的实现基于图 500 并行 BFS 的原始实现,采用 1D 分区方法进行图分区。图数据先存储为邻接矩阵,再转换为压缩稀疏行(CSR)矩阵。
邻接矩阵转换为 CSR 矩阵的过程如下:
假设邻接矩阵是一个 n'×n' 的稀疏矩阵,存储的边数为 m 。则:
PruX:并行BFS通信剪枝优化
超级会员免费看
订阅专栏 解锁全文
7085

被折叠的 条评论
为什么被折叠?



