|
|
OverviewReverse computation (executing code backward) is an efficient alternative to logging-based approaches. I am interested in various aspects of reverse computation: (a) exploring new practical applications and/or domains suited for reverse computation (b) realizing optimal reversible codes from traditional forward codes (c) automating reverse code generation from original forward codes.An excellent application for reverse computation is in rollback for Time Warp [TOMACS'99]. In my Ph.D. dissertation work, I have shown that reverse computation is an efficient alternative to traditional checkpointing-based rollback. Much additional research remains, however. Recently, we have been able to extend this work even further, in plasma physics simulations [PADS'05]. AutomationReverse code can be optimized quite a bit even though reversal of individual instructions can degenerate to log generation. For example, Fibonacci sequence generator code can be automatically reversed with no state saving, even though individual instructions are irreversible[GIT-TR-03]. To help in automating the reverse code generation, I developed a reverse C compiler. The picture below shows the architecture of the source-to-source compilation system [GIT-TR-99].
PerformanceAs a quick illustration, the graph below shows the performance improvement achieved by reverse computation on a benchmark application.
Related Publications
|
|