Mechanisms and evaluation of cross-layer fault-tolerance for supercomputing