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。

相关

  • 项目
  • 项目
  • 项目
  • 项目