  Due to the system scaling, transient errors caused by external noises, e.g.,
heat fluxes and particle strikes, have become a growing concern for the current
and upcoming extreme-scale high-performance-computing (HPC) systems. However,
since such errors are still quite rare as compared to no-fault cases, desirable
solutions call for low/no-overhead systems that do not compromise the
performance under no-fault conditions and also allow very fast fault recovery
to minimize downtime. In this paper, we present IterPro, a light-weight
compiler-assisted resilience technique to quickly and accurately recover
processes from transient-error-induced crashes. IterPro repairs the corrupted
process states on-the-fly upon occurrences of errors, enabling applications to
continue their executions instead of being terminated. IterPro also exploits
side effects introduced by induction variable based code optimization
techniques to improve its recovery capability. To this end, two new code
transformation passes are introduced to expose the side effects for resilience
purposes. We evaluated IterPro with 4 scientific workloads as well as the NPB
benchmarks suite. During their normal execution, IterPro incurs almost zero
runtime overhead and a small, fixed 27MB memory overhead. Meanwhile, IterPro
can recover on an average 83.55% of crash-causing errors within dozens of
milliseconds with negligible downtime. With such an effective recovery
mechanism, IterPro could tremendously mitigate the overheads and resource
requirements of the resilience subsystem in future extreme-scale systems.
