导航菜单

跳到内容

克里斯·康明斯/ProGraML

存储库文件导航

ProGraML:机器学习程序图

PyPI版本 PyPi下载 许可证

一种表达性的、独立于语言的程序表示。

检查网站了解更多信息。

介绍

ProGraML表示程序作为机器学习模型的输入。主要功能包括:

  1. 简单:一切都可以通过pip安装,无编译必需。支持多种编程语言(C、 C++、LLVM-IR、XLA)和几种图形格式(NetworkX、DGL、Graphviz、JSON)开箱即用。

  2. 有表现力的:捕获整个系统中的每个控件、数据和调用关系程序。表示独立于源语言。特征标签可以以任何粒度添加,以支持整个程序,解释推理任务。

  3. 快速:核心图构造是用C++实现的Python的开销接口。每个API方法都支持简单高效通过遗嘱执行人参数。

要深入了解我们的图形表示,请访问:

或者如果报纸更像你的☕, 阅读我们的:

支持的编程语言

支持以下编程语言和编译器IR开箱即用:

语言 API调用 支持的版本
C类 程序.from_cpp(),编程.from_clang() 达到ISO C 2017
C类++ 程序.from_cpp(),编程.from_clang() 达到ISO C++2020 DIS
LLVM-IR公司 程序.from_llvm_ir() 3.8.0, 6.0.0, 10.0.0
XLA公司 程序.from_xla_hlo_proto() 2.0.0

这里不支持您最喜欢的语言吗?提交特征请求

入门

使用以下命令安装Python包的最新版本:

pip安装-U程序

该API非常简单,包含图形创造操作,图形转型操作,和图形序列化行动。下面是每种方法的快速演示:

>>> 进口 程序 作为 前列腺素

#用C++构建程序图:
>>>  = 前列腺素.来自_ cpp("""
…#include<iostream>
...
…int main(int argc,char**argv){
…std::cout<<“你好,世界!”;
…返回0;
... }
... """)#程序图是协议缓冲区:
>>> 类型().__姓名__
'程序图'

#将图形转换为NetworkX:
>>> 前列腺素.到网络(_N)()<网络x..多道记录仪.MultiDiGraph(MultiDiGraph)  0x7fbcf40a2fa0>

#保存图形以备以后使用:
>>> 前列腺素.保存图形(_G)('文件.data'[])

有关更多详细信息,请查看美国石油学会参考.

贡献

欢迎使用补丁、错误报告、功能请求!请使用问题跟踪器要提交错误报告或问题。如果你想帮忙处理代码,请阅读这个文档.

引用

如果您在任何工作中使用ProGraML,请引用纸张以下为:

@进行中{cummins2021a,title={{ProGraML:用于数据流分析和编译器优化的基于图形的程序表示}},author={康明斯(Cummins)、克里斯(Chris)和菲舍斯(Fisches)、扎卡里亚斯(Zacharias)和本恩(Ben-Nun)、塔尔(Tal)和霍夫勒(Hoefler)、托尔斯滕(Torsten)和奥博伊尔(O'Boyle)、迈克尔(,booktitle={第三十八届国际机器学习会议(ICML)},年份={2021}}