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 three short application-specific functions.
This is sufficient for most projects.
If you need more control over the validation process,
you can use BOINC's advanced 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:
";
list_start();
list_item("-app appname", "Name of the application");
list_item("[ -one_pass_N_WU N ]", "Validate at most N WUs, then exit");
list_item("[ -one_pass ]", "Make one pass through WU table, then exit");
list_item("[ -mod n i ]",
"Process only WUs with (id mod n) == i.
This option lets you run multiple instances of the validator
for increased performance."
);
list_item("[ -max_claimed_credit X ]",
"If a result claims more credit than this, mark it as invalid."
);
list_item("[ -max_granted_credit X ]",
"Grant no more than this amount of credit to a result."
);
list_item("[ -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."
);
list_end();
page_tail();
?>