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