自宅PCでコロナ研究に貢献 "Folding@home" プロジェクト

### はじめに　～Folding@home について～
家庭用のパソコン、スマホやPlay Station等の身近な計算マシンのアイドリング時間を活用して、分子工学を中心とした科学研究に貢献する分散コンピューティングの市民参加型プロジェクトである。参加者は専用のパッケージをホームページ[Folding@home](https://foldingathome.org/)からダウンロードし、いくつか簡単な設定をするだけで、後は専用ソフトウェアが通信を開始し計算を開始してくれる。

Folding@homeプロジェクトは、2000年にStandford大学の[Vijay Pande](https://profiles.stanford.edu/vijay-pande)教授がタンパク質の立体構造の解析を更に効率化することを目的に発足させた。分子構造に関する数値シミュレーションには多くの計算資源が必要なため、各国の研究機関や大学はCPUやGPUを数百～千基積んだスーパーコンピューターと呼ばれる大型コンピューターを保有している。しかし、スーパーコンピューターは共同利用であり、1つのプロジェクトが多数の実験を長時間占有してコンピューター上で行うには限界がある。一般に普及している家庭用の計算機は、1台当たりの計算能力は低くいが多数を連結させることで同時並行的に大きな計算処理能力を生み出すことが可能になるため、スーパーコンピューターでの計算を補完することができる。

----------

### 5分で参加できるコロナ研究
2020年3月から、Folding@homeでは新型コロナウイルス解析のプロジェクトを提供している。同プロジェクトに参加する個人や団体は増えており、2020年4月14日には、その合計演算能力は2.4EFLOPS($^1$エクサフロップス)を突破している。現在世界最速のスーパーコンピューターであるIBM Summit (米国; Oak Ridge National Laboratory) は、22コアのCPU約9,000台とNVidia-V100 GPU約27,000台で構成されている。そのSummmitの演算能力でさえ200PFLOPS($^2$ペタフロップス)であることから、1台およそ2-4コア程度の家庭用計算機で参加しているボランティアで形成された分散コンピューティングの規模の大きさに圧倒される。詳しくは Twitterをチェック！
https://twitter.com/foldingathome


Threadripper 1920x 12C24TとGeforce RTX2070を備えた研究用の自作PCに余裕があるため、Stay at home以外に何か自分にもできることはないかと思ってことがきっかけでこのプロジェクトに挑戦してみた。

$^1$エクサフロップス = 1秒間に100京($10^{18}$)回の浮動小数点演算
$^2$ペタフロップス = 1秒間に1000兆($10^{15}$)回の浮動小数点演算

-------

### インストールと設定
ここからは、専用のソフトウェアの具体的なインストール方法について解説する。簡単にインストール可能なように設定されているので臆せずに是非挑戦してみてほしい！インストールページは英語であるが、解説ページ[Introduction to V7: Linux](https://foldingathome.org/support/faq/installation-guides/linux/)にはステップごとにスクショが貼ってあるから、英語にも迷わずに設定できるはずだ。

ここではLinux OSへのダウンロードを中心に解説する。なおWindows/Macユーザーもほぼ手順は同じなので参考にしてほしい。参考までにWindows/Mac用のインストール手順のリンクを下記に貼っておいた。

- For Windows user [Download instruction for Windows](https://foldingathome.org/support/faq/installation-guides/windows/)
- For Macbook user [Download instruction for Mac](https://foldingathome.org/support/faq/installation-guides/mac/)

#### 1. ホームページへ GO!
`https://foldingathome.org/` にアクセス。
![dl0.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/247861/4fa8292f-5919-bb73-a043-7b401325f7ef.png)

#### 2. ダウンロード方法
`START FOLDING NOW`、`Download Now`の順にクリックし、サジェストされたインストーラーをクリックしてインストール。ここまでは共通。

例の自作PCは1万km離れたオフィスでお留守場中なので、メインのWindowsにLinuxインストーラーをインストールしてみる。その場合、`alternative downloads`をクリックし、
![dl0-0.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/247861/e1ce74ff-ef1d-be81-3a76-17126ac1af05.png)


インストール一覧のページから下記のLinux用のインストーラーを見つける。あとはディストリビューションに応じて適した方を選択。Ubuntuを使っているから、

-  `fahclient_7.5.1_amd64.deb` 
-  `fahcontrol_7.5.1-1_all.deb`
-  `fahviewer_7.5.1_amd64.deb`

をダウンロード。
![dl0-1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/247861/3360614a-ca40-eee6-00a5-c82a35d8f8fe.png)

あとは`scp`や`WinSCP`等々使って目的のマシーンにそれらを移動させればダウンロードは完了。インストーラー自体は全体で30MB程度なので1-2分待機。


#### 3. 設定　（Linux コマンドラインの場合）

##### Clientの解凍
適当なディレクトリに`fahclient_7.5.1_amd64.deb`を移動。その後、

```bash:Client 
sudo apt install fahclient_7.5.1_amd64.deb
```
とコマンドラインで打つことでパッケージが解凍される。
必要なライブラリがダウンロードされると、ユーザー名を求められるので、AnonymousのままでEnterキーをクリック
![dl1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/247861/f743eabb-295a-56fe-83dc-c6a1eaf11554.png)


次はチーム登録に関する質問。個人参加の場合0のまま
![dl2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/247861/1c44c0b8-e285-39b1-3cd8-c53502a00193.png)

何やらPassKeyを求められてるが何も入力せず次へ
![dl3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/247861/9ba85134-89ca-ec72-1e21-243551206155.png)

実験モードの設定。勧められるがままにMediumを選択
![dl4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/247861/f0992932-0f60-eaf6-9750-505d0d42ee21.png)

アイドリング時間に動いてほしいので、自動スタートにYes。
![dl5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/247861/a8d4f8ce-40a3-b707-a580-a965b240fa4c.png)

以上で設定は完了。


##### Controlの解凍
`fahcontrol_7.5.1-1_all.deb`も同様に

```bash:Control
sudo apt install ./fahcontrol_7.5.1-1_all.deb
```
すると必要なライブラリが次々とダウンロードされていくので、これまた数分ほどコーヒーでも飲みながら見守ろう。`FAHControl`が`/usr/bin/FAHControl`にインストールされるはずである。

#### 4. いざ参加！
あとは、

```bash:Run
/usr/bin/FAHControl
```

とコマンドライン上でたたくだけで下記のような画面が起動するはずである。Status がRunningと緑色に光っていれば無事に参加完了！InactiveからActiveになるまで少し時間がかかるので焦らなくても大丈夫（おそらく日本からだと通信時間等がかかるはず？）。

![running1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/247861/61c49c10-8f35-eea3-f490-c5e340218940.png)


![running3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/247861/90612ada-dfd5-f1e5-ca09-e8fbadeb1373.png)

---------------------

### おわりに
Zoom飲み会、Amazon PrimeやNetflixを見るだけで家庭用PCを使うのはもったいない。COVID-19のワクチン開発研究にあなたも微力でもお手伝いしてみませんか？


#### References
- [Folding@home](https://foldingathome.org/)
- [Wikipedia: Folding@home](https://ja.wikipedia.org/wiki/Folding@home)
- [PC Watch: 今からでも3分ではじめられるコロナ解析貢献「Folding@home」の使い方] (https://pc.watch.impress.co.jp/docs/news/1243458.html)
- [PC Watch: Folding@homeがTOP 500の全スパコンを超える2.4EFLOPSに到達](https://pc.watch.impress.co.jp/docs/news/1246939.html)