ChunelFeng/CGraph

【A common used C++ & Python DAG framework】 一个通用的、无三方依赖的、跨平台的、收录于awesome-cpp的、基于流图的并行计算框架。欢迎star & fork & 交流

解決的問題

CGraph 提供了一種將複雜的任務序列組織並以有向無環圖(DAG)執行的方法。它解決了管理任務依賴關係的問題,能夠自動並行執行無依賴的任務,同時確保依賴任務僅在前置條件完成後才執行。

工作原理

使用者透過繼承 GNode 類別並實作 run() 方法來定義任務。這些節點隨後被註冊至 GPipeline,並指定依賴關係。框架的底層排程器負責處理執行流程,支援以下進階邏輯:

  • 並行性:無依賴的節點並行執行。
  • 分組GGroup 支援條件邏輯、迴圈與聚合執行。
  • 排程:支援任務的暫停、恢復與逾時設定。
  • 跨語言:雖以純 C++11 寫成,但提供 Python API(pycgraph),並具備 C#、Java 與 Go 的原生實作。

適用對象

專為需要跨平台、無依賴框架來建構執行流水線、工作流引擎,或任何需要結構化任務排程與平行處理的系統開發人員設計。

特色亮點

  • 零依賴:僅使用純 C++11 標準函式庫建構。
  • 跨平台:相容於 macOS、Linux、Windows 與 Android。
  • 高階流程控制:支援迴圈、條件分支與非同步執行。
  • 可擴充性:包含面向切面程式設計(aspect)、函式注入以及管道間基於訊息的通訊等功能。
  • 效能工具:內建效能分析(perf)與 Graphviz 可視化功能,可用於呈現執行圖。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案