전자 그래프

E-graph

컴퓨터 과학에서 전자 그래프는 일부 언어의 용어에 대한 동등성 관계를 저장하는 데이터 구조입니다.

정의 및 운용

f ,\ldots 용어의 함수 기호를, 1,},\ 용어의 범위를 합니다. d e-class ID라고 하는 동일성을 비교할 수 있는 불투명 식별자 집합으로 합니다.그런 다음 e-노드는 n개의 n개의 e-class ID와 n개의 기능 기호입니다.e-class는 e-노드 세트입니다.e-graph에는 표준 d{ n d{find r e\ {merge의 e-class ID 상의 Union-find 구조 이 포함됩니다.

n d ( , ){style \ {} ( , ) e 클래스 e { f( , \ n) 표준(1 1입니다.

전자 그래프는 다음을 [1]조합한 것입니다.

  • Union-find UU
  • 표준 e-노드에서 e-클래스 ID로의 H, )
  • e클래스 ID를 e클래스에 매핑하는 e클래스({M으로,M M})은 동일한 e클래스 세트에 동등한 ID를 .i 、 ] [ ] ( ,) style

불변량

위의 구조 외에 유효한 전자 그래프는 몇 가지 데이터 구조 [2]불변수를 준수합니다.2개의 e-노드는 같은 e-클래스에 있는 경우 동등합니다.일치 불변수는 전자 그래프가 일치 에서는 동등성이 닫히도록 해야 한다고 명시하고 있습니다.여기서 2개의 f1, n f( f f는 일치 에서는 동일성이 닫힙니다\해시콘 불변수는 해시콘이 표준 e노드를 e클래스 ID에 매핑하는 것을 나타냅니다.

운용

E-그래프는 유니언의 d { e\ \ { 연산 주위에 래퍼를 표시합니다.이러한 래퍼는 e-그래프의 불변성을 유지합니다.또한 e-matching 조작은 "pattern"(변수가 있는 용어)을 치환의 튜플(패턴에서e-class ID까지) 및 e-class ID에 매핑하여 반환된e-class가 치환을 적용한 후 패턴을 "일치하는" 노드를 포함하도록 합니다.

등포화도

등화 포화도는 전자 그래프를 사용하여 [3]컴파일러를 최적화하기 위한 기술입니다.e-graph가 포화 상태에 도달하거나 타임아웃에 도달하거나 e-graph 크기 제한에 도달하거나 고정된 반복 횟수를 초과하거나 기타 정지 조건에 도달할 때까지 e-matching을 사용하여 일련의 개서를 적용하여 작동합니다.다시 쓴 후, 일반적으로 AST 크기 또는 성능 고려사항과 관련된 일부 비용 함수에 따라 전자 그래프에서 최적의 용어를 추출한다.

적용들

전자 그래프는 자동 정리 증명에 사용됩니다.Z3[4]CVC4와 같은 최신 SMT 솔버의 중요한 부분입니다.

등식 포화도는 딥 러닝[6]선형 [7]대수 과 같이 컴파일러[5]최적화하는 데 사용된다.LLVM [8]툴체인에 적용되는 변환 검증에도 등포화도가 사용되고 있습니다.

레퍼런스

  1. ^ (Willsey 2021) 오류::
  2. ^ (Willsey 2021) 오류::
  3. ^ (2009년 ) 오류:: 도움말
  4. ^ de Moura, Leonardo; Bjørner, Nikolaj (2008). Ramakrishnan, C. R.; Rehof, Jakob (eds.). "Z3: An Efficient SMT Solver". Tools and Algorithms for the Construction and Analysis of Systems. Lecture Notes in Computer Science. Berlin, Heidelberg: Springer. 4963: 337–340. doi:10.1007/978-3-540-78800-3_24. ISBN 978-3-540-78800-3.
  5. ^ Joshi, Rajeev; Nelson, Greg; Randall, Keith (2002-05-17). "Denali: a goal-directed superoptimizer". ACM SIGPLAN Notices. 37 (5): 304–314. doi:10.1145/543552.512566. ISSN 0362-1340.
  6. ^ Yang, Yichen; Phothilimtha, Phitchaya Mangpo; Wang, Yisu Remy; Willsey, Max; Roy, Sudip; Pienaar, Jacques (2021-03-17). "Equality Saturation for Tensor Graph Superoptimization". arXiv:2101.01332 [cs.AI].
  7. ^ Wang, Yisu Remy; Hutchison, Shana; Leang, Jonathan; Howe, Bill; Suciu, Dan (2020-12-22). "SPORES: Sum-Product Optimization via Relational Equality Saturation for Large Scale Linear Algebra". arXiv:2002.07951 [cs.DB].
  8. ^ Stepp, Michael; Tate, Ross; Lerner, Sorin (2011). Gopalakrishnan, Ganesh; Qadeer, Shaz (eds.). "Equality-Based Translation Validator for LLVM". Computer Aided Verification. Lecture Notes in Computer Science. Berlin, Heidelberg: Springer. 6806: 737–742. doi:10.1007/978-3-642-22110-1_59. ISBN 978-3-642-22110-1.

외부 링크