GSoC 2018 - 图分析算法的并行实现

2019 年 2 月 3 日 | Soham Tamba

这篇博客简要总结了我的 GSoC 2018 项目(并行图开发)以及取得的结果。有关详细说明,请参阅我的 GSoC 博客

该项目分布在 LightGraphs 代码库中。它涉及

  1. 生成关键图算法的并行实现。

  2. 改进 LightGraphs 中关键图算法的顺序实现。

  3. 实施启发式方法以获得关键 NP-Hard 图问题的良好解决方案。

基准测试是在使用 4 个内核的 64 位 Linux 机器上进行的。

基准图数据集

编号顶点
1推特社交圈81,3061,342,310
2天体物理合作17,903197,031
3Facebook 社交圈4,03988,234

这些图来自 SNAPDatasets 仓库。

使用 4 个内核的并行化加速

算法推特天体物理Facebook
广度优先搜索1.922.591.54
PageRank1.771.541.65
Bellman Ford 单源最短路径--1.88
Floyd Warshall 全对最短路径--1.27
Johnson 全对最短路径--2.10
随机启发式1.881.701.66
介数中心性--1.96
接近中心性--2.17
压力中心性--1.66

顺序优化加速

算法推特天体物理Facebook
PageRank3.053.373.17
Dijkstra 单源最短路径2.802.101.68
Prim 最小生成树7.654.254.05
Kruskal 最小生成树7.703.372.80
算法推特天体物理Facebook
并行7.071.200.26
顺序13.633.110.41

获取代码

本节列出了已实现的功能以及指向我 克隆的 LightGraphs 仓库 中相应分支的链接。

已完成并合并

以下分支已合并到 LightGraphs master 中

已完成但不可用

以下分支未合并到 LightGraphs master 中,因为该功能不适合 LightGraphs

需要改进

以下分支未合并到 LightGraphs 中,因为并行实现比顺序实现慢

致谢

我要感谢我的导师 Divyansh Srivastava 和 LightGraphs 共同所有者 Seth Bromberger 在夏季审查我的代码并提供宝贵的建议。我还感谢 Julia 项目NUMFocus 赞助我参加 JuliaCon 2018