Автор: Савенко Дмитрий
Дата создания: 10.10.2005
Версия: 0.1
Дата последнего изменения: 11.10.2005


VALIDATOR

Этот механизм реализует две функции. Во-первых, когда набирается достаточное количество положительных результатов ("кворум"), валидатор сравнивает их и определяет, достигнут ли "консенсус". Метод сравнения результатов (оторый, возможно, потребует учета особенностей работы разных платформ с числами с плавающей точкой) и способ определения консенсуса (например, лучшие два из трех) должны быть реализованы приложением. Если консенсус достигнут, точный результат назначается "каноническим" (см. описание assimilator'a).

Во-вторых, если результат, полученный с помощью при шаге 1, уже был достигнут ранее, новый результат сравнивается с каноническим, что дает возможность определить, давать пользователю кредит или нет.

Система BOINC предоставляет каркас валидатора (validator.c). Для создания валидатора всего лишь нужно дописать две функции:

int check_set(vector results, DB_WORKUNIT& wu, int& canonicalid, double& credit, bool& retry);
int check_pair(RESULT& new_result, RESULT& canonical_result, bool& retry);

Ни одна из этих функций не должна содержать удаления файлов или прямых обращений к базе данных. Более детальное описание доступно здесь.

Доступна также два примера корректных валидаторов (simple_bitwise_validator и simple_trivial_validator)

Валидатор имеет следующие аргументы командной строки: