elixir - university of cambridge
TRANSCRIPT
Elixir
A System for Synthesizing Concurrent
Graph Programs
1
Motivation
• Performance of standard graph algorithms dependent on:
• Graph topology (diameter)
• Scheduling
• Architecture (SIMD/MIMD)
• …
• Elixir: high-level tool to generate optimal implementations
2
Specification
• Typed graph definition
• Operators with shape and value constraints define updates on subgraphs
• Statements: foreach, for i..range, iterate
• Scheduling operators restrict order
3
4
Algorithms in Elixir
5
Scheduling operators
• Metric
– Define online priorities
• Group
– Co-schedule edges from same source
• Fuse
• Unroll
• Ordered/unordered
6
Example: unroll and group
7
5 B
D
C
E 3
4
2
1
Example: unroll and group
8
5 8
D
C
E 3
4
2
1
Synthesis
• Translated to C++, predefined graph types
• Worklists hold potential matching subgraphs
• Dynamic scheduling in OpenMP
• Enumerative exploration approach
– Tests a predefined set of combinations of unroll, grouping
9
Matching subgraphs 1/2
10
Matching subgraphs 2/2
11
Evaluation 1/2
12
Evaluation 2/2
13
A Graph G…
14
Conclusion
• “Does not rely on expert knowledge”
• High up-front effort to learn specification
• Bloated formalism
• Can beat hand-written implementations through intricate load-balancing
• No dynamic graphs supported
15