複合アプリケーション |
|
struct BOINC_OPTIONS {
int main_program;
int check_heartbeat;
int handle_trickle_ups;
int handle_trickle_downs;
int handle_process_control;
int handle send_status_msgs;
int direct_process_action;
};
int boinc_init_options(BOINC_OPTIONS*);
| main_program | 主プログラムの中でこのフラグをセットして下さい。 |
| check_heartbeat | ハートビート検査。 もしセットすると、このプログラムはコア・クライアントからの 'heartbeat'メッセージを監視することを意味します。 もし、'heartbeat'メッセージが途絶えたら、その結果は、 direct_process_action フラグ(下記)に従います。 |
| handle_trickle_ups | 上りトリクルメッセージの使用。 もしこのフラグをセットすると、このプログラムは trickle-up メッセージを送ることができます。 |
| handle_trickle_downs | 下りトリクルメッセージの使用。 もしこのフラグをセットすると、このプログラムは trickle-down メッセージを受取ることができます。 |
| handle_process_control | プロセス制御機能を使用。 このフラグをセットすると、 このプログラムはコア・クライアントから来る 'suspend'、'resume' および 'quit' メッセージを処理することになります。 この動作は、 direct_process_action フラグに依存します。 |
| send_status_msgs | 状態メッセージの送信。 このフラグをセットすると、 その CPU 時間と 計算完了率(fraction done) をコア・クライアントに報告することになります。 ワーカープログラムでセットしてください。 |
| direct_process_action | プロセス動作の即時処理。 このフラグをセットする場合、 このプログラムは quit メッセージの受信と、heartbeat 断絶 に対して、 終了(exit)で対処します。 suspend および resume メッセージの受信に対しては、それぞれ、一時中断と再開を行います。 もしこのフラグセットしない場合には、これらの事象は BOINC_STATUS 構造体に反映されるので、このプログラムからは boinc_get_status() 関数を使ってその状況を調べることができます。 |
| all_threads_cpu_time | このフラグをセットすると、全てのスレッドの CPU 時間を計測します。 (対象のスレッドはワーカスレッドだけでなく全部です)。 複数のスレッドを使って計算を実行するアプリケーションのために用意しました。 |
主プログラムの典型的なロジックは下記のようになります。
BOINC_OPTIONS options;
options.main_program = true;
...
boinc_init_options(&options)
read main state file // 主-状態ファイルを読む
for each remaining worker program: // 残っているワーカープログラムについて
aid.fraction_done_start = x
aid.fraction_done_end = y
boinc_write_init_data_file()
run the app // そのワーカープログラムを走らせる
wait for the app to finish
poll
write main state file // 主-状態ファイルへの書き出し
if last app:
break
boinc_parse_init_data_file() // app_init.xml ファイルから CPU 時間を読み出す。
boinc_finish()
ここで、x と y は、対応する計算完了率の範囲の境界値です。
ワーカープログラムの典型的なロジックは下記のようになります。
BOINC_OPTIONS options; options.main_program = false; options.send_status_msgs = true; ... boinc_init_options(&options); ... 仕事をこなし、0 と 1の間の値を引数に boinc_fraction_done() を呼び、 ときどき、boinc_time_to_checkpoint() を呼び出します。 ... boinc_finish(); // この関数で 最終的な CPU 使用時間を app_init.xml ファイルに書き出します。
ワーカープログラムと併行して走るあるプログラムが
GUI を扱うものである場合、そのプログラムから、まず、
典型的には全てのオプションを false にセットして
boinc_init_options() を呼ぶ必要があります。
その後で boinc_init_graphics() を呼び出し、
最終的には、boinc_finish() を呼び出します。
主プログラムがアプリケーションの状態をコア・クライアントに報告することに責任を持つなら、 以下の関数を定期的に呼び出す必要があります。
boinc_report_app_status(
double cpu_time, // ワークユニットの計算開始時点からの CPU 時間
double checkpoint_cpu_time, // 最後のチェックポイントからの CPU 時間
double fraction_done
);
最終更新時刻 00:47:38, 2006年08月12日(JST)
Copyright © 2012 University of California.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by the Free Software Foundation.
Copyright © 2012 Komori Hitoshi(je2bwm at jarl.com).
Japanese translation from English web pages on BOINC.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by the Free Software Foundation.