A Reversible Runtime Environment for Parallel Programs
Takashi Ikeda,Shoji Yuen +1 more
- 09 Jul 2020
- pp 272-279
TL;DR: This work presents a reversible runtime environment for simple parallel programs and its experimental implementation of the backtrack reversibility by the state-saving mechanism using stacks that is more portable than the source-to-source translation of a high-level programming language.
read more
Abstract: We present a reversible runtime environment for simple parallel programs and its experimental implementation. We aim at a light-weight implementation of the backtrack reversibility by the state-saving mechanism using stacks. We translate a program to a sequence of simple commands of an executable intermediate representation for reversible stack machines. The parallel composition is implemented using the multiprocessing feature of Python. While executing the commands, the stack machines collect the information for the backward execution in the auxiliary stacks for the update history of the variables and the history of jumps. The commands for the backward execution is obtained by reversing the commands for the forward execution by replacing each command with the corresponding reversed command. In the purpose of behaviour analysis with reversibility such as debugging, our runtime is more portable than the source-to-source translation of a high-level programming language.
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
CRIL: A Concurrent Reversible Intermediate Language
Shunya Oguchi,Shoji Yuen +1 more
TL;DR: This work proposes CRIL (Concurrent Reversible Intermediate Language) as an extension of RIL used by Mogensen for a functional reversible language, incorporating a multi-thread process invocation and the synchronization primitives based on the P-V operations.
Updated Methodology for Task Knowledge Based Development of Parallel Programs
Alexander V. Ilyin,Vladimir D. Ilyin +1 more
- 01 Oct 2021
TL;DR: In this article, an updated methodology for task knowledge-based development of parallel programs is presented, which includes methods for tkb-construction of non-parallel program systems (nps) and automatic parallelizing.
1
A Reversible Debugger for Imperative Parallel Programs with Contracts
Takashi Ikeda,Shoji Yuen +1 more
- 01 Jan 2022
TL;DR: In this article , the authors present a reversible debugger for imperative parallel programs with block structures, where a program runs in the runtime of abstract machines executed concurrently, where each abstract machine has the instruction set both for forward executions and backward executions.
References
A note on Bennett's time space tradeoff for reversible computation
Robert Y. Levine,Alan T. Sherman +1 more
TL;DR: Bennett shows how to construct an equivalent reversible program with running time T and space complexity O and proves that the reversible program actually runs in time $\Theta ({{T^{1 + \varepsilon}} / {S^{\varePSilon}}})$ and space $\TheTA (S(1+\ln ({T / S})))$.
Interpretation and programming of the reversible functional language RFUN
Michael Kirkedal Thomsen,Holger Bock Axelsen +1 more
- 14 Sep 2015
TL;DR: The present paper aims to further the understanding of reversible functional programming (and RFUN in particular) by describing implementations in, and of, the RFUN language by describing implementations in and of the rfun language.
32
Reversible imperative parallel programs and debugging
James Hoey,Irek Ulidowski +1 more
- 24 Jun 2019
TL;DR: A state-saving approach to reversible execution of imperative programs containing parallel composition and an inverted version of the program, capable of using this saved information to reverse the effects of each step of the forwards execution is presented.
17
Reversing Parallel Programs with Blocks and Procedures
James Hoey,Irek Ulidowski,Shoji Yuen +2 more
- 24 Aug 2018
TL;DR: In this article, the authors show how to reverse a while language extended with blocks, local variables, procedures and the interleaving parallel composition, along with a set of operational semantics capable of storing necessary reversal information.
A reversible programming language and its invertible self-interpreter
Tetsuo Yokoyama,Robert Glück +1 more
- 15 Jan 2007
TL;DR: This work formalizes the programming language Janus and proves its reversibility by providing a program inverter for the language and implementing a self-interpreter that achieves deterministic forward and backward interpretation of Janus programs without using a computation history.