文件名称:DistBFS:级别同步呼吸优先搜索的MPI实现
文件大小:112KB
文件格式:ZIP
更新时间:2024-06-20 08:15:40
C
DistBFS 如果您对代码感兴趣,请查看 devel 分支,它是 master 分支的优化版本。 水平同步呼吸优先搜索的 MPI 实现[1]。 该算法维护两个队列:FS 和 NS。 FS 包含在当前超步中活动的顶点,而 NS 包含将在下一个超步中活动的顶点。 由于每个秩只有整个图的一部分,当你遍历 FS 中顶点的邻居时,你需要检查它是否是远程的。 案例1(它是一个远程顶点):您需要向其所有者发送一条消息,告诉他如果尚未访问该顶点,则将该顶点放入NS中。 (将所有这些新访问的远程顶点 id 存储在缓冲区中,并在通信阶段发送给它们的所有者) 情况2(它是一个局部顶点):必要时将其插入到NS中。 事实上,在实现中,每个超级步分为两个阶段:计算阶段(访问 FS 的邻居)和通信阶段(通知新访问远程顶点的所有者)。 可以看出,在 MPI Ranks 之间分布图的方式对性能有很大影响。
【文件预览】:
DistBFS-master
----graph.txt(3KB)
----include()
--------GraphStruct.h(2KB)
--------ArrayList.h(529B)
--------BFS.h(348B)
----src()
--------DistBFS.c(6KB)
--------BFSUntil.c(7KB)
--------ArrayList.c(1KB)
--------GraphStruct.c(4KB)
----README.md(2KB)
----build.sh(158B)
----build()
--------DistBFS.o(115KB)
--------ArrayList.o(57KB)
--------BFSUntil.o(105KB)
--------GraphStruct.o(79KB)