Version 3 (modified by davea, 11 years ago) (diff)



In BOINC, the process of validation does two things:

  • it compares redundant results and decides which ones are to be considered correct;
  • it decides how much credit to grant to each correct result.

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 simple validator framework in which you plug in a few short application-specific functions. This is sufficient for most projects. If you need more control over the validation process, you can use BOINC's low-level validator framework.

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. These 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.