大數據

用於並行圖處理的 C++ 庫libgrape-lite

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,一個偽隨機數生成器。

Leave a Reply

Your email address will not be published. Required fields are marked *