Elixir A System for Synthesizing Concurrent Graph Programs - - PowerPoint PPT Presentation

elixir
SMART_READER_LITE
LIVE PREVIEW

Elixir A System for Synthesizing Concurrent Graph Programs - - PowerPoint PPT Presentation

Elixir A System for Synthesizing Concurrent Graph Programs Prountzos D., Manevich R. & Pingali K. Christopher Little Motivation Best solution to problems depends on: - Data - Machine Architecture - Intra-algorithm tuning -


slide-1
SLIDE 1

Elixir

Christopher Little A System for Synthesizing Concurrent Graph Programs

Prountzos D., Manevich R. & Pingali K.

slide-2
SLIDE 2

Motivation

Best solution to problems depends on:

  • Data
  • Machine Architecture
  • Intra-algorithm tuning

Dream: let the compiler worry about it all

slide-3
SLIDE 3

Running Example: SSSP

(Single-Source Shortest Path) Dijkstra Bellman-Ford

slide-4
SLIDE 4

Graph Algorithm Operators Schedule Identify New Activities Order Activity Processing Static Schedule Dynamic Schedule

slide-5
SLIDE 5

SSSP Elixir Specification

Graph [ nodes(node: Node, dist: int) edges(src: Node, dest: Node, wt: int) ] relax = [ nodes(node a, dist ad) nodes(node b, dist bd) edges(src a, dest b, wt w) bd > ad + w ] -> [bd = ad + w] sssp = iterate relax >> schedule

Graph Type Definition Operator Definition Fixpoint Statement

slide-6
SLIDE 6

SSSP Elixir Specification

Graph [ nodes(node: Node, dist: int) edges(src: Node, dest: Node, wt: int) ] relax = [ nodes(node a, dist ad) nodes(node b, dist bd) edges(src a, dest b, wt w) bd > ad + w ] -> [bd = ad + w] sssp = iterate relax >> schedule

Redex Pattern Guard Update

slide-7
SLIDE 7

SSSP Elixir Specification

Graph [ nodes(node: Node, dist: int) edges(src: Node, dest: Node, wt: int) ] relax = [ nodes(node a, dist da) nodes(node b, dist db) edges(src a, dest b, wt w) db > da + w ] -> [db = da + w] sssp = iterate relax >> schedule

Redex Pattern Guard Update

a b da db w

If db > da + w

a b da da + w w

slide-8
SLIDE 8

Scheduling

  • Metric
  • Group
  • Fuse
  • Unroll
  • Ordered/unordered

Galois

Parallel C++ Program

slide-9
SLIDE 9

Graph Algorithm Operators Schedule Identify New Activities Order Activity Processing Static Schedule Dynamic Schedule

slide-10
SLIDE 10

a b c a b c a b c a b c a b a b

slide-11
SLIDE 11

assume ( da + w < db ) assume !( dc + w’ < db ) new_db = da + w assert !( dc + w’ < new_db )

w’ w

a b c

SMT Solver

slide-12
SLIDE 12

assume ( da + w < db ) assume !( db + w’ < dc ) new_db = da + w assert !( new_db + w’ < dc )

w’ w

a b c

SMT Solver

slide-13
SLIDE 13

Evaluation

slide-14
SLIDE 14

Experiments

Explored Dimensions group Statically group multiple instances unroll k Statically unroll operator applications dynamic scheduler different worklist policy/implementation ...

slide-15
SLIDE 15
slide-16
SLIDE 16
slide-17
SLIDE 17

Complexity

slide-18
SLIDE 18

Conclusion

  • Elixir can beat hand-written implementations
  • “High-level” specification could be simpler
  • Not very accessible paper (unhelpful formalisms)
  • Dynamic graphs unsupported
  • Is auto-tuning integrated yet?