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을 지원.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트