以下は下記原文 2005/02/23(JST)時点 の検証無し翻訳です。 原文は University of California より GFDL で配付されており、
この翻訳も GFDL に従います。
原文: Dealing with numerical discrepancies
 
 
最終更新時刻 2006/03/01 01時10分 JST

数値計算の不一致に対処する

boinc.gif
Last modified 9:32 PM UTC, February 21 2005

多くの数値計算アプリケーションは、与えられた同一のワークユニットに対して、 走らせる計算機のアーキテクチャ、OS、コンパイラ、そしてコンパイル時フラグ が異なれば、異なった結果を出してしまいます。 ある種のアプリケーションについては、 これらの不一致が最終的な出力に生じさせる差異はとるに足らぬものなので、 数パーセントの誤差を許容する「ファジーな比較」をつかえば、 うまく検証できます。

それ以外のアプリケーションは、数値計算上の不一致が、 予想できない大きな差を最終的な出力にもたらすという意味で、 「発散的」であると言われます。

このようなアプリケーションの場合には、 どれも正しいながらも数値計算上の不一致により結果の間に差がある場合と、 異常を含む結果群である場合とを見分けることが難しいことがあります。 「ファジーな比較」という方法もこのようなアプリケーションを上手く扱えません。

不一致の除去

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)というタイプの計算機だけに送られます。

この一様な冗長計算という機能を有効にすると、 冗長に計算したリザルトを比較するときに、「厳密な一致」という基準が 使えるかもしれません。


(訳注1):リザルト
BOINCの用語では、 リザルト(result)は、計算の「結果」よりも広い意味をもっています。 結果を意味することはもちろんですが、計算が始まる前に クライアントにばらまかれる個々の仕事も、リザルト(results)と呼んでいます。

BOINCの訳のメインページに戻る | (原文のメインページに戻る)
 
Copyright © 2005 University of California
Translated by JE2BWM.