分散コンピューティングプラットフォームのFolding@homeがCOVID-19の原因となるSARS-CoV-2ウイルスのタンパク質の挙動を解析するようなプロジェクトに対応したそうです。*1
Folding@home update on SARS-CoV-2 (10 Mar 2020) – Folding@home
PCの余剰計算リソース(CPUやGPU)を使ってFolding@homeに参加したり、お金を寄付したり、手洗いや他者との適切な距離を保つなどして感染拡大を防ぐことが呼びかけられています。
Coronavirus – What we’re doing and how you can help in simple terms – Folding@home
そこで、Folding@homeをダウンロードして、実際にプロジェクトに貢献してみました。
難しい設定などはありませんので、余らせているPCや、過剰にハイスペックなPCをお使いの方なども、貢献してみてはいかがでしょうか。RadeonやGeForceといったディスクリートGPUを搭載していないマシンでもCPUだけで貢献することができますので、Ryzen ThreadripperやCore i9のようなメニーコアプロセッサを持て余してるなら、その演算能力を活かすのは今です*2。
ダウンロード・インストール
Folding@homeは以下の公式サイトからダウンロードできます。
foldingathome.org
(Windows版、macOS版、Linux版が存在するようですが、本投稿で紹介するのはWindows版になります。)
Windows版はインストーラー形式となっているので、ダウンロード後ダブルクリックでインストーラーが起動しますので、画面の指示通りインストールを行います。
実行
インストール時のオプションによっては、明示的に実行する必要がありますが、全てデフォルトでインストールした場合はPC起動時に自動で実行が開始されます。
(なお、特に指定しなければ、Folding@homeのチームに所属しないanonymousユーザーとして解析処理に貢献することになります。)
実行中の状況
WEB CONTROL画面から、I support research fightingを[Any disease]に指定すると、コロナウイルス関連のプロジェクトが優先的に配信されてくるようですが、コロナウイルス関連のプロジェクトだけを指定して貢献することはできません。
(2020/4/19更新) Folding@home 7.6.9からCOVID-19を明示的に指定することが可能になりました。
Folding@home 7.6.9がリリースされた - 記憶は人なり
(GPU) Project 11760 CORONAVIRUS PROJECT
↑GPUでコロナウイルスのプロジェクトに貢献中
COVID-19のプロテアーゼをシミュレートする優先度の高いCPUプロジェクトがあると表示されています。
(CPU) Project 14328 CORONAVIRUS PROJECT
↑CPUでコロナウイルスのプロジェクトに貢献中
使用リソース
コア(スレッド)数
WEB CONTROL画面からPowerがLight/Medium/Fullの指定が可能ですが、具体的にどうなるのか良く判りません。
使用するCPUのコア数は同梱されているFAHControlというツールを使用すると明示的に指定できます。
Configure -> Slotsと選択し、表示されるウインドウ中のCPUsに任意の値を指定することで、使用するスレッド数を指定できます。デフォルトは-1で自動で決定されます。
私の環境では4Core/4ThreadのXeonで-1指定で2Coreまたは3Core使われている状態を確認しています。これを4に手動で変更しても、実行中のワークロードには影響しないようで、CPU使用率は変わりませんでした。
その他
全体的にサーバー側が過負荷なのか、そもそもの解析対象データの準備が間に合っていないのか、外部からは判断できませんが、何もワークユニットが降ってこず、CPUやGPUがアイドル状態となっていることがよく見受けられます。
(追記ここから)
アイドル状態をなるべく回避する方法について↓に書きました。
wave.hatenablog.com
(追記ここまで)
なお、私のマシンでは一つのワークユニットを処理するのに概ね数時間かかっていますが、途中でPCを再起動してもそれまでの処理結果が失われることは無く、途中から処理が再開されます。
また、各ワークユニットには制限時間(FAHControlのStatusタブで右側のSelected Work Unit欄に表示されるTimeoutやExpiration ※表記時間はいずれもUTC)があるようですので、それまでに完了できないなら(ETAが完了までの予想時間のようなので、現在のUTC時刻+ETAがTimeoutやExpirationを超えるようなら)消費電力の無駄になってしまいますので、こまめに電源を落とすようなマシンでの実行には向かないかもしれません。
以上。