通过选择性可靠性实现容错线性求解器
Fault-tolerant linear solvers via selective reliability
AI总结:
提出一种算法与系统协同设计方法,通过选择性可靠性使迭代线性求解器在硬件故障下仍能正确收敛,并存储大部分数据于不可靠模式。
摘要:
能源日益限制现代计算机硬件,但保护计算和数据免受错误影响需要消耗能量。这在所有规模上都成立,尤其是对于当今正在构建和规划的最大并行计算机。随着处理器数量持续增长,在整个应用程序中始终确保可靠性的成本将变得难以承受。然而,许多算法仅对某些数据和计算阶段需要可靠性。这提示了一种算法与系统协同设计方法。我们证明,如果系统允许应用程序有选择地应用可靠性,我们可以开发出即使在故障情况下也能计算出正确答案的算法。这些“容错”迭代方法要么最终收敛,且收敛速率随故障率增加而优雅地退化,要么在极少数无法收敛的情况下返回明确的失败指示。此外,它们大部分数据以不可靠方式存储,并且大部分时间处于不可靠模式。我们针对检测到但不可纠正的内存故障这一具体案例进行了演示,我们认为这代表了所有类型的故障。我们开发了一个跨层应用程序/操作系统框架,该框架拦截并向应用程序报告不可纠正的内存故障,而不是像当前操作系统那样终止应用程序。应用程序可以标记内存分配可能受到此类故障的影响。利用该框架,我们使用Trilinos求解器库中的组件编写了一个容错迭代线性求解器。我们的求解器利用混合并行性(MPI和线程)。如果没有发生故障,它的性能与其他求解器一样好;而在存在故障的情况下,它能够收敛而其他求解器则不能。我们展示了代表性测试问题的收敛结果。近期未来工作将包括性能测试。
英文摘要:
Energy increasingly constrains modern computer hardware, yet protecting computations and data against errors costs energy. This holds at all scales, but especially for the largest parallel computers being built and planned today. As processor counts continue to grow, the cost of ensuring reliability consistently throughout an application will become unbearable. However, many algorithms only need reliability for certain data and phases of computation. This suggests an algorithm and system codesign approach. We show that if the system lets applications apply reliability selectively, we can develop algorithms that compute the right answer despite faults. These "fault-tolerant" iterative methods either converge eventually, at a rate that degrades gracefully with increased fault rate, or return a clear failure indication in the rare case that they cannot converge. Furthermore, they store most of their data unreliably, and spend most of their time in unreliable mode. We demonstrate this for the specific case of detected but uncorrectable memory faults, which we argue are representative of all kinds of faults. We developed a cross-layer application / operating system framework that intercepts and reports uncorrectable memory faults to the application, rather than killing the application, as current operating systems do. The application in turn can mark memory allocations as subject to such faults. Using this framework, we wrote a fault-tolerant iterative linear solver using components from the Trilinos solvers library. Our solver exploits hybrid parallelism (MPI and threads). It performs just as well as other solvers if no faults occur, and converges where other solvers do not in the presence of faults. We show convergence results for representative test problems. Near-term future work will include performance tests.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。