  Resilience is a major design goal for HPC. Checkpoint is the most common
method to enable resilient HPC. Checkpoint periodically saves critical data
objects to non-volatile storage to enable data persistence. However, using
checkpoint, we face dilemmas between resilience, recomputation and checkpoint
cost. The reason that accounts for the dilemmas is the cost of data copying
inherent in checkpoint. In this paper we explore how to build resilient HPC
with non-volatile memory (NVM) as main memory and address the dilemmas. We
introduce a variety of optimization techniques that leverage high performance
and non-volatility of NVM to enable high performance data persistence for data
objects in applications. With NVM we avoid data copying; we optimize cache
flushing needed to ensure consistency between caches and NVM. We demonstrate
that using NVM is feasible to establish data persistence frequently with small
overhead (4.4% on average) to achieve highly resilient HPC and minimize
recomputation.
