Abstract

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 expressing the algorithms, while exposing opportunities for optimizations. We formulate graph optimizations, including edge traversal direction, data layout, parallelization, cache, NUMA, and kernel fusion 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, vertex data layout, and program structure optimizations. The separation of algorithm and schedule also enables us to build an autotuner on top of GraphIt to automatically find high-performance schedules. 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 seven 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 24 out of 32 experiments by up to 4.8×, and is never more than 43% 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.

Highlights

  • In recent years, large graphs with billions of vertices and trillions of edges have emerged in many domains, such as social network analytics, machine learning, and biology

  • The separation of algorithm and schedule enables us to build an autotuner on top of GraphIt to automatically find high-performance schedules

  • We have described GraphIt, a novel domain specific languages (DSLs) for graph processing that generates fast implementations for algorithms with different performance characteristics running on graphs with varying sizes and structures

Read more

Summary

INTRODUCTION

Large graphs with billions of vertices and trillions of edges have emerged in many domains, such as social network analytics, machine learning, and biology. We introduce GraphIt, a new graph DSL that produces efficient implementations with performance competitive with or faster than state-of-the-art frameworks for a diverse set of algorithms running on graphs with different sizes and structures. GraphIt achieves good performance by enabling programmers to find the best combination of optimizations for their specific algorithm and input graph. The scheduling language enables programmers to search through the complicated tradeoff space by composing a large set of edge traversal, vertex data layout, and program structure optimizations. A new scheduling language that allows programmers to explore the tradeoff space by composing edge traversal, vertex data layout, and program structure optimizations (Section 4). A compiler that leverages program analyses on the algorithm language and an intermediate representation that encodes the graph iteration space to generate efficient and valid implementations for different combinations of optimizations. A comprehensive evaluation of GraphIt that shows it is faster than the fastest state-of-theart framework on 24 out of 32 experiments by up to 4.8×, and never more than 43% slower than the fastest framework on the other experiments (Section 7)

TRADEOFF SPACE AND OPTIMIZATIONS
PageRankDelta
Graph Optimizations
ALGORITHM LANGUAGE
Data Model
Language Constructs and Operators
SCHEDULING LANGUAGE
Scheduling Language
Scheduling PageRankDelta
Scheduling Program Structure Optimizations
SCHEDULING REPRESENTATION
Graph Iteration Space
Vertex Data Layout and Program Structure Optimizations Representation
Code Generation for Graph Iteration Space
Code Generation for Vertex Data Layout Optimizations
Code Generation for Program Structure Optimizations
Autotuning GraphIt Schedules
EVALUATION
Comparisons with State-of-the-Art Frameworks
Performance of Different Schedules
RELATED WORK
CONCLUSION
Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.