数値計算の不一致に対処する |
Last modified 9:32 PM UTC, February 21 2005 |
それ以外のアプリケーションは、数値計算上の不一致が、 予想できない大きな差を最終的な出力にもたらすという意味で、 「発散的」であると言われます。
このようなアプリケーションの場合には、 どれも正しいながらも数値計算上の不一致により結果の間に差がある場合と、 異常を含む結果群である場合とを見分けることが難しいことがあります。 「ファジーな比較」という方法もこのようなアプリケーションを上手く扱えません。
1つの解決方法は、数値計算上の不一致をなくすことです。 Fortran プログラムにおいて、 数値計算上の不一致をなくす方法についてのいくつかの注意 (原文)がここにあります。
このような発散的アプリケーションのために、 BOINC は 一様な冗長計算(homogeneous redundancy) という機能を提供します。 この機能は下記の行を config.xml ファイルに 含ませることによって、プロジェクト単位で有効になります。
<homogeneous_redundancy/>
別のやり方として、
この機能をひとつのアプリケーションごとに選択的に有効にすることもできます。
そうするには、そのアプリケーションのデータベース・レコードに、
homogeneous_redundancy
フィールドを設定します。
この機能が有効になると、BOINC のスケジューラは、 特定のワークユニットに対して生成した [複数の] リザルト訳注1 を、 同一のOS名と同一のCPUベンダーの計算機(つまり、 host 記述の中の os_name と p_vendor フィールドが同じもの) にだけに送るようになります。 たとえば、一つのリザルトが(Windows XP, Intel)というタイプの ある計算機に送られていたなら、その他のリザルトも (Windows XP, Intel)というタイプの計算機だけに送られます。
この一様な冗長計算という機能を有効にすると、 冗長に計算したリザルトを比較するときに、「厳密な一致」という基準が 使えるかもしれません。