BOINC 开发文档

处理数值差异


最后更新:2005年2月21日晚上9:32(太平洋时间)


给定一个任务包,大多数数值计算程序的计算结果会依赖于计算机架构,操作系统,编译器,还有编译器标志位。对于一些计算程序这些差异只会导致最终输出的小变化,要对计算结果进行验证,可以使用“模糊比较”的方法,也就是说允许几个百分点的误差。

而另外一些计算程序是发散的,即使是小的数值差异也会导致最终输出的不可预计的大差异。对于这些计算程序,很难判别计算结果是由于数值差异而有些不同但仍然是正确的,还是就是错误的。“模糊比较”的方法对这类计算程序不适用。

消除差异

一个解决方法是消除数值差异。如何对 Fortran 程序使用这种方法可以看这篇文章

同类冗余

BOINC 提供了一个称之为同类冗余(homogeneous redundancy)的特性来处理发散的计算程序。您可以在 config.xml 文件中包含如下行来为项目启用这个特性。

<homogeneous_redundancy/>

或者,你也可以通过设置数据库记录的 homogeneous_redundancy 字段来有选择性地对单个计算程序启用此特性。

当这个特性被启用,BOINC 调度服务会将给定的任务包仅发送给那些具有相同的操作系统名称和 CPU 类别的主机(也就是主机描述中的 os_name 和 p_vendor 字段)。比如:如果一个计算结果被发送给一种主机类型(Windows XP,Intel),那这个任务包的其它计算结果也将只发送给这种类型的主机(Windows XP,Intel)。

如果您启用了同类冗余特性,它可能会对多余的结果进行严格而且平等的比较。


返回:BOINC 开发文档 / BOINC 中文站 / BOINC 开发技术概论
页面来源 / BOINC 官方站

本页内容由中国分布式计算总站组织翻译,原文出自 BOINC 官方开发文档。参与本页制作的人员有:Youth(翻译)、碧城仙(编辑)。本站所有内容版权为中国分布式计算总站所有。本站欢迎非赢利性网站在遵守中华人民共和国版权法的前提下摘录或引用本站内容,但是请注明原作者和原出处。