ChrisCummins/ProGraML

A Graph-based Program Representation for Data Flow Analysis and Compiler Optimizations

何を解決するか

ProGraML は、コンピュータプログラムをグラフとして言語に依存しない方法で表現するツールであり、機械学習モデルの入力として適しているようにします。C、C++、LLVM-IR、XLA などの複雑なソースコードを、特定の言語の構文に依存せずに、プログラムの本質的な論理と関係を捉えた構造化された形式に変換する問題を解決します。

仕組み

このツールは、プログラム全体にわたるすべての制御、データ、呼び出し関係を捉えたグラフ表現(特にプロトコルバッファ)にソースコードを変換します。コアの構築プロセスは高速性を実現するため C++ で実装されており、使いやすさを考慮して Python インターフェースも提供されています。ユーザーは、これらのグラフを NetworkX、DGL、JSON などの一般的な機械学習グラフ形式に変換したり、Graphviz を使って可視化したりできます。

対象ユーザー

プログラム解析、コンパイラ最適化、コード向け機械学習に取り組んでいる研究者や開発者向けに設計されています。特に、全体プログラム、命令単位、関係単位のレベルで推論タスクに使用できる構造的で表現力豊かなプログラム表現が必要な方々に適しています。

特徴

  • 言語に依存しない: C、C++、LLVM-IR、XLA を標準でサポート。
  • 高速なパフォーマンス: コアのグラフ構築は C++ で記述され、並列処理を効率的にサポート。
  • 簡単な統合: コンパイル不要で pip install だけで利用可能。
  • 表現力豊かな表現: 統合的な制御、データ、呼び出し関係を捉える。
  • 複数のエクスポート形式: NetworkX、DGL、Graphviz、JSON をサポート。

関連

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