【BOINC】自作機パワーでがん解析Ver.67【旧UD】
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個〜それ以上の宿題が同時進行するようになる。
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)
----- 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>
----- 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>
以上を行い、いくつかの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を決定したら後はひたすら回すのみ。
その他応用に関するレス
CPU専用宿題もやりたい
>395,>398(後半)
GPUには詰め込んだ、CPUの遊びが多い,CPU側の占有スレッド数を切り詰めたい
例:[1CPU+0.2GPU]を、[0.8CPU+0.2GPU]にする
>377,>398(前半)
GPUマルチスレッド化の手順+α、以上。
長ったらしい糞まとめでゴメンね^^