E-graf

V informatice je e-graf datová struktura, která ukládá relaci ekvivalence nad termy nějakého jazyka.

Definice a operace

Nechť jsou f , g , {\displaystyle f,g,\ldots } symboly funkcí v nějakém jazyce, a nechť jsou t 1 , {\displaystyle t_{1},\ldots } termy v tomtéž jazyce. Nechť je i d {\displaystyle \mathbb {id} } spočetná množina neprůhledných identifikátorů, u nichž lze ověřovat rovnost. Tuto množinu nazýváme identifikátory e-tříd. Potom e-uzel je symbol n-ární funkce společně s n {\displaystyle n} identifikátory e-tříd. E-třída je množina e-uzlů. E-graf obsahuje datovou strukturu disjunktních množin U {\displaystyle U} nad identifikátory e-tříd se standardními operacemi a d d {\displaystyle \mathrm {add} } , f i n d {\displaystyle \mathrm {find} } , a m e r g e {\displaystyle \mathrm {merge} } .

Identifikátor e-tříd e {\displaystyle e} je kanonický, pokud f i n d ( U , e ) = e {\displaystyle \mathrm {find} (U,e)=e} . E-uzel f ( i 1 , , i n ) {\displaystyle f(i_{1},\ldots ,i_{n})} (kde i 1 , , i n i d {\displaystyle i_{1},\ldots ,i_{n}\in \mathbb {id} } ) je kanonický, pokud je každý i j {\displaystyle i_{j}} kanonický (kde j {\displaystyle j} je v 1 , , n {\displaystyle 1,\ldots ,n} ).

E-graf je kombinací: [1]

  • struktury disjunktních množin U {\displaystyle U}
  • hashcons H {\displaystyle H} (tj. zobrazení) z kanonických e-uzlů na identifikátory e-tříd
  • zobrazení e-tříd M {\displaystyle M} které zobrazuje identifikátory e-tříd na e-třídy tak, že M {\displaystyle M} přiřadí ekvivalentním identifikátorům stejnou množinu e-uzlů: i , j i d , M [ i ] = M [ j ] f i n d ( U , i ) = f i n d ( U , j ) {\displaystyle \forall i,j\in \mathbb {id} ,M[i]=M[j]\Leftrightarrow \mathrm {find} (U,i)=\mathrm {find} (U,j)}

Invarianty

Kromě výše uvedené struktury vyhovuje platný e-graf několika datovým invariantám. [1] Dva e-uzly jsou ekvivalentní, pokud jsou ve stejné e-třídě. Invarianta kongruence uvádí, že e-graf musí zajistit, aby byla ekvivalence uzavřena v rámci kongruence, kde dva e-uzly f ( i 1 , , i n ) , f ( j 1 , , j n ) {\displaystyle f(i_{1},\ldots ,i_{n}),f(j_{1},\ldots ,j_{n})} jsou kongruentní, když f i n d ( U , i k ) = f i n d ( U , j k ) , k { 1 , , n } {\displaystyle \mathrm {find} (U,i_{k})=\mathrm {find} (U,j_{k}),k\in \{1,\ldots ,n\}} . Invarianta hashcons postuluje, že hashcons mapuje kanonické e-uzly na identifikátor jejich e-třídy.

Operace

E-grafy poskytují abstrakci kolem operací a d d {\displaystyle \mathrm {add} } , f i n d {\displaystyle \mathrm {find} } , a m e r g e {\displaystyle \mathrm {merge} } ze struktury disjunktních množin, které zachovávají e-grafové invarianty. Další operací je e-párování. Ten mapuje „vzory“ (termy s proměnnými) na n-tice substitucí (od vzorů k identifikátorům e-tříd) a na identifikátory e-tříd tak, že vrácené e-třídy obsahují uzly, které odpovídají vstupnímu vzoru po aplikování substituce.

Saturace rovností

Saturace rovností je technika vytváření optimalizujících překladačů pomocí e-grafů. [2] Funguje tak, že aplikuje sadu přepisovacích pravidel pomocí e-párování, dokud není e-graf nasycený, nevyprší časový limit, není dosaženo limitu velikosti e-grafu, není překročen určitý počet iterací nebo není dosaženo jiné zastavovací podmínky. Po přepisování se z e-grafu extrahuje optimální term podle nějaké nákladové funkce, obvykle související s velikostí AST nebo výkonem.

Použití

E-grafy se používají v automatických důkazových systémech. Tvoří klíčovou součást moderních SMT solverů, jako jsou Z3 [3] a CVC4.

Saturace rovností se používá ve specializovaných optimalizujících kompilátorech, [4] např. pro hluboké učení [5] a lineární algebru. [6] Saturace rovností byla také použita při validaci překladu aplikovanou na sadu nástrojů LLVM. [7]

Reference

V tomto článku byl použit překlad textu z článku E-graph na anglické Wikipedii.

  1. a b Willsey 2021
  2. Tate 2009
  3. DE MOURA, Leonardo; BJØRNER, Nikolaj. Z3: An Efficient SMT Solver. Editoři C. R. Ramakrishnan, Jakob Rehof. Tools and Algorithms for the Construction and Analysis of Systems. Berlín, Heidelberg: Springer, 2008, roč. 4963, s. 337–340. DOI 10.1007/978-3-540-78800-3_24. (anglicky) 
  4. JOSHI, Rajeev; NELSON, Greg; RANDALL, Keith. Denali: a goal-directed superoptimizer. ACM SIGPLAN Notices. 17. 5. 2002, roč. 37, čís. 5, s. 304–314. Dostupné online. ISSN 0362-1340. DOI 10.1145/543552.512566. 
  5. YANG, Yichen; PHOTHILIMTHA, Phitchaya Mangpo; WANG, Yisu Remy. Equality Saturation for Tensor Graph Superoptimization. Další autoři Max Willsey, Sudip Roy, Jacques Pienaar. [s.l.]: [s.n.], 17. 3. 2021.  arXiv:cs.AI/2101.01332
  6. WANG, Yisu Remy; HUTCHISON, Shana; LEANG, Jonathan. SPORES: Sum-Product Optimization via Relational Equality Saturation for Large Scale Linear Algebra. Další autoři Bill Howe, Dan Suciu. [s.l.]: [s.n.], 22. 12. 2020.  arXiv:cs.DB/2002.07951
  7. STEPP, Michael; TATE, Ross; LERNER, Sorin. Equality-Based Translation Validator for LLVM. Editoři Ganesh Gopalakrishnan, Shaz Qadeer. Computer Aided Verification. Berlín, Heidelberg: Springer, 2011, roč. 6806, s. 737–742. Dostupné online. DOI 10.1007/978-3-642-22110-1_59. (anglicky) 
  • DE MOURA, Leonardo; BJØRNER, Nikolaj. Efficient E-Matching for SMT Solvers. S. 183–198. Redakce Frank Pfenning. Automated Deduction – CADE-21 [online]. Springer [cit. 2007]. Roč. 4603, s. 183–198. Dostupné online. DOI 10.1007/978-3-540-73595-3_13. (anglicky) 
  • WILLSEY, Max; NANDI, Chandrakana; WANG, Yisu Remy, Oliver Flatt, Zachary Tatlock, Pavel Panchekha. egg: Fast and extensible equality saturation. S. 23:1–23:29. Proceedings of the ACM on Programming Languages [online]. [cit. 2021-01-04]. Roč. 5, s. 23:1–23:29. Dostupné online. arXiv 2004.03082. DOI 10.1145/3434304. s2cid 226282597. 
  • TATE, Ross; STEPP, Michael; TATLOCK, Zachary, Lerner Sorin. Equality saturation: a new approach to optimization. S. 263–276, Savannah, GA, USA. Proceedings of the 36th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages [online]. Association for Computing Machinery [cit. 2009-01-21]. S. 263–276. Dostupné online. DOI 10.1145/1480881.1480915. s2cid 2138086, ISBN 978-1-60558-379-2. 

Externí odkazy

  • The Egg Project[nedostupný zdroj]
  • Google Colab notebook vysvětlující e-grafy