用于数据流分析和编译器优化的基于图形的程序表示
项目描述
ProGraML:机器学习的程序图
程序的富有表现力的、与语言无关的表示。
查看网站 了解更多信息。
介绍
ProGraML 是将程序表示为机器学习模型的输入。主要特点是:
-
简单:一切都可以通过 a 获得
pip install,无需编译。开箱即用支持多种编程语言(C、C++、LLVM-IR、XLA)和多种图形格式(NetworkX、DGL、Graphviz、JSON)。 -
富有表现力:捕获整个程序中的每个控件、数据和调用关系。表示独立于源语言。可以以任何粒度添加特征和标签,以支持整个程序、每个指令或每个关系的推理任务。
-
快速:核心图构造是用 C++ 实现的,具有与 Python 的低开销接口。
executor每个 API 方法都通过参数支持简单高效的并行化。
要陷入并使用我们的图形表示,请访问:
或者,如果论文更适合您的☕,请阅读我们的:
支持的编程语言
开箱即用支持以下编程语言和编译器 IR:
| 语 | API 调用 | 支持的版本 |
|---|---|---|
| C |
programl.from_cpp(),
programl.from_clang()
|
高达 ISO C 2017 |
| C++ |
programl.from_cpp(),
programl.from_clang()
|
高达 ISO C++ 2020 DIS |
| LLVM-IR |
programl.from_llvm_ir()
|
3.8.0、6.0.0、10.0.0 |
| XLA |
programl.from_xla_hlo_proto()
|
2.0.0 |
这里不支持您最喜欢的语言吗?提交功能请求!
入门
使用以下命令安装最新版本的 Python 包:
pip install -U programl
API 非常简单,包括图创建操作、图转换操作和图序列化操作。这是每个的快速演示:
>>> import programl as pg
# Construct a program graph from C++:
>>> G = pg.from_cpp("""
... #include <iostream>
...
... int main(int argc, char** argv) {
... std::cout << "Hello, world!" << std::endl;
... return 0;
... }
... """)
# A program graph is a protocol buffer:
>>> type(G).__name__
'ProgramGraph'
# Convert the graph to NetworkX:
>>> pg.to_networkx(G)
<networkx.classes.multidigraph.MultiDiGraph at 0x7fbcf40a2fa0>
# Save the graph for later:
>>> pg.save_graphs('file.data', [G])
有关更多详细信息,请查看API 参考。
贡献
欢迎补丁、错误报告、功能请求!请使用 问题跟踪器提交错误报告或问题。如果您想帮助编写代码,请阅读此文档。
引文
如果您在任何工作中使用 ProGraML,请引用这篇论文:
@inproceedings{cummins2021a,
title={{ProGraML: A Graph-based Program Representation for Data Flow Analysis and Compiler Optimizations}},
author={Cummins, Chris and Fisches, Zacharias and Ben-Nun, Tal and Hoefler, Torsten and O'Boyle, Michael and Leather, Hugh},
booktitle = {Thirty-eighth International Conference on Machine Learning (ICML)},
year={2021}
}
项目详情
关
programl -0.3.2-py3-none-manylinux2014_x86_64.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 79e88a4d87adb98bc6f860c6284910db3f962212e75493ba3768003c66ecb9a6 |
|
| MD5 | bbf75e734ad357d4f38d62e589b8cc85 |
|
| 布莱克2-256 | 442d9537ac3526bc51fcf82a580c1f1c936bc1fc3bba00062468bc8efc98d474 |