【BOINC】自作機パワーでがん解析Ver.67【旧UD】

このエントリーをはてなブックマークに追加
421Socket774
GPUマルチスレッド(nスレッド/1GPU)化

GPUマルチスレッド化に挑む前提として
1CPU+1GPUの解析は、何の異常もなく行えていること。

●マルチスレッド化のメリット
 ・GPUの余剰時間(アイドル時間)をなくす
 ・GPUの余剰能力を使い切る(特にHD7850以上で顕著と思われる)
 これらによる時間当たりの処理数(Res/h、でもってPt/day)の向上
●専用機推奨
 雑用機・ゲーミング機等、"ながら解析"で上記メリットは望めない、
 むしろ高負荷のため、"ながら"の本業の方が作業不可能になる。適用は専用機推奨。
 ただし、PC使用(解析ストップ)⇔解析実行をきっちり分けて運用でき、
 そういった運用にストレスが無ければ、問題ナシ。
 画面描画用と解析用のGPUが別々の場合も問題ナシ。
●冷却注意
 負荷の高い3Dベンチに比べれば全然マシだが、GPU温度に余裕が無ければ止めるべき。

必要な記述をしたapp_info.xmlをBOINCに読み込ませることで、
1個の宿題に対して通常「1CPU+1GPU」であるところを
「1CPU+0.5GPU」や「1CPU+0.33GPU」に変更できる。
1GPUに対して2個、3個〜それ以上の宿題が同時進行するようになる。
422Socket774:2012/11/05(月) 20:59:00.94 ID:2E0A9gxH
app_info.xmlの作成 (記述内容は後述)
メモ帳を使うと、文字コード絡みで作成ミスが多いので
原則として、xmlエディターを使う事を推奨
例えば、XML Notepad 2007
http://www.microsoft.com/en-us/download/details.aspx?id=7973

app_info.xmlの保存場所
C:\ProgramData\BOINC\projects\www.worldcommunitygrid.org
個別に指定している場合は、その場所

BOINC Managerを終了し
app_info.xmlを所定の場所に保存して
BOINC Managerを再起動する

※xmlの適用/変更/解除の都度、宿題を空にしてBOINC Managerを再起動すること。
 推奨…小まめに[タスクの新規取得禁止]をする
 推奨設定…Minimum work buffer[0.1]日
※設定によってはBOINC Managerを終了させても裏で走っている場合が有る。
 分かる人は設定の再確認を。分からない人はPC再起動を。

xml記述内容
とりあえず
「xml適用した状態ではHCCのGPUだけもらう」
「 [1CPU+1GPU] ⇒ [1CPU+0.5GPU] …1GPU当たり2スレッド化 」
に必要な内容を書く
 (RADEON>423)(GEFORCE>424)
423Socket774:2012/11/05(月) 20:59:37.00 ID:2E0A9gxH
----- app_info.xmlの内容 ATi(AMD)RADEON -----
<app_info>
<app>
<name>hcc1</name>
<user_friendly_name>Help Conquer Cancer</user_friendly_name>
</app>
<file_info>
<name>wcg_hcc1_img_6.56_windows_intelx86__ati_hcc1</name>
<executable/>
</file_info>
<file_info>
<name>hcckernel.cl.6.56</name>
<executable/>
</file_info>
<app_version>
<app_name>hcc1</app_name>
<version_num>656</version_num>
<platform>windows_intelx86</platform>
<plan_class>ati_hcc1</plan_class>
<avg_ncpus>1.0</avg_ncpus>
<max_ncpus>1.0</max_ncpus>
<coproc>
<type>ATI</type>
<count>.5</count>
</coproc>
<file_ref>
<file_name>wcg_hcc1_img_6.56_windows_intelx86__ati_hcc1</file_name>
<main_program/>
</file_ref>
<file_ref>
<file_name>hcckernel.cl.6.56</file_name>
<open_name>hcckernel.cl</open_name>
</file_ref>
</app_version>
</app_info>
424Socket774:2012/11/05(月) 21:00:11.99 ID:2E0A9gxH
----- app_info.xmlの内容 nVidia GeForce -----
<app_info>
<app>
<name>hcc1</name>
<user_friendly_name>Help Conquer Cancer</user_friendly_name>
</app>
<file_info>
<name>wcg_hcc1_img_6.56_windows_intelx86__nvidia_hcc1</name>
<executable/>
</file_info>
<file_info>
<name>hcckernel.cl.6.56</name>
<executable/>
</file_info>
<app_version>
<app_name>hcc1</app_name>
<version_num>656</version_num>
<platform>windows_intelx86</platform>
<plan_class>nvidia_hcc1</plan_class>
<avg_ncpus>1.0</avg_ncpus>
<max_ncpus>1.0</max_ncpus>
<coproc>
<type>CUDA</type>
<count>.5</count>
</coproc>
<file_ref>
<file_name>wcg_hcc1_img_6.56_windows_intelx86__nvidia_hcc1</file_name>
<main_program/>
</file_ref>
<file_ref>
<file_name>hcckernel.cl.6.56</file_name>
<open_name>hcckernel.cl</open_name>
</file_ref>
</app_version>
</app_info>
425Socket774:2012/11/05(月) 21:00:59.98 ID:2E0A9gxH
以上を行い、いくつかのWUを解析し、答え合わせまで問題無ければ
countの設定を変更&試運転しつつ、最適スレッド数を模索していく。

count説明
xml内の記述<count>.5</count>
[.5] ⇒ [1CPU+0.5GPU]…2スレッド/GPU なので、
[.33]と書けば3スレッド/GPUになるし
[.25]と書けば4スレッド/GPUになる。
以下[.2][.16](略

先例・検証方法・考え方など参考
>310,>315,>369
  なお、>369はPointとしてBoinc Creditで書いてあるので、
  WCGポイントとしてはその7倍である。
GPU当たりの最適スレッド数は GPUを始め環境によって変わるので
@一定時間当たりの宿題処理数(WU/h,Res/h)で最適スレッド数を見極めるのがよい
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~←WCGのHPにログイン、「結果状況」から
また、>369のような例を見ると
Aガンガン詰め込んでも、意外と伸びる場合もある
ということが分かる。

上記を踏まえて、
countを適宜設定⇒一定時間解析⇒WU/h確認  を繰り返せば、
WU/hが最大になるcount設定値=その環境での最適スレッド数 が分かる。
PC稼働時間がかなり必要な作業なので、
程々にしつつ「冷却不安だしとりあえず.33でいいや」というのもアリっちゃアリ。

countを決定したら後はひたすら回すのみ。
426Socket774:2012/11/05(月) 21:01:49.07 ID:2E0A9gxH
その他応用に関するレス
 CPU専用宿題もやりたい
  >395,>398(後半)
 GPUには詰め込んだ、CPUの遊びが多い,CPU側の占有スレッド数を切り詰めたい
  例:[1CPU+0.2GPU]を、[0.8CPU+0.2GPU]にする
  >377,>398(前半)

GPUマルチスレッド化の手順+α、以上。

長ったらしい糞まとめでゴメンね^^