2004-06-09 19:09:16 +00:00
|
|
|
<?php
|
2004-05-18 18:33:01 +00:00
|
|
|
require_once("docutil.php");
|
2005-02-23 06:19:20 +00:00
|
|
|
page_head("Dealing with numerical discrepancies");
|
2004-05-18 18:33:01 +00:00
|
|
|
echo"
|
2004-05-26 20:44:29 +00:00
|
|
|
Most numerical applications produce different outcomes
|
|
|
|
for a given workunit depending on the machine
|
|
|
|
architecture, operating system, compiler, and compiler flags.
|
2005-02-23 06:19:20 +00:00
|
|
|
For some applications these discrepancies produce
|
|
|
|
only small differences in the final output,
|
|
|
|
and results can be validated using a 'fuzzy comparison' function
|
|
|
|
that allows for deviations of a few percent.
|
|
|
|
<p>
|
|
|
|
Other applications are 'divergent' in the sense that small
|
|
|
|
numerical differences lead to unpredictably large differences
|
|
|
|
in the final output.
|
|
|
|
For such applications it may be difficult to distinguish
|
2004-05-18 18:33:01 +00:00
|
|
|
between results that are correct but differ because
|
2005-02-23 06:19:20 +00:00
|
|
|
of numerical discrepancies, and results that are erroneous.
|
|
|
|
The 'fuzzy comparison' approach does not work for such applications.
|
|
|
|
|
|
|
|
<h2>Eliminating discrepancies</h2>
|
|
|
|
<p>
|
|
|
|
One approach is to eliminate numerical discrepancies.
|
2006-11-02 20:38:47 +00:00
|
|
|
Some notes on how to do this for Fortran programs are given in a paper,
|
|
|
|
<a href=MOM1MP01.pdf>Massive Tracking on Heterogeneous Platforms</a>
|
|
|
|
and in an earlier <a href=fortran_numerics.txt>text document</a>,
|
|
|
|
both courtesy of Eric McIntosh,
|
2004-05-18 18:33:01 +00:00
|
|
|
|
2005-02-23 06:19:20 +00:00
|
|
|
<h2>Homogeneous redundancy</h2>
|
2004-05-18 18:33:01 +00:00
|
|
|
<p>
|
|
|
|
BOINC provides a feature called <b>homogeneous redundancy</b>
|
2005-02-23 06:19:20 +00:00
|
|
|
to handle divergent applications.
|
2004-09-27 04:26:51 +00:00
|
|
|
You can enable it for a project by including the line
|
2004-05-18 18:33:01 +00:00
|
|
|
<pre>
|
|
|
|
<homogeneous_redundancy/>
|
|
|
|
</pre>
|
|
|
|
in the <a href=configuration.php>config.xml</a> file.
|
|
|
|
|
2004-09-27 04:26:51 +00:00
|
|
|
<p>
|
|
|
|
Alternatively, you can enable it selectively for a single
|
|
|
|
application by setting the
|
|
|
|
<code>homogeneous_redundancy</code> field in its database record.
|
2004-05-18 18:33:01 +00:00
|
|
|
<p>
|
|
|
|
When this feature is enabled,
|
|
|
|
the BOINC scheduler will send results for a given workunit
|
|
|
|
only to hosts with the same operation system name and CPU vendor
|
|
|
|
(i.e., the os_name and p_vendor fields of the host description).
|
|
|
|
For example: if a result has been sent to a host of type
|
|
|
|
(Windows XP, Intel), then other results of that workunit will
|
|
|
|
only be sent to hosts of type (Windows XP, Intel).
|
|
|
|
|
|
|
|
<p>
|
|
|
|
If homogeneous redundancy is enabled,
|
|
|
|
it may be possible to use strict equality to compare redundant results.
|
|
|
|
|
|
|
|
";
|
|
|
|
page_tail();
|
|
|
|
?>
|