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 可視化により、実行グラフを視覚化できます。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト