Multi-Stage Vertex-Centric Programming for Agent-Based Simulations
In vertex-centric programming, users express a graph algorithm as a vertex program and specify the iterative behavior of a vertex in a ${compute}$ function, which is executed by all vertices in a graph in parallel, synchronously in a sequence of supersteps. While this programming model is straightforward for simple algorithms where vertices behave the same in each superstep, for complex vertex programs where vertices have different behavior across supersteps, a vertex needs to frequently dispatch on the value of supersteps in ${compute}$, which suffers from unnecessary interpretation overhead and complicates the control flow.
We address this using meta-programming: Instead of branching on the value of a superstep, users separate instructions that should be executed in different supersteps via a staging-time ${wait}$ instruction. When a superstep starts, computations in a vertex program resume from the last execution point, and continue executing until the next $wait$. We implement this in CloudCity and show that avoiding the interpretation overhead caused by dispatching on the value of a superstep can improve the performance by up to 20%.
Sun 22 OctDisplayed time zone: Lisbon change
11:00 - 12:30 | |||
11:00 30mTalk | GPCE Welcome by Chairs GPCE | ||
11:30 30mTalk | Generating Conforming Programs With Xsmith GPCE William G Hatch University of Utah, Pierce Darragh University of Utah, Sorawee Porncharoenwase University of Washington, Guy Watson University of Utah, Eric Eide University of Utah | ||
12:00 30mTalk | Multi-Stage Vertex-Centric Programming for Agent-Based Simulations GPCE Zilu Tian EPFL |