The Backstroke framework for source level reverse computation applied to parallel discrete event simulation

George Vulov, Cong Hou, Richard Vuduc, Richard Fujimoto, Daniel Quinlan, David Jefferson
2011 Proceedings of the 2011 Winter Simulation Conference (WSC)  
We introduce Backstroke, a new open source framework for the automatic generation of reverse code for functions written in C++. Backstroke enables reverse computation for optimistic parallel discrete event simulations. It is built using the ROSE open-source compiler infrastructure, and handles complex C++ features including pointers and pointer types, arrays, function and method calls, class types, inheritance, polymorphism, virtual functions, abstract classes, templated classes and containers.
more » ... Backstroke also introduces new program inversion techniques based on advanced compiler analysis tools built into ROSE. We explore and illustrate some of the complex language and semantic issues that arise in generating correct reverse code for C++ functions. CONTEXT AND RELATED WORK A parallel discrete event simulation (PDES) program consists of logical processes (LPs) that execute concurrently and exchange timestamped event messages. A synchronization algorithm is required to ensure each LP processes events in non-decreasing timestamp order. Optimistic synchronization uses rollback to undo the computation of events that are performed out of timestamp order (Jefferson 1985) . Parallel discrete event simulation and optimistic execution are described in detail in (Fujimoto
doi:10.1109/wsc.2011.6147998 dblp:conf/wsc/VulovHVFQJ11 fatcat:nx4e3lrl6nhljpvivvsggwtcri