#始めに
新型コロナが蔓延するこのご時世、ささやかでも何か世の中に貢献できないかと心の隅で思っていると、こんな記事を見つけました。Folding@homeにGPUを貸してCOVID-19の解析支援ができる。昔は天体のものであったのですが、新型コロナ撲滅に微力ながら関われるということで、やってみました。
#参考リンク
Ubuntu Linux 18.04にGPUドライバをインストールする
#前提システム
- NVIDIA GPU 筆者のシステムは GForce GTX1060 3GBメモリ
(多分AMD製でも方法はあるはず)
- Ubuntu 18.04 Desktop搭載PC(この記事はGUI前提)
最初入れてすぐのFedora31でやったら、うまくいかずUbuntu 18.04インストールしなおしました。
FAHControlがpython2前提で、python3前提のシステムではうまくいかないようです。
#インストール準備
素のUbuntu 18.04から動かしてみます。
まずpython2.7をインストールします。
$ sudo apt update
$ sudo apt install python
次に、このページの通りにNVIDIAのドライバをインストールします。一時期よりだいぶ楽になりました。
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update
$ ubuntu-drivers devices
以下のようにリストが出ます。
== /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001C02sv00001462sd00008C95bc03sc00i00
vendor : NVIDIA Corporation
model : GP106 [GeForce GTX 1060 3GB]
driver : nvidia-driver-440 - third-party free recommended
driver : nvidia-driver-435 - distro non-free
driver : nvidia-driver-415 - third-party free
driver : nvidia-driver-390 - third-party free
driver : nvidia-driver-410 - third-party free
driver : xserver-xorg-video-nouveau - distro free builtin
440のバージョンがレコメンドされているので、440をインストールします。
$ sudo apt install nvidia-driver-440
再起動します。
nvidia-smiが使えるようになっているので、確認してみます。
$ nvidia-smi
Sat Mar 28 17:57:35 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.64 Driver Version: 440.64 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 106... Off | 00000000:01:00.0 On | N/A |
| 57% 77C P2 100W / 120W | 392MiB / 3012MiB | 92% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1055 G /usr/lib/xorg/Xorg 16MiB |
| 0 1115 G /usr/bin/gnome-shell 49MiB |
| 0 1430 G /usr/lib/xorg/Xorg 106MiB |
| 0 1573 G /usr/bin/gnome-shell 98MiB |
| 0 5936 C ...org/v7/lin/64bit/Core_22.fah/FahCore_22 115MiB |
+-----------------------------------------------------------------------------+
出ればインストール完了です。
次に、nvidia-cuda-toolkitをインストールします。
Folding@homeでは、OpenCLを使ってGPUへのジョブの受け渡しや実行制御等を行っています。NVIDIAはcudaがメインのため、ツールキットをインストールしないとOpenCLが実行できません。実はここではまりました。確認のためのclinfoもインストールします。
$ sudo apt install nvidia-cuda-toolkit
$ sudo apt install clinfo
clinfoを実行すると、最後にOpenCLの表示が出れば完了です。
$ clinfo
:
:
ICD loader properties
ICD loader Name OpenCL ICD Loader
ICD loader Vendor OCL Icd free software
ICD loader Version 2.2.11
ICD loader Profile OpenCL 2.1
#Folding@homeのインストール
さて、Folding@homeのソフトをインストールします。基本的にはこのページ通りに行います。ダウンロードのページにUbuntuの項目があります。3項目あるので、3項目のdebファイルをインストールします。リンクをクリックして、プログラムを開くを選択すると、インストール画面になるのでインストールしてください。ダウンロードして、dpkgコマンドでインストールしても良いです。
3つのソフトはFAHCliant、FAHControl、FAHViewerです。FAHCliantはメインのソフトで、バックグラウンドで動きます。FAHControlはFAHCliantの操作GUIで、Cliant制御のために使用します。FAHViewerは、実行状態や世界中の接続状態、分子モデルを表示して楽しめます。
GUIメニューからFAHControlを起動します。
初回起動のみ「Configuring fehclient」の画面が表示されます。
(すみません、スクリーンショットがありません)
この画面で情報を入力しますが、全てデフォルト設定で動作するので、Forwardボタンを押します。
しばらくすると、以下のメイン画面が開きます。
これは、すでにGPUの設定をして動作しているスクリーンショットですが、最初はCPUのslotのみ表示されています。そこで、GPUのslotを追加いたします。
左上のConfigureのボタンを押して、出てきたウインドウのexpertのタブをクリックします。
そして、 Extra client options
の gpu
を true
に変更します。
次にslotsのタブをクリックします。
これも追加した後のイメージですが、ここにcpuしかありません。
右下の追加を押します。
中がスクロールできるので、GPUを選択してください。
入力する値は
gpu-index : -1
opencl-index : 0
cuda-index : -1
で動作しました。
これでgpuのslotが作成できましたので、メイン画面に戻ってログを見ていると、数回のアクセス失敗ののちに無事ジョブを取り、runningになります。
これで実際にジョブが走り出し、nvidia-smiでGPUが動作していることがわかります。ここでFAHViewerを起動すると、以下のようにアニメーションが表示されます。
あとは放っておいて、気長に終わるのを待ちましょう。筆者の実施時は、1つ目のジョブが約6時間、2つ目のジョブが4時間半かかりました。家でPCを使っていないときにぼちぼち回してみたいと思います。