GraFS: Graph Analytics Fusion and Synthesis

Graph analytics elicits insights from large graphs to inform critical decisions for business, safety and security. Several large-scale graph processing frameworks feature efficient runtime systems; however, they often provide programming models that are low-level and subtly different from each other. Therefore, end users can find implementation and specially optimization of graph analytics time-consuming and error-prone. This paper regards the abstract interface of the graph processing frameworks as the instruction set for graph analytics, and presents Grafs, a high-level declarative specification language for graph analytics and a synthesizer that automatically generates efficient code for five high-performance graph processing frameworks. It features novel semantics-preserving fusion transformations that optimize the specifications and reduce them to three primitives: reduction over paths, mapping over vertices and reduction over vertices. Reductions over paths are commonly calculated based on push or pull models that iteratively apply kernel functions at the vertices. This paper presents conditions, parametric in terms of the kernel functions, for the correctness and termination of the iterative models, and uses these conditions as specifications to automatically synthesize the kernel functions. Experimental results show that the generated code matches or outperforms hand-optimized code, and that fusion accelerates execution.

[1]  Wei-Ngan Chin Safe fusion of functional expressions , 1992, LFP '92.

[2]  Aart J. C. Bik,et al.  Pregel: a system for large-scale graph processing , 2010, SIGMOD Conference.

[3]  Akimasa Morihata,et al.  Think like a vertex, behave like a function! a functional DSL for vertex-centric big graph processing , 2016, ICFP.

[4]  Zhe Wu,et al.  Using Domain-Specific Languages For Analytic Graph Databases , 2016, Proc. VLDB Endow..

[5]  Joseph Gonzalez,et al.  PowerGraph: Distributed Graph-Parallel Computation on Natural Graphs , 2012, OSDI.

[6]  Marko A. Rodriguez,et al.  The Gremlin graph traversal machine and language (invited talk) , 2015, DBPL.

[7]  Y. N. Srikant,et al.  DH-Falcon: A Language for Large-Scale Graph Processing on Distributed Heterogeneous Systems , 2017, 2017 IEEE International Conference on Cluster Computing (CLUSTER).

[8]  Aws Albarghouthi,et al.  MapReduce program synthesis , 2016, PLDI.

[9]  Alex Brooks,et al.  Gluon: a communication-optimizing substrate for distributed heterogeneous graph analytics , 2018, PLDI.

[10]  Keshav Pingali,et al.  Synthesizing parallel graph programs via automated planning , 2015, PLDI.

[11]  Kunle Olukotun,et al.  EmptyHeaded: A Relational Engine for Graph Processing , 2015, ACM Trans. Database Syst..

[12]  Akimasa Morihata,et al.  Optimizing Declarative Parallel Distributed Graph Processing by Using Constraint Solvers , 2018, FLOPS.

[13]  Jennifer Golbeck,et al.  Computing and Applying Trust in Web-based Social Networks , 2005 .

[14]  Rupesh Nasre,et al.  LightHouse: An Automatic Code Generator for Graph Algorithms on GPUs , 2016, LCPC.

[15]  Robert J. Harrison,et al.  A Domain-Specific Compiler for a Parallel Multiresolution Adaptive Numerical Simulation Environment , 2016, SC16: International Conference for High Performance Computing, Networking, Storage and Analysis.

[16]  Willy Zwaenepoel,et al.  X-Stream: edge-centric graph processing using streaming partitions , 2013, SOSP.

[17]  Armando Solar-Lezama,et al.  MSL: A Synthesis Enabled Language for Distributed Implementations , 2014, SC14: International Conference for High Performance Computing, Networking, Storage and Analysis.

[18]  Yunhong Zhou,et al.  Denali: A practical algorithm for generating optimal code , 2006, TOPL.

[19]  Keith H. Randall,et al.  Denali: a goal-directed superoptimizer , 2002, PLDI '02.

[20]  Ken Kennedy,et al.  Profitable loop fusion and tiling using model-driven empirical search , 2006, ICS '06.

[21]  Sanjit A. Seshia,et al.  Combinatorial sketching for finite programs , 2006, ASPLOS XII.

[22]  Joseph M. Hellerstein,et al.  GraphLab: A New Framework For Parallel Machine Learning , 2010, UAI.

[23]  Keshav Pingali,et al.  Abelian: A Compiler for Graph Analytics on Distributed, Heterogeneous Platforms , 2018, Euro-Par.

[24]  Keval Vora,et al.  Exploiting Asynchrony for Performance and Fault Tolerance in Distributed Graph Processing , 2017 .

[25]  Keshav Pingali,et al.  A lightweight infrastructure for graph analytics , 2013, SOSP.

[26]  Shoaib Kamil,et al.  GraphIt: a high-performance graph DSL , 2018, Proc. ACM Program. Lang..

[27]  Uday Bondhugula,et al.  A practical automatic polyhedral parallelizer and locality optimizer , 2008, PLDI '08.

[28]  John Regehr,et al.  Souper: A Synthesizing Superoptimizer , 2017, ArXiv.

[29]  Percy Liang,et al.  FrAngel: component-based synthesis with control structures , 2018, Proc. ACM Program. Lang..

[30]  Armando Solar-Lezama,et al.  Programming by sketching for bit-streaming programs , 2005, PLDI '05.

[31]  Kunle Olukotun,et al.  Green-Marl: a DSL for easy and efficient graph analysis , 2012, ASPLOS XVII.

[32]  Neil Immerman,et al.  A simple inductive synthesis methodology and its applications , 2010, OOPSLA.

[33]  Philip Wadler,et al.  Deforestation: Transforming Programs to Eliminate Trees , 1990, Theor. Comput. Sci..

[34]  Alexander Aiken,et al.  Automatic generation of peephole superoptimizers , 2006, ASPLOS XII.

[35]  Peter-Michael Osera,et al.  Type-and-example-directed program synthesis , 2015, PLDI.

[36]  Rajeev Alur,et al.  Syntax-guided synthesis , 2013, 2013 Formal Methods in Computer-Aided Design.

[37]  Mohsen Lesani,et al.  Hamsaz: replication coordination analysis and synthesis , 2019, Proc. ACM Program. Lang..

[38]  Sumit Gulwani,et al.  Spreadsheet data manipulation using examples , 2012, CACM.

[39]  Carlos Guestrin,et al.  Distributed GraphLab : A Framework for Machine Learning and Data Mining in the Cloud , 2012 .

[40]  Sungpack Hong,et al.  PGQL: a property graph query language , 2016, GRADES '16.

[41]  Henry Massalin Superoptimizer: a look at the smallest program , 1987, ASPLOS 1987.

[42]  Wenguang Chen,et al.  GridGraph: Large-Scale Graph Processing on a Single Machine Using 2-Level Hierarchical Partitioning , 2015, USENIX ATC.

[43]  Keshav Pingali,et al.  A round-efficient distributed betweenness centrality algorithm , 2019, PPoPP.

[44]  Simon L. Peyton Jones,et al.  A short cut to deforestation , 1993, FPCA '93.

[45]  Rajeev Alur,et al.  TRANSIT: specifying protocols with concolic snippets , 2013, PLDI.

[46]  Robert J. Harrison,et al.  On fusing recursive traversals of K-d trees , 2016, CC.

[47]  Wenguang Chen,et al.  Gemini: A Computation-Centric Distributed Graph Processing System , 2016, OSDI.

[48]  Armando Solar-Lezama,et al.  Program synthesis from polymorphic refinement types , 2015, PLDI.

[49]  Emina Torlak,et al.  Toward tool support for interactive synthesis , 2015, Onward!.

[50]  Isil Dillig,et al.  Component-based synthesis for complex APIs , 2017, POPL.

[51]  Sumit Gulwani,et al.  Oracle-guided component-based program synthesis , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[52]  Keshav Pingali,et al.  Elixir: a system for synthesizing concurrent graph programs , 2012, OOPSLA '12.

[53]  Alain Darte On the Complexity of Loop Fusion , 2000, Parallel Comput..

[54]  Margus Veanes,et al.  Fusing effectful comprehensions , 2017, PLDI.

[55]  Ken Kennedy,et al.  Maximizing Loop Parallelism and Improving Data Locality via Loop Fusion and Distribution , 1993, LCPC.

[56]  Sumit Gulwani,et al.  From program verification to program synthesis , 2010, POPL '10.

[57]  Christoforos E. Kozyrakis,et al.  Making pull-based graph processing performant , 2018, PPoPP.

[58]  Guy E. Blelloch,et al.  Ligra: a lightweight graph processing framework for shared memory , 2013, PPoPP '13.

[59]  Sumit Gulwani,et al.  Automating string processing in spreadsheets using input-output examples , 2011, POPL '11.

[60]  Ryan Newton,et al.  Sound, fine-grained traversal fusion for heterogeneous trees , 2019, PLDI.

[61]  Milind Kulkarni,et al.  TreeFuser: a framework for analyzing and fusing general recursive tree traversals , 2017, Proc. ACM Program. Lang..

[62]  Alexander Aiken,et al.  Stochastic superoptimization , 2012, ASPLOS '13.