libgrape-lite是阿里巴巴的一个 C++ 库,用于并行图处理。它与先前系统的不同之处在于,它能够通过遵循GRAPE的PIE编程模型将顺序图算法作为一个整体进行并行化。顺序算法可以很容易地“插入” libgrape-lite,只需进行很小的更改,并且可以并行化以有效地处理大图。除了易于编程之外,libgrape-lite 还被设计为高效和灵活,以应对现实生活中的图形应用程序的规模、多样性和复杂性。
构建libgrape-lite
依赖关系
libgrape-lite是在 CentOS 7 上开发和测试的。它也应该适用于其他类 Unix 发行版。构建 libgrape-lite 需要安装以下软件作为依赖项。
- CMake (>=2.8)
- 符合 C++-11 标准的现代 C++ 编译器。(g++ >= 4.8.1 或 clang++ >= 3.3)
- MPICH (>= 2.1.4) 或OpenMPI (>= 3.0.0)
- glog (>= 0.3.4)
以下是可选功能的依赖项:
- jemalloc (>= 5.0.0) 更好的内存分配;
- Doxygen (>= 1.8) 用于生成文档;
- Linux HUGE_PAGES支持,以获得更好的性能。
示例需要额外的依赖项:
- gflags (>= 2.2.0);
- Apache Kafka (>= 2.3.0);
- librdkafka (>= 0.11.3);
构建 libgrape-lite 和示例
安装所需的依赖项后,转到 libgrape-lite 的根目录并使用 CMake 进行外源构建。
mkdir build && cd build cmake .. make -j
建筑物的目标包括一个共享/静态库,和两组的例子:analytical_apps和gnn_sampler。
或者,您可以使用以下命令构建特定目标:
make libgrape-lite # or make analytical_apps # or make gnn_sampler
运行 libgrape-lite 应用程序
图表格式
libgrape-lite 的输入按照LDBC Graph Analytics基准进行格式化,每个图有两个文件,一个.v
包含 1 或 2 列顶点的文件,它们是一个 vertex_id,后跟分配给顶点的数据;以及一个.e
包含 2 或 3 列的边文件,相应地表示源、目标和可选的边上的数据。见示例文件p2p-31.v
和p2p-31.e
下集目录。
示例应用
libgrape-lite提供了来自 LDBC 基准的六种算法作为示例。确定性算法有单源最短路径(SSSP)、连通分量(WCC)、PageRank、局部聚类系数(LCC)、标签传播社区检测(CDLP)和广度优先搜索(BFS)。
要运行特定的分析应用程序,用户可以使用如下命令:
# run single-source shortest path with 4 workers in local. mpirun -n 4 ./run_app --vfile ../dataset/p2p-31.v --efile ../dataset/p2p-31.e --application sssp --sssp_source 6 --out_prefix ./output_sssp --directed # or run connected component with 4 workers on a cluster. # HOSTFILE provides a list of hosts where MPI processes are launched. mpirun -n 4 -hostfile HOSTFILE ./run_app --application=wcc --vfile ../dataset/p2p-31.v --efile ../dataset/p2p-31.e --out_prefix ./output_wcc # see more flags info. ./run_app --help
LDBC 基准测试
分析应用程序支持 LDBC 分析基准套件与提供的ldbc_driver
. 有关详细信息,请参阅ldbc_driver。可以在此处找到 libgrape-lite 和其他最先进系统的基准测试结果。
GNN 采样器
除了离线图形分析,libgrape-lite 还可以用于处理更复杂的图形任务。作为示例,包含一个用于 GNN 训练/推理动态图的采样器(进行图更改和查询,并通过Kafka生成结果)。有关更多详细信息,请参阅examples/gnn_sampler。
文档
文档是使用 Doxygen 生成的。用户可以使用以下命令在 build 目录中构建 doxygen 文档:
cd build make doc # open docs/index.html
最新版本的在线文档可以在https://alibaba.github.io/libgrape-lite找到
执照
libgrape-lite在Apache License 2.0下分发。请注意,第三方库可能与 libgrape-lite 的许可不同。
致谢
- flat_hash_map,一个高效的 hashmap 实现;
- 冲剂,针对收集LDBC基准性能信息的工具;
- xoroshiro,一个伪随机数生成器。