假设我在http://www.nersc.gov/users/computational-systems/edison/configuration上的100k内核上运行了4个小时的超级计算机计算,通过网络交换了大约4 PB的数据,并执行了大约4 TB的I /哦 计算都是整数,所以结果是对还是错(没有中间数值错误)。
假设代码正确,我想估计由于硬件故障而导致计算错误的可能性。有什么好的方法可以解决这个问题?是否有足够的资源可以估算出所需的数字?
假设我在http://www.nersc.gov/users/computational-systems/edison/configuration上的100k内核上运行了4个小时的超级计算机计算,通过网络交换了大约4 PB的数据,并执行了大约4 TB的I /哦 计算都是整数,所以结果是对还是错(没有中间数值错误)。
假设代码正确,我想估计由于硬件故障而导致计算错误的可能性。有什么好的方法可以解决这个问题?是否有足够的资源可以估算出所需的数字?
Answers:
您是否查看了各种亿万亿级报告?艰难的失败在今天并不是什么大问题-当然可以发生,但是它们的发生频率不足以引起严重的担忧。但是据估计,在具有或更多核的百亿亿次级系统上,它们足够频繁,因此需要准备代码以做出适当反应。我相信这些问题已经在关于百亿亿美元路线图的报告中列出。
我的回忆是,在各种故障模式中,内存或处理器内核的单位翻转不是最重要的问题。相反,这是整个节点崩溃的原因,例如由于磁盘故障,操作系统故障等。因此,当前的亿亿级设计都要求将代码的定期检查点指向闪存RAM,最好在节点外传输检查点数据。如果系统遇到一个节点已消失,则代码将需要能够从先前保存的状态即时重新启动,并用系统中其他位置的热启动节点替换该节点。
我猜想,您是从收集DRAM等组件的错误率开始的,就像Google对“野生的DRAM错误:大型现场研究”的这项研究一样,他们发现每年大约有1%的机会得到一个不可纠正的错误。
我不确定这是否是您感兴趣的。我会对无法检测到的错误更感兴趣。无法检测到典型错误检查方法的错误。例如,当您通过光学设备发送数据包时,它们会伴随某种形式的CRC,这使得错误漏失的几率很小。
更新:本白皮书《多核处理器中的在线错误检测和恢复体系结构》讨论了可靠的多核体系结构,但它们也涵盖了系统可靠性的不同方面,并具有参考书目。
是否有足够的资源可以估算出所需的数字?
您可以尝试询问正在计算的群集的管理员。我认为,作为他们验证过程的一部分,他们遇到了估计硬件错误可能性的问题。
听起来很史诗。如果没有人做过这个实验,您可能会考虑运行100k个独立的内核,执行类似的操作,一遍又一遍地刷新sha1输入,看看错误率是多少。(我怀疑这是无法衡量的),但从那里开始,却经常让它们交易哈希链结果,以获取网络错误率。我想这也很小,但我怀疑您可以在几个小时内使用超级集群至少获得几对:)
这种方法可确保每个计算都是正确的,因为哈希对位交换极为敏感,而即使是仅整数的计算,也可能在分支中隐藏错误,即,整个计算不会在每个连续的内存状态上都是椭圆形的。
我一直在努力确保外部集群正确运行代码,该集群的动机是通过提交伪造的结果来作弊。我收敛的解决方案是以某种频率将散列集成到计算中,这使得作弊的效率不及工作。