Sogouのバックエンドサービスで使われているC++11並列計算・非同期ネットワークフレームワーク。DAGベースのタスクワークフローを構築できます。
ChunelFeng/CGraph
依存ライブラリ不要のC++11向けDAGフレームワーク。並列タスクグラフの構築・実行に対応し、Pythonバインディング(pycgraph)も提供します。
- スター
- 2,316
- フォーク
- 392
- 未解決の Issue
- 13
- 最終コミット
- 4 日前
これは何?
CGraphは、タスクの有向非巡回グラフを記述・実行するクロスプラットフォームのC++フレームワークです。ノードクラスを継承してrun()メソッドを実装し、ノード間の依存関係を宣言すると、スケジューラが依存ノードを順番に、独立したノードを並列に実行します。pause、resume、タイムアウトにも対応しています。
通常の依存関係に加えて、条件分岐、ループ、並列実行のためのグループを備えています。また、パラメータの受け渡し、イベント、メッセージ、横断的な処理を実現するアスペクトにも対応しています。C++11標準ライブラリを使用しており、macOS、Linux、Windows、Androidでビルドできます。Pythonパッケージpycgraphとしても利用できます。
外部依存を追加せずに、アルゴリズムのワークフローや推論の前処理・後処理など、ネイティブコードで複数ステップの処理パイプラインを組み立てたい開発者向けのプロジェクトです。
主な機能
- 01依存ノードを順番に、独立したノードを並列に実行
- 02条件分岐、ループ、グループ単位の実行に対応
- 03一時停止・再開とノードごとのタイムアウト制御に対応
- 04ノード間でパラメータ、メッセージ、イベントを受け渡し
- 05サードパーティ製依存ライブラリが不要で、C++11に対応し、Pythonバインディングも提供
ユースケース
- C++アプリケーションで複数段階のアルゴリズムやデータ処理パイプラインを制御
- AI推論の前処理・後処理を依存関係グラフとして構成
- 外部ライブラリを追加せずに、組み込みまたはAndroidプロジェクトへタスクグラフスケジューラを組み込む
クイックスタート
- 1
PyPIからPythonバインディングをインストールする
pip install pycgraph - 2
READMEにあるPythonのデモをスクリプトとして保存し、Pythonで実行する
使う前に知っておきたいこと
- READMEにはC++版をパッケージマネージャーでインストールする方法が記載されていません。別途用意されたCOMPILE.mdのガイドに従って、ソースからビルドする必要があります。
- メインのREADMEは中国語で書かれており、そこからリンクされた英語版のREADMEが別途あります。
収録されている特集
トピック
よくある質問
- CGraph とは?
- 依存ライブラリ不要のC++11向けDAGフレームワーク。並列タスクグラフの構築・実行に対応し、Pythonバインディング(pycgraph)も提供します。 CGraphは、タスクの有向非巡回グラフを記述・実行するクロスプラットフォームのC++フレームワークです。ノードクラスを継承してrun()メソッドを実装し、ノード間の依存関係を宣言すると、スケジューラが依存ノードを順番に、独立したノードを並列に実行します。pause、resume、タイムアウトにも対応しています。
- CGraph は無料で使えますか?ライセンスは?
- CGraph は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- CGraph は今もメンテナンスされていますか?
- 活発にメンテナンス中。CGraph の最終コミットは 2026年11月3日 です。
- CGraph は何に使えますか?
- C++アプリケーションで複数段階のアルゴリズムやデータ処理パイプラインを制御 AI推論の前処理・後処理を依存関係グラフとして構成 外部ライブラリを追加せずに、組み込みまたはAndroidプロジェクトへタスクグラフスケジューラを組み込む
- CGraph のインストール方法は?
- PyPIからPythonバインディングをインストールする: pip install pycgraph READMEにあるPythonのデモをスクリプトとして保存し、Pythonで実行する
- CGraph はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/ChunelFeng/CGraph
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
luigiを基盤とするPythonフレームワーク。自動キャッシュ、再現性、依存関係管理に対応した機械学習パイプラインを構築できます。
サーバーとワーカーノード間で、cron、固定間隔、遅延実行、MapReduce形式のタスクを扱えるJava分散ジョブスケジューリングフレームワーク。
リトライ、キュー、可観測性を備えた、耐久性のある長時間実行型AIエージェントやバックグラウンドワークフローを構築・デプロイするための、オープンソースTypeScriptプラットフォーム。
Kubernetes上の並列ジョブをオーケストレーションする、CRDとして実装されたコンテナネイティブなワークフローエンジン。
UI、パイプライン、スケジューリングを備えた、本番運用向けのWebアプリをデータやAIアルゴリズムから構築できるPythonライブラリ。