GraphIt - A High-Performance Graph DSL
summary
DSL that separates algorithm from schedule and a scheduling language that composes push/pull direction, partitioning for cache, parallelization, NUMA and data-layout choices into a single representation called the graph iteration space. Compiler generates C++ and an autotuner searches schedules for a given graph; tuned PageRank achieves >23× over a naive version on 2-socket 24-core hardware, GraphIt tops six frameworks on 24 of 32 experiments by up to 4.8× and trims code size by up to an order of magnitude.
AI-written summary · about
chapters (24)
- 0:00Intro
- 0:52Performance is Important
- 1:13PageRank Example in C++
- 1:50Hand-Optimized C++
- 3:14Outline
- 3:29Power-Law Graphs
- 4:03Bounded-Degree Graphs
- 4:21Graph Algorithms
- 4:38Data-Driven Algorithms
- 4:56Graph Execution Hardware
- 5:09Push Traversal
- 5:56Partitioning
- 6:17Optimization Tradeoff Space
- 9:16Algorithm Language
- 10:50Scheduling Language
- 12:32Speedups of Schedules
- 13:20Schedule Representation
- 13:51Iteration Spaces
- 14:17Graph Iteration Space
- 16:08Schedule 4
- 16:30Autotuner
- 17:11State of the Art and Graphit
- 18:31Consistent High-Performance
- 19:20Summary
