2
require_once("docutil.php");
3
page_head("Dealing with numerical discrepancies");
5
Most numerical applications produce different outcomes
6
for a given workunit depending on the machine
7
architecture, operating system, compiler, and compiler flags.
8
For some applications these discrepancies produce
9
only small differences in the final output,
10
and results can be validated using a 'fuzzy comparison' function
11
that allows for deviations of a few percent.
13
Other applications are 'divergent' in the sense that small
14
numerical differences lead to unpredictably large differences
16
For such applications it may be difficult to distinguish
17
between results that are correct but differ because
18
of numerical discrepancies, and results that are erroneous.
19
The 'fuzzy comparison' approach does not work for such applications.
21
<h2>Eliminating discrepancies</h2>
23
One approach is to eliminate numerical discrepancies.
24
Some notes on how to do this for Fortran programs are given in a paper,
25
<a href=MOM1MP01.pdf>Massive Tracking on Heterogeneous Platforms</a>
26
and in an earlier <a href=fortran_numerics.txt>text document</a>,
27
both courtesy of Eric McIntosh from CERN.
29
<h2>Homogeneous redundancy</h2>
31
BOINC provides a feature called <b>homogeneous redundancy</b>
32
to handle divergent applications.
33
You can enable it for a project by including the line
35
<homogeneous_redundancy/>
37
in the <a href=configuration.php>config.xml</a> file.
40
Alternatively, you can enable it selectively for a single
41
application by setting the
42
<code>homogeneous_redundancy</code> field in its database record.
44
When this feature is enabled,
45
the BOINC scheduler will send results for a given workunit
46
only to hosts with the same operation system name and CPU vendor
47
(i.e., the os_name and p_vendor fields of the host description).
48
For example: if a result has been sent to a host of type
49
(Windows XP, Intel), then other results of that workunit will
50
only be sent to hosts of type (Windows XP, Intel).
53
If homogeneous redundancy is enabled,
54
it may be possible to use strict equality to compare redundant results.