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 可視化功能,可用於呈現執行圖。
相關
- 專案
- 專案
- 專案
- 專案
- 專案