skip to main content
OSTI.GOV title logo U.S. Department of Energy
Office of Scientific and Technical Information

Title: Generation of Reversible C++ Code for Optimistic Parallel Discrete Event Simulation

Abstract

The reversible execution of C/C++ code has been a target of research and engineering for more than a decade as reversible 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 with user-defined C++ abstractions and abstractions of the C++ Standard Library. We present an approach based on incremental state saving for establishing reversibility of C++ and an evaluation for a kinetic Monte-Carlo simulation implemented in C++. Although a significant runtime overhead is introduced with our technique, it is an enormous win that it allows using the entire C++ language, and has that code automatically transformed into reversible code to enable parallel execution with the Rensselaer’s optimistic simulation system (ROSS).

Authors:
ORCiD logo [1];  [1];  [1];  [1]
  1. Lawrence Livermore National Lab. (LLNL), Livermore, CA (United States)
Publication Date:
Research Org.:
Lawrence Livermore National Lab. (LLNL), Livermore, CA (United States)
Sponsoring Org.:
USDOE National Nuclear Security Administration (NNSA)
OSTI Identifier:
1658686
Report Number(s):
LLNL-JRNL-745586
Journal ID: ISSN 0288-3635; 930204
Grant/Contract Number:  
AC52-07NA27344
Resource Type:
Journal Article: Accepted Manuscript
Journal Name:
New Generation Computing
Additional Journal Information:
Journal Volume: 36; Journal Issue: 3; Journal ID: ISSN 0288-3635
Country of Publication:
United States
Language:
English
Subject:
97 MATHEMATICS AND COMPUTING; Reversible computation; PDES; checkpointing; incremental state saving; program transformation

Citation Formats

Schordan, Markus, Oppelstrup, Tomas, Jefferson, David, and Barnes, Peter D. Generation of Reversible C++ Code for Optimistic Parallel Discrete Event Simulation. United States: N. p., 2018. Web. doi:10.1007/s00354-018-0038-2.
Schordan, Markus, Oppelstrup, Tomas, Jefferson, David, & Barnes, Peter D. Generation of Reversible C++ Code for Optimistic Parallel Discrete Event Simulation. United States. https://doi.org/10.1007/s00354-018-0038-2
Schordan, Markus, Oppelstrup, Tomas, Jefferson, David, and Barnes, Peter D. Fri . "Generation of Reversible C++ Code for Optimistic Parallel Discrete Event Simulation". United States. https://doi.org/10.1007/s00354-018-0038-2. https://www.osti.gov/servlets/purl/1658686.
@article{osti_1658686,
title = {Generation of Reversible C++ Code for Optimistic Parallel Discrete Event Simulation},
author = {Schordan, Markus and Oppelstrup, Tomas and Jefferson, David and Barnes, Peter D.},
abstractNote = {The reversible execution of C/C++ code has been a target of research and engineering for more than a decade as reversible 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 with user-defined C++ abstractions and abstractions of the C++ Standard Library. We present an approach based on incremental state saving for establishing reversibility of C++ and an evaluation for a kinetic Monte-Carlo simulation implemented in C++. Although a significant runtime overhead is introduced with our technique, it is an enormous win that it allows using the entire C++ language, and has that code automatically transformed into reversible code to enable parallel execution with the Rensselaer’s optimistic simulation system (ROSS).},
doi = {10.1007/s00354-018-0038-2},
url = {https://www.osti.gov/biblio/1658686}, journal = {New Generation Computing},
issn = {0288-3635},
number = 3,
volume = 36,
place = {United States},
year = {2018},
month = {7}
}

Journal Article:
Free Publicly Available Full Text
Publisher's Version of Record

Citation Metrics:
Cited by: 4 works
Citation information provided by
Web of Science

Save / Share:

Works referenced in this record:

The Backstroke framework for source level reverse computation applied to parallel discrete event simulation
conference, December 2011


HYPERS: A unidimensional asynchronous framework for multiscale hybrid simulations
journal, February 2012


Principles of a reversible programming language
conference, January 2008


A reversible programming language and its invertible self-interpreter
conference, January 2007


Virtual time
journal, July 1985


LORAIN: a step closer to the PDES 'holy grail'
conference, January 2014

  • LaPre, Justin M.; Gonsiorowski, Elsa J.; Carothers, Christopher D.
  • Proceedings of the 2nd ACM SIGSIM/PADS conference on Principles of advanced discrete simulation - SIGSIM-PADS '14
  • https://doi.org/10.1145/2601381.2601397

Efficient optimistic parallel simulations using reverse computation
journal, July 1999


Autonomic State Management for Optimistic Simulation Platforms
journal, June 2015


Warp speed: executing time warp on 1,966,080 cores
conference, January 2013

  • Barnes, Peter D.; Carothers, Christopher D.; Jefferson, David R.
  • Proceedings of the 2013 ACM SIGSIM conference on Principles of advanced discrete simulation - SIGSIM-PADS '13
  • https://doi.org/10.1145/2486092.2486134

A Fine-Grain Time-Sharing Time Warp System
journal, July 2017


Hardware-Transactional-Memory Based Speculative Parallel Discrete Event Simulation of Very Fine Grain Models
conference, December 2015


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

  • Schordan, Markus; Oppelstrup, Tomas; Jefferson, David
  • Proceedings of the 2016 annual ACM Conference on SIGSIM Principles of Advanced Discrete Simulation - SIGSIM-PADS '16
  • https://doi.org/10.1145/2901378.2901394

Dealing with Reversibility of Shared Libraries in PDES
conference, May 2017

  • Cingolani, Davide; Pellegrini, Alessandro; Schordan, Markus
  • SIGSIM-PADS '17: SIGSIM Principles of Advanced Discrete Simulation, Proceedings of the 2017 ACM SIGSIM Conference on Principles of Advanced Discrete Simulation
  • https://doi.org/10.1145/3064911.3064927

Transparent incremental state saving in time warp parallel discrete event simulation
journal, July 1996


Transparently Mixing Undo Logs and Software Reversibility for State Recovery in Optimistic PDES
conference, January 2015

  • Cingolani, Davide; Pellegrini, Alessandro; Quaglia, Francesco
  • Proceedings of the 3rd ACM Conference on SIGSIM-Principles of Advanced Discrete Simulation - SIGSIM-PADS '15
  • https://doi.org/10.1145/2769458.2769482

Transparently Mixing Undo Logs and Software Reversibility for State Recovery in Optimistic PDES
journal, July 2017

  • Cingolani, Davide; Pellegrini, Alessandro; Quaglia, Francesco
  • ACM Transactions on Modeling and Computer Simulation, Vol. 27, Issue 2
  • https://doi.org/10.1145/3077583

    Works referencing / citing this record:

    Reversing P/T Nets
    book, June 2019

    • Melgratti, Hernán; Mezzina, Claudio Antares; Ulidowski, Irek
    • Coordination Models and Languages: 21st IFIP WG 6.1 International Conference, COORDINATION 2019, Held as Part of the 14th International Federated Conference on Distributed Computing Techniques, DisCoTec 2019, Kongens Lyngby, Denmark, June 17–21, 2019, Proceedings, p. 19-36
    • https://doi.org/10.1007/978-3-030-22397-7_2