Wed 7 Nov 2018 14:15 - 14:37 at Studio 2 - Language Design 1 Chair(s): Eelco Visser

Writing high-performance graph applications is hard. The performance bottlenecks of graph applications depend not only on the algorithm and the underlying hardware, but also on the size and structure of the input graph. As a result, programmers must try different combinations of a large set of techniques, which make tradeoffs among locality, work-efficiency, and parallelism, to develop the best implementation for a specific algorithm and type of graph. Existing graph frameworks and domain specific languages (DSLs) lack flexibility, supporting only a limited set of optimizations.

This paper introduces GraphIt, a new DSL for graph computations that generates fast implementations for algorithms with different performance characteristics running on graphs with different sizes and structures. Graphit separates what is computed (algorithm) from how it is computed (schedule). Programmers specify the algorithm using an algorithm language, and performance optimizations are specified using a separate scheduling language. The algorithm language simplifies the expression of the algorithms, while exposing opportunities for optimizations. We formulate graph optimizations, including edge traversal direction, data layout, parallelization, cache, and NUMA optimizations, as tradeoffs among locality, parallelism, and work-efficiency. The scheduling language enables programmers to easily search through this complicated tradeoff space by composing together a large set of edge traversal and vertex data layout optimizations. The compiler uses a new scheduling representation, the graph iteration space, to model, compose, and ensure the validity of the large number of optimizations. We evaluate Graphit’s performance with six algorithms on graphs with different structures and sizes. Graphit outperforms the next fastest of six state-of-the-art shared-memory frameworks (Ligra, Green-Marl, GraphMat, Galois, Gemini, and Grazelle) on 22 out of 27 experiments by up to 4.8x, and is never more than 40% slower than the fastest framework on the other experiments. Graphit also reduces the lines of code by up to an order of magnitude compared to the next fastest framework.

Wed 7 Nov

Displayed time zone: Guadalajara, Mexico City, Monterrey change

13:30 - 15:00
Language Design 1OOPSLA at Studio 2
Chair(s): Eelco Visser Delft University of Technology
13:30
22m
Talk
AnyDSL: A Partial Evaluation Framework for Programming High-Performance Libraries
OOPSLA
Roland Leißa Saarland University, Germany, Klaas Boesche Saarland University, Sebastian Hack Saarland University, Germany, Arsène Pérard-Gayot Saarland University, Germany, Richard Membarth DFKI, Germany, Philipp Slusallek DFKI, Germany, André Müller Johannes Gutenberg University, Bertil Schmidt Johannes Gutenberg University
13:52
22m
Talk
Julia: Dynamism and Performance Reconciled by Design
OOPSLA
Jeff Bezanson Julia Computing, Benjamin Chung Northeastern University, Jiahao Chen Capital One, Stefan Karpinski , Viral B Shah Julia Computing, Jan Vitek Northeastern University, Lionel Zoubritzky École Normale Supérieure
14:15
22m
Talk
GraphIt - A High-Performance Graph DSL
OOPSLA
14:37
22m
Talk
One Tool, Many Languages: Language-Parametric Transformation with Incremental Parametric Syntax
OOPSLA