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

简介: libgrape-lite是阿里巴巴的一个 C++ 库,用于并行图处理。它与先前系统的不同之处在于,它能够通过遵循GRAPE的PIE编程模型将顺序图算法作为一个整体进行并行化。

image.png

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,一个伪随机数生成器。


相关文章
|
1月前
|
API C++ Windows
Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法
本文介绍Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法,提供官方下载链接与系统修复工具使用指南。
527 2
|
1月前
|
Ubuntu API C++
C++标准库、Windows API及Ubuntu API的综合应用
总之,C++标准库、Windows API和Ubuntu API的综合应用是一项挑战性较大的任务,需要开发者具备跨平台编程的深入知识和丰富经验。通过合理的架构设计和有效的工具选择,可以在不同的操作系统平台上高效地开发和部署应用程序。
108 11
|
1月前
|
缓存 算法 程序员
C++STL底层原理:探秘标准模板库的内部机制
🌟蒋星熠Jaxonic带你深入STL底层:从容器内存管理到红黑树、哈希表,剖析迭代器、算法与分配器核心机制,揭秘C++标准库的高效设计哲学与性能优化实践。
C++STL底层原理:探秘标准模板库的内部机制
|
1月前
|
IDE 编译器 开发工具
msvcp100.dll,msvcp120.dll,msvcp140.dll,Microsoft Visual C++ 2015 Redistributable,Visual C++ 运行库安装
MSVC是Windows下C/C++开发核心工具,集成编译器、链接器与调试器,配合Visual Studio使用。其运行时库(如msvcp140.dll)为程序提供基础函数支持,常因缺失导致软件无法运行。通过安装对应版本的Microsoft Visual C++ Redistributable可解决此类问题,广泛应用于桌面软件、游戏及系统级开发。
293 2
|
2月前
|
并行计算 C++ Windows
|
算法 C++ 容器
C++标准库(速查)总结
C++标准库(速查)总结
318 6
|
存储 算法 C++
C++ STL 初探:打开标准模板库的大门
C++ STL 初探:打开标准模板库的大门
274 10
|
10月前
|
JSON C++ 数据格式
C++20 高性能基础库--兰亭集库助力开发者构建高性能应用
这次分享的主题是《高性能基础库--兰亭集库助力开发者构建高性能应用》的实践经验。主要分为三个部分: 1. 业务背景 2. 雅兰亭库架构 3. 业务优化
318 9
|
10月前
|
XML 网络协议 API
超级好用的C++实用库之服务包装类
通过本文对Boost.Asio、gRPC和Poco三个超级好用的C++服务包装类库的详细介绍,开发者可以根据自己的需求选择合适的库来简化开发工作,提高代码的效率和可维护性。每个库都有其独特的优势和适用场景,合理使用这些库可以极大地提升C++开发的生产力。
247 11

热门文章

最新文章