以下は下記原文 2005/01/14(JST)時点 の検証無し翻訳です。
原文は University of California より GFDL で配付されており、
この翻訳も GFDL に従います。
原文:
Result assimilation
最終更新時刻 2006/03/01 01時10分 JST
リザルトの取込み
|
Last modified 9:55 PM UTC, January 09 2005
|
プロジェクトは、アプリケーションごとに1つ assimilator プログラムを
作る必要があります。 そのためには、
プログラム sched/assimilate.C に下記の形をした
アプリケーション固有の関数にリンクさせます。
int assimilate_handler(
WORKUNIT& wu, vector<RESULT>& results, RESULT& canononical_result
);
この関数は以下の場合に呼ばれます。
- 処理対象のワークユニットに、ゼロではない
エラー・マスクがついている場合
(たとえばとても多くの異常リザルトの受信があった場合)です。
このとき、上記関数はログに何らかのメッセージを書くなり、
アプリケーションの開発者にE-mailを送るなりすることが考えられます。
- 処理対象のワークユニットが標準的リザルトを持っている場合。
この場合、 wu.canonical_resultid
はゼロではない値を持ち、canonical_result
にはその標準リザルトが入っています。
作成する上記関数は、たとえば、標準リザルトの出力ファイルを解析して、
その内容を別個のデータベースに書き出すということが考えられます。
いずれの場合でも、対象の「リザルト」ベクターは、
対象のワークユニットのリザルト群で(失敗および未送出のリザルトも含みます)
埋められた状態で、この関数は呼ばれます。
すべてのファイル(入力、出力)は、通常は、ディスクの上にあります。
上記の2つの条件が同時に成り立っていることもあり得ます。
もし、assimilate_handler() 関数がゼロを返すと、[ assimilator は、]
対象のワークユニットの記録に「取込み済み(assimilated)」の印をつけます。
ゼロ以外の値を返すと、assimilator はエラーメッセージをログに出力して exit
します。 典型的には、この関数はゼロでない値を返すべきです。
こうすることによって、計算完了したあるいは異常なワークユニットが
BOINC によって誤ったやり方で処理される前に、
システムの管理者は問題を正すことができます。
ファイルのパスネームを取り出し、そのファイルをオープンするために、
BOINC が提供する
バックエンド・ユーティリティ関数群
を使うことができます。