Fault Tolerance for High-Performance Applications