用于并行图处理的 C++ 库libgrape-lite

用于并行图处理的 C++ 库libgrape-lite

libgrape-lite是阿里巴巴的一个 C++ 库,用于并行图处理。它与先前系统的不同之处在于,它能够通过遵循GRAPEPIE编程模型将顺序图算法作为一个整体进行并行化。顺序算法可以很容易地“插入” 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支持,以获得更好的性能。

示例需要额外的依赖项:

构建 libgrape-lite 和示例

安装所需的依赖项后,转到 libgrape-lite 的根目录并使用 CMake 进行外源构建。

mkdir build && cd build
cmake ..
make -j

建筑物的目标包括一个共享/静态库,和两组的例子:analytical_appsgnn_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.vp2p-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-liteApache License 2.0下分发。请注意,第三方库可能与 libgrape-lite 的许可不同。

致谢

  • flat_hash_map,一个高效的 hashmap 实现;
  • 冲剂,针对收集LDBC基准性能信息的工具;
  • xoroshiro,一个伪随机数生成器。


上一篇:Windows环境下,如何在Docker里运行SAP UI5应用


下一篇:SAP 电商云 Spartacus UI 如何在应用程序里捕捉到成功下单的事件