Automatic Generation of Reversible C++ Code and Its Performance in a Scalable Kinetic Monte-Carlo Application

The fully automatic generation of code that establishes the reversibility of arbitrary C/C++ code has been a target of research and engineering for more than a decade as reverse computation has become a central notion in large scale parallel discrete event simulation (PDES). The simulation models that are implemented for PDES are of increasing complexity and size and require various language features to support abstraction, encapsulation, and composition when building a simulation model. In this paper we focus on parallel simulation models that are written in C++ and present an approach and an evaluation for a fully automatically generated reversible code for a kinetic Monte-Carlo application implemented in C++. Although a significant runtime overhead is introduced with our technique, the assurance that the reverse code is generated automatically and correctly, is an enormous win that allows simulation model developers to write forward event code using the entire C++ language, and have that code automatically transformed into reversible code to enable parallel execution with the Rensselaer's Optimistic Simulation System (ROSS).

[1]  Johan Montagnat,et al.  Transparent incremental state saving in time warp parallel discrete event simulation , 1996, Workshop on Parallel and Distributed Simulation.

[2]  Christopher D. Carothers,et al.  Efficient optimistic parallel simulations using reverse computation , 1999, Workshop on Parallel and Distributed Simulation.

[3]  Alessandro Pellegrini,et al.  Transparently Mixing Undo Logs and Software Reversibility for State Recovery in Optimistic PDES , 2015, SIGSIM-PADS.

[4]  Kalyan S. Perumalla,et al.  Introduction to Reversible Computing , 2013 .

[5]  Alessandro Pellegrini,et al.  Hijacker: Efficient static software instrumentation with applications in high performance computing: Poster paper , 2013, 2013 International Conference on High Performance Computing & Simulation (HPCS).

[6]  Alessandro Pellegrini,et al.  Hardware-Transactional-Memory Based Speculative Parallel Discrete Event Simulation of Very Fine Grain Models , 2015, 2015 IEEE 22nd International Conference on High Performance Computing (HiPC).

[7]  Richard W. Vuduc,et al.  The Backstroke framework for source level reverse computation applied to parallel discrete event simulation , 2011, Proceedings of the 2011 Winter Simulation Conference (WSC).

[8]  David R. Jefferson,et al.  Virtual time , 1985, ICPP.

[9]  Richard M. Fujimoto,et al.  Parallel and Distribution Simulation Systems , 1999 .

[10]  Roberto Vitali,et al.  Autonomic State Management for Optimistic Simulation Platforms , 2015, IEEE Transactions on Parallel and Distributed Systems.

[11]  Christopher D. Carothers,et al.  LORAIN: a step closer to the PDES 'holy grail' , 2014, SIGSIM PADS '14.

[12]  Kalyan S. Perumalla,et al.  Reverse computation for rollback-based fault tolerance in large parallel systems , 2013, Cluster Computing.

[13]  Markus Schordan,et al.  Reverse Code Generation for Parallel Discrete Event Simulation , 2015, RC.

[14]  Christopher D. Carothers,et al.  Analysis of time warp on a 32,768 processor ibm blue Gene/L supercomputer , 2008 .

[15]  Christopher D. Carothers,et al.  Warp speed: executing time warp on 1,966,080 cores , 2013, SIGSIM-PADS.