elixir
play

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 -


  1. Elixir A System for Synthesizing Concurrent Graph Programs Prountzos D., Manevich R. & Pingali K. Christopher Little

  2. Motivation Best solution to problems depends on: - Data - Machine Architecture - Intra-algorithm tuning - … Dream: let the compiler worry about it all

  3. Running Example: SSSP (Single-Source Shortest Path) Dijkstra Bellman-Ford

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

  5. SSSP Elixir Specification Graph [ nodes( node : Node, dist : int) Graph Type Definition edges( src : Node, dest : Node, wt : int) ] relax = [ nodes( node a, dist ad) nodes( node b, dist bd) Operator Definition edges( src a, dest b, wt w) bd > ad + w ] -> [bd = ad + w] Fixpoint Statement sssp = iterate relax >> schedule

  6. SSSP Elixir Specification Graph [ nodes( node : Node, dist : int) edges( src : Node, dest : Node, wt : int) ] relax = [ nodes( node a, dist ad) Redex Pattern nodes( node b, dist bd) edges( src a, dest b, wt w) Guard bd > ad + w ] -> [bd = ad + w] Update sssp = iterate relax >> schedule

  7. SSSP Elixir Specification d a d b Graph [ nodes( node : Node, dist : int) w edges( src : Node, dest : Node, wt : int) a b ] relax = [ nodes( node a, dist da) Redex Pattern If d b > d a + w nodes( node b, dist db) edges( src a, dest b, wt w) Guard db > da + w ] -> [db = da + w] Update d a d a + w sssp = iterate relax >> schedule w a b

  8. Scheduling Parallel - Metric C++ - Group Galois Program - Fuse - Unroll - Ordered/unordered

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

  10. c c a a a b b b c c a a a b b b

  11. assume ( da + w < db ) c assume !( dc + w’ < db ) w’ new_db = da + w a b assert !( dc + w’ < new_db ) w SMT Solver ✅

  12. assume ( da + w < db ) c assume !( db + w’ < dc ) w’ new_db = da + w w a b assert !( new_db + w’ < dc ) SMT Solver ❌

  13. Evaluation

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

  15. Complexity

  16. 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?

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend