Ryzen Threadripper 3990Xで新型コロナウィルス解析の分散コンピューティングに参加するとどうなる?

文●加藤勝明(KTU) 編集● ASCII

2020年04月27日 00時00分

「Folding@Home」と「Rosetta@Home」でRyzen Threadripper 3990Xは使い切れるのか検証する

 人類はこれまでにも多くの疾病と闘い克服してきた。今猛威を振るっている新型コロナウイルス感染症(COVID-19)もいつかは乗り越えられると皆信じて日々を過ごしている。

 現時点で我々ができることは手洗い&うがいや社会的距離の確保、そして十分な休息が第一とされているが、自分のPCを使って貢献できること(あくまで可能性だが)がある。

 それはCOVID-19を引き起こすウイルス(SARS-CoV-2)の構造を徹底的に解析するというものだ。既にSARS-CoV-2のゲノムについては解析が済んでいるが、SARS-CoV-2を構成する多種多様なタンパク質がどういった構造をとっているのか、それがどう振る舞うのかについてはまだ解明されていない。

 こうした分子生物学的なアプローチによって治療法の発見の足がかりができると期待されているが、タンパク質の解析には莫大な計算力が必要になる。

 この計算力問題を解決するのが分散コンピューティングプロジェクトだ。個人所有のPCの持つ計算力はわずかでも、それを合わせることで大きな計算力になる。ウイルス治療法のABCすら知らなくても、計算力は提供できる。SARS-CoV-2の解析によって突破口が見つかる糸口になれば、ハイスペックなPCを持った甲斐があったというものだ。

 この分散コンピューティングプロジェクトに参加するために必要な資格などはない。自分のPCの消費電力が増えてしまうことさえ許容できれば、誰でも無料で参加できるし、いつ脱退してもペナルティーはない。

 筆者は「人類のために参加しろ!」と言うつもりはないが、今のAMD製CPUは分散コンピューティングプロジェクトで高い貢献ができるだけの素晴らしいパフォーマンスを備えている。

 そこで今回は、AMDの誇る「Ryzen Threadripper 3990X」で分散コンピューティングプロジェクトがどんな感じで動くのか、についてざっくりと検証してみた。64コア(C)/12スレッド(T)のCPUを搭載すると、一体どれだけ回るのか、実際に調べていきたい。

分散コンピューティングプロジェクトのひとつ「Folding@Home」の公式サイト

「BOINC」も有名

 今回の検証は以下のハードウェア構成で実施した。メモリーは当初32GBを選択したが、実はこれは大きな誤りだった。詳細は後述する。

検証環境
CPU AMD「Ryzen Threadripper 3990X」
(64コア/128スレッド、2.9~4.2GHz)
マザーボード ASRock「TRX40 Taichi」
(BIOS P1.60)
メモリー G.Skill「F4-3200C16D-16GTZRX」×2
(DDR4-3200、8GB×4)
ビデオカード NVIDIA「GeForce RTX 2080 Ti Founders Edition」
ストレージ ウエスタンデジタル「WDS100T2X0C」
(NVMe M.2 SSD、1TB)
電源ユニット Super Flower「Leadex Platinum 2000W」
(2000W、80Plus Platinum)
CPUクーラー CRYORIG「A80」
(簡易水冷、280mmラジエーター)
OS Windows10 Pro 64bit版
(November 2019 Update)

Folding@HomeだとRyzen Threadripper 3990Xは余裕すぎる

 Folding@Homeはタンパク質の折りたたみ問題を扱うための分散コンピューティングプロジェクトだ。タンパク質を構成するアミノ酸の種類と数が分かっていても、これがどういう立体構造になっているのかまでは完全に解明されていない。

 100個ほどのアミノ酸で構成されていた場合、考えられるタンパク質の構造は10の60乗ほどあるが、正解の構造はたった1つだ。この立体構造が分かれば、どこにどういった分子が作用してどういった結果を生む、というメカニズムを知る手がかりとなる。

 Folding@Homeの導入についてはジサトライッペイ氏が解説しているので改めて解説はしない。Folding@Home上で「Any disease」を選択することにより、SARS-CoV-2に関連するタスクが割り振られる可能性がある。「可能性がある」というのは、現在Folding@Homeには世界中からユーザーが殺到しており、仕事(ワークユニット)の割り振りがやや滞り気味になっているからだ。

 Folding@Homeの処理は「Light」「Medium」「Full」の3段階があって、Fullの方が重くなる。今回GPUはRTX 2080 Tiを搭載しているが、CPUの働きに注目したいのでGPUは処理から外れるよう「Configure」で設定した。

Folding@HomeのWebインターフェース。ここで計算力をどの程度使うことを許可するか設定できる。非力なPCなら「Light」かつ「Only when idle」の組み合わせが良いが、Ryzen Threadripper 3990Xなら「Full」「While I'm working」でも余裕だろう

Folding@HomeのAdvanced Controlから「Control」→「Slots」と進むと、どのデバイスを利用するかの指定ができる。「1-gpu」というエントリーがあるが、これをRemoveして図のような状態にすれば、GPUは使われなくなる

 Folding@Homeはマルチスレッド化されており、ユーザーが利用するスレッド数を決めることができる。だが現時点でのFolding@Homeクライアントは32スレッドまでしか使わないため、Ryzen Threadripper 3990Xには余裕もいいところだ。だがこれは裏を返せば、普段使いの裏側でFolding@Homeを使い続けることができることを示している。

Folding@HomeのCPU占有率。Full設定でもRyzen Threadripper 3990Xの3割程度しか使っていない。占有率の偏りを見た感じ、プロセッサーグループの壁は越えられないようだ

Folding@Homeの使うスレッド数は前掲の「Configure」ウィンドウの「Slot」タブからCPUを選択し「Edit」を押すと編集できる。「-1」は自動設定だが、これを128にセットしても32スレッドまでしか使われない

「Light」設定だとCPU占有率はぐっと下がる。濃い部分が15コア、薄い分を集めると1スレッドで合計16コア分といったところか

「Medium」設定だと30コアくらいに負荷が高まる

前掲の「Full」とは別のシーン。ここでは32コア分のコアが濃くなっている

 Folding@Homeでユーザー名を登録すれば、自分の成果をポイントという形で確認できるので励みにはなるが、別に競技でもないし何かに交換できる訳でもない。ワークユニットの内容も常に変化するので「この程度のポイントになった」という指標は比較しない。だが、消費電力については知っておくべきだろう。

 今回はラトックシステム「REX-BTWATTCH1」を利用し、Folding@Homeの3モードにおける消費電力の違いをざっと比較してみた。ただし処理中に消費電力は刻々と変動するため、目測で“だいたいの安定値”を見ているだけだ。

Folding@Home実行中のシステム全体の消費電力

 前述の通り今回はGPUを計算デバイスから外しているため、ほぼCPUの消費電力と考えてよいだろう。32コアあればワークユニットの処理も結構サクサク進むが、これを24時間/30日続けると電気代はざっと6600円〜7600円(1kWh27円で計算)となる。Ryzen Threadripper 3990Xは計算力の貢献はしやすいものの、パワーのあるCPUだけに電気代には十分注意したい。

Rosetta@Homeではメモリーが重要

 SARS-CoV-2をターゲットにした分散コンピューティングプロジェクトはFolding@Homeだけではない。分散コンピューティングプロジェクトのプラットフォーム「BOINC」の中にも、SARS-CoV-2の解析を行なうプロジェクト「Rosetta@Home」がある。

 まずは簡単にRosetta@Homeの参加方法を解説しておこう。まずはBOINCの公式サイトからBOINCマネージャーのインストーラーをダウンロードし導入する。

 BOINCマネージャーはVirtualBoxを使うものとWindowsネイティブなものの2つが用意されているが、前者はWindows用のクライアントのないプロジェクトに対しても使えるが、VirtualBoxが別途必要になる。Rosetta@HomeはWindowsネイティブ版で動くので後者を選ぼう。

Windows向けのBOINCマネージャーは2種類の配布形態があるが、Rosetta@Homeに限ってはWindowsネイティブ版(右)でよい

インストールが終わるとプロジェクトの登録に入る。異星人を見つけるSETI@Home等のプロジェクトもあるが、今回はRosetta@Homeを選択して「次へ」をクリック

Rosetta@Homeに限らずBOINC系のプロジェクトはプロジェクト単位でメールアドレスとパスワードを登録してメンバーになる必要がある。無料なのでお気軽に

晴れてメンバーになるとこの状態に。サーバーからワークユニットをダウンロードするのだが、コア数が多いほどダウンロードするサイズも大きくなる(当然だが)。128コアフルに使う場合は最低でも120GB程度消費される

Rosetta@Homeでは現在COVID-19の治療薬や診断に役立つと考えられているタンパク質を見つけ出すプロジェクトが動いている

 Rosetta@Homeの計算量はCPU/メモリー/ストレージ資源をどこまで使うかで決まる。今回筆者がRosetta@Homeの計算を始めた当初は、CPUは30コア前後しか使われていなかったが、これはメモリーが32GB構成だったため。BOINCの場合1プロセスが多数のスレッドで動くのではなく、並列化する分だけプロセスが起動する。

 128コア使えるRyzen Threadripper 3990XでRosetta@Homeを使おうとすると、メモリー不足で処理を止めてしまうプロセスが多発する。そこでさらに64GB(G.Skill F4-3200C16D-32GTZRX×2)を追加し合計96GB構成とし、メモリーの使用上限を全体の90%まで許可したところ、メモリー不足で停止するプロセスは消滅した。

 ただその場合でもCPU占有率は80%前後にとどまるので、128コア全て使い切るのは割り当てられるワークユニット次第といったところか。

Rosetta@HomeをBOINC標準の設定で動かしてみたが、CPU占有率が30%程度。プロセッサーグループの壁は越えているようだが、コアに仕事が割り振られていないのだ……

Rosetta@Homeの場合、細かいプロセスが並列に立ち上がる。1プロセス=1スレッド=1コアと考えてよいだろう

BOINCマネージャーの詳細画面を開き「タスク」を確認してみると、メモリー不足のため処理が止まっているという表記がズラリ。コアを多数使おうとすれば、メモリーもそれなりに必要なのだ

慌ててメモリーを96GBに設定するとコア使用率は2倍程度に増えたが、まだメモリー不足を訴えるプロセスが残った

BOINCの「計算に関するプリファレンス」→「計算」へと進む。CPUはコア数100%、CPU時間も100%使うのがデフォルトの設定。計算量を絞りたい時は上の数値2つを小さくしよう

今回筆者が遭遇した問題は「ディスクとメモリ」に解決法があった。「コンピュータを使用中、最大使用時でも50%」となっていたが、これを90%に引き上げた

メモリー使用量の上限を上げた結果、全プロセスが稼働するように。ただし128コア全てが埋まる訳ではないようだ

Windowsから見たメモリーの使用量はかなり変動する。図は48GBで安定していたが、64GBキッチリ使う時もあった

地味に驚いたのがローカルに保存されるデータファイルの容量。BOINCマネージャーで見ると約120GB消費していることが判明

まとめ:超メニーコアCPUの力を活かす一つのソリューション

 今回試した2つの分散コンピューティングプロジェクトの中では、Folding@Homeはお手軽かつシステムへの負担も少なく、常時動かしても軽い感じだった。それこそ、Ryzen Threadripper 3990Xのスレッド数ならば余裕だっため、通常作業の裏で動作させて貢献できそうだ。

 一方、Rosetta@HomeはFolding@HomeよりもRyzen Threadripper 3990Xを活用できるが、CPU占有率が80%近くなるだけあって消費電力は445Wと高くなり、電気代は1ヶ月あたり8600円まで上昇した。

 Ryzen Threadripper 3990Xの性能を十全に引きだそうとすればメモリーも多量に載せる必要があるので、本気で人類に貢献しようとするなら、かなり覚悟がいるだろう。

 だが分散コンピューティングプロジェクトに参加するのは個人の自由だし、Ryzen Threadripperを持っているなら参加すべきだ、なんて事を言うつもりもない。だが今時のAMD製CPUを少し回すだけで、COVID-19に勝つための何かに近づけていると考えれば、この閉塞感も幾分和らぐのではないだろうか。

■関連サイト

■関連記事