wiki:ValidationIntro

Version 8 (modified by dhardy, 7 years ago) (diff)

corrected formatting

Validation

In BOINC, a validator is a program that decides whether results are correct.

A validator is a daemon program. You must supply a validator for each application in your project, and include it in the <daemons> section of your project configuration file.

Depending on various factors, you may be able to use a standard validator that comes with BOINC, or you may have to develop a custom validator.

  • If your application generates exactly matching results (either because it does no floating-point arithmetic, or because you use homogeneous redundancy) then you can use the 'sample bitwise validator' (see below).
  • If you are using BOINC for 'desktop grid' computing (i.e. you trust all the participating hosts) then you can use the 'sample trivial validator' (see below).
  • Otherwise, you'll need to develop a custom validator for your application. BOINC supplies a validator framework in which you plug in a few short application-specific functions.

Two standard validators are supplied:

  • The sample_bitwise_validator requires a strict majority, and regards results as equivalent only if they agree byte for byte.
  • The sample_trivial_validator regards any two results as equivalent if their CPU time exceeds a given minimum.

Command-line arguments

A validator (either standard or custom) has the following command-line arguments:

--app appname
Name of the application
[ --one_pass_N_WU N ]
Validate at most N WUs, then exit
[ --one_pass ]
Make one pass through WU table, then exit
[ --mod n i ]
Process only WUs with (id mod n) == i. This option lets you run multiple instances of the validator for increased performance.
[ --max_claimed_credit X ]
If a result claims more credit than this, mark it as invalid.
[ --max_granted_credit X ]
Grant no more than this amount of credit to a result.
[ --grant_claimed_credit ]
If set, grant the claimed credit, regardless of what other results for this workunit claimed. This is useful for projects where different instances of the same job can do much different amounts of work.
[ --credit_from_wu ]
If set, credit is specified by the <credit> element in the WU.

This is needed only with the BOINC-supplied validators.

[ --update_credited_job ]
For each valid result, create an entry in the credited_job database table.
This lets you keep track of which user contributed to each WU, even if you use db_purge.