<はじめに>
Raspberry pi 4 (4GBメモリモデル)にRaspbian等を搭載していれば、
BOINCというシステムを通して、分散コンピューティングプロジェクトに参加できる。
ここでは、上記システムへのBOINCの導入、Rosetta@homeというタンパク質解析のための分散コンピューティングプロジェクトに参加するための手順を説明している。
現時点(11 Apr 2020, 15:01:59 UTC)で、Rosetta@homeの参加者数、ジョブの数は次のようになっている。
Total queued jobs: 2,880,916
In progress: 1,172,305
Successes last 24h: 900,001
Users (last day ): 1,343,478 (+594)
Hosts (last day ): 2,770,801 (+9418)
<ウイルスの持つタンパク質>
タンパク質の立体構造を解析することによって、例えば新型コロナウイルスの表面タンパク質の機能を調べることができるようになる。
また、これにより似通った安定したタンパク質を生み出すことができ、新型コロナウイルスの治療に役立つ情報にすることができるようになる。
<タンパク質と遺伝子とアミノ酸>
タンパク質は、遺伝子によって設計されたアミノ酸配列から成り立っている。
しかしこのアミノ酸配列からどのようなタンパク質の立体構造が成り立つかは、スーパーコンピューターによる解析が必要である。
タンパク質の立体構造は何通りにも考えられるので、その中から最も安定な立体構造を検索して、実際のウイルスのタンパク質の構造を予測する必要がある。
<分散コンピューティングとスーパーコンピューター>
分散コンピューティングでは、プロジェクトに参加したPCに小さなタスクを与えて解析してもらう。
その結果、分散コンピューティングでは、スーパーコンピューター並み、それ以上の計算能力を得られる。
分散コンピューティングへの参加者が増えるほど、研究者は仕事を早くできるようになると考えられる。
Rasberry piを持っていなくても、Windows、Linux、Macなどからも分散コンピューティングへの参加は可能である。
たとえば、folding@homeというプロジェクトがあるのでぐぐってみてください。
【Linux CentOS 7】分散コンピューティングFolding@homeに演算能力を提供する【Folding@home】も参考にしてください。
ここでは、Rasberry pi 4 + Raspbian で、タンパク質の分散コンピューティングプロジェクトであるRosetta@homeに参加する方法を扱う。
■ハードウェア要件の確認
ハードウェア要件
・Raspberry pi 4 or 3 (2GB RAM モデル)以上
・SDメモリが充分にあること。
ここでは、Raspberry pi 4(4GB RAM)を用い、OSはRaspbian(デスクトップ機能あり)が動作している。
OSのインストール手順は、次のページを参考にしてください。
【Raspbian Buster September 2019】OSインストールから初期セットアップ(rootユーザー、SSHログイン、システム更新、ヘッドレス運用、microSD丸ごとバックアップ、リストアなど)
■Raspbianを64bitOSに切り替える。
sudo su でrootになって操作した。
あるいは、上記ページを参考にして、rootのパスワードを設定して、suする。
(以下同様とする。)
○config.txtを編集するので、バックアップをとった。
root@raspberrypi:/home/pi# cp /boot/config.txt /boot/config.txt.org
○(設定変更前の)unameの結果を確認した。
root@raspberrypi:/home/pi# uname -a
Linux raspberrypi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux「ARMv7l」アーキテクチャ(32bit)として認識していることがわかる。
(参考として)
Raspberry pi 4 or 3 は、「ARMv8」アーキテクチャの64bit CPUを搭載している。
しかし以上の結果のように、現行のRaspbianはRaspberry pi 4 or 3を「ARMv7l」アーキテクチャ(32bit)として認識している。
「ARMv8」は64bitの”AArch64”実行モードと32bitの”AArch32”実行モードを切り替えて動作できるようになっている。
32bitの”AArch32”実行モードは32bitの「ARMv7」(以前のRaspberry pi に搭載)との互換性を維持する。
現行のRaspbianは以前のRaspberry piでも使用されるため、互換性維持のためにRaspberry pi 4 or 3であっても、デフォルトでは32bitの「ARMv7」として認識されると考えられる。
しかし以下のように設定することによって、現行のRaspbianにおいてもRaspberry pi 4 or 3の持つCPUを「ARMv8」アーキテクチャを持つものとして認識する。
○config.txtを編集した。
最後の行にマークしたように1行追加した。
root@raspberrypi:/home/pi# nano /boot/config.txt
# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details
# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1
# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
#disable_overscan=1
# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16
# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720
# uncomment if hdmi display is not detected and composite is being output
#hdmi_force_hotplug=1
# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1
# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2
# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4
# uncomment for composite PAL
#sdtv_mode=2
#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800
# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on
# Uncomment this to enable infrared communication.
#dtoverlay=gpio-ir,gpio_pin=17
#dtoverlay=gpio-ir-tx,gpio_pin=18
# Additional overlays and parameters are documented /boot/overlays/README
# Enable audio (loads snd_bcm2835)
dtparam=audio=on
[pi4]
# Enable DRM VC4 V3D driver on top of the dispmanx display stack
dtoverlay=vc4-fkms-v3d
max_framebuffers=2
[all]
#dtoverlay=vc4-fkms-v3d
arm_64bit=1
・保存した。(ファイル名が表示されるのでそのままエンターで上書きした。)
[CTRL]+O Write Out
File Name to Write: /boot/config.txtエンターを押す
[ Wrote 67 lines ]・nanoを終了した。
[CTRL]+X Exit
○設定の有効化のためにラズパイの再起動を行った。
root@raspberrypi:/home/pi# reboot
○再起動後、sshログインし、rootになった。
○(設定変更後の)unameの結果を確認した。
マークしたように64という文字が確認できた。
root@raspberrypi:/home/pi# uname -a
Linux raspberrypi 4.19.75-v8+ #1270 SMP PREEMPT Tue Sep 24 18:59:17 BST 2019 aarch64 GNU/Linux”AArch64”実行モードで動作している。
■必要なパッケージのインストールと設定
○boincパッケージのインストール
root@raspberrypi:/home/pi# apt-get update
root@raspberrypi:/home/pi# apt-get install boinc-client boinc-manager boinctui
The following additional packages will be installed:
libboinc7 libwxbase3.0-0v5 libwxgtk-webview3.0-gtk3-0v5 libwxgtk3.0-gtk3-0v5
Suggested packages:
boinc-client-opencl boinc-client-nvidia-cuda libgl1-mesa-glx
The following NEW packages will be installed:
boinc-client boinc-manager libboinc7 libwxbase3.0-0v5 libwxgtk-webview3.0-gtk3-0v5 libwxgtk3.0-gtk3-0v5
0 upgraded, 6 newly installed, 0 to remove and 2 not upgraded.
Need to get 6,662 kB of archives.
After this operation, 23.3 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
○設定ファイルの編集
下記、緑のマーカー部分を追加した。
root@raspberrypi:/home/pi# nano /etc/boinc-client/cc_config.xml
<!--もし、他のマシンで動作しているBOINCマネージャやboinctuiから、このマシンをリモートで管理したい場合には、次の設定も、<options>に加えておくとよい。
This is a minimal configuration file cc_config.xml of the BOINC core client.
For a complete list of all available options and logging flags and their
meaning see: https://boinc.berkeley.edu/wiki/client_configuration
-->
<cc_config>
<log_flags>
<task>1</task>
<file_xfer>1</file_xfer>
<sched_ops>1</sched_ops>
</log_flags>
<options>
<alt_platform>aarch64-unknown-linux-gnu</alt_platform>
</options>
</cc_config>
ただし、セキュリティーに注意が必要である。家庭のLAN内であれば心配ないのではないか。
<allow_remote_gui_rpc>1</allow_remote_gui_rpc>
○システムの再起動を行った。
root@raspberrypi:/home/pi# reboot
■BOINC Managerの起動、タスクの稼働状況確認
下記、デスクトップ環境での操作を取り扱っている。
同様のことは、CUI端末において、boinctui コマンドでも可能である。
(ただし、TUIについてはここでは解説していない。)
ディスプレイの接続されていないRaspberry pi 4でも、
設定すればデスクトップにVNCでリモートアクセスすることができる。
下記ページに設定ためのリンクを載せていますので参考にてください。
【Raspbian Buster September 2019】OSインストールから初期セットアップ(rootユーザー、SSHログイン、システム更新、ヘッドレス運用、microSD丸ごとバックアップ、リストアなど)
<解析タスク割り当て前>
○デスクトップのラズベリーアイコンから、BOINC Manager を起動した。
参考画像のように、ラズベリーアイコンから、System Toolsを辿り、
その中に、BOINC Managerを見つけた。
すると、次のようなウインドウが二つ開いた。
カテゴリーと、プロジェクトを選択した。
参加するプロジェクトは、Rosetta@homeである。
警告が出るがそのまま「Yes」をクリックした。
ログインの必要がある。
初めてなので、「No,new user」を選び、
今後ログインで使う自分のメールアドレスを入力、
そして、パスワードを設定した。
自動でブラウザが起動した。
WEBで、先のアカウント情報をRosettaのシステムに登録した。
(WEBのURLにクエリストリングが含まれていることから、自分のメールアドレスと関連づけられているようである。)
つづいて、チームの参加や作成を促されるページも開くが、
今回は参加も作成も行わないようにした。
そのままブラウザを閉じた。
すぐには、タスクが割り当てられなかった。
「No work available to process」という表示が長い間続いた。
そのまま気長に放置しておいた。(Work が与えられるまで気長に待つ必要がある。)
解析タスクが割り当てられるまで何もすることがない。
boinc-client.serviceの稼働状況の確認を行った。
システムは正常に稼働しているようである。
しかしまだ、タンパク質解析のためのタスクが与えられていない状態だとわかった。
root@raspberrypi:/home/pi# systemctl status boinc-client
● boinc-client.service - Berkeley Open Infrastructure Network Computing Client
Loaded: loaded (/lib/systemd/system/boinc-client.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2020-04-11 09:33:50 JST; 28s ago
Docs: man:boinc(1)
Main PID: 5087 (boinc)
Tasks: 2 (limit: 4261)
Memory: 2.9M
CGroup: /system.slice/boinc-client.service
└─5087 /usr/bin/boinc
Apr 11 09:33:50 raspberrypi boinc[5087]: dir_open: Could not open directory 'slots' from '/var/lib/boinc-client'.
Apr 11 09:33:50 raspberrypi boinc[5087]: 11-Apr-2020 09:33:50 [---] Checking active tasks
Apr 11 09:33:50 raspberrypi boinc[5087]: 11-Apr-2020 09:33:50 [---] Setting up GUI RPC socket
Apr 11 09:33:50 raspberrypi boinc[5087]: 11-Apr-2020 09:33:50 [---] gui_rpc_auth.cfg is empty - no GUI RPC password protection
Apr 11 09:33:50 raspberrypi boinc[5087]: 11-Apr-2020 09:33:50 [---] Checking presence of 0 project files
Apr 11 09:33:50 raspberrypi boinc[5087]: 11-Apr-2020 09:33:50 Initialization completed
Apr 11 09:33:50 raspberrypi boinc[5087]: 11-Apr-2020 09:33:50 [Rosetta@home] Sending scheduler request: To fetch work.
Apr 11 09:33:50 raspberrypi boinc[5087]: 11-Apr-2020 09:33:50 [Rosetta@home] Requesting new tasks for CPU
Apr 11 09:33:53 raspberrypi boinc[5087]: 11-Apr-2020 09:33:53 [Rosetta@home] Scheduler request completed: got 0 new tasks
Apr 11 09:33:53 raspberrypi boinc[5087]: 11-Apr-2020 09:33:53 [Rosetta@home] No tasks sent
<解析タスク割り当て後>
後程、タスクが割り当てられ、次のように確認できた。
後程、見てみると、解析中になっていることがわかった。
Advanced View表示をした。
ところで、このBOINC マネージャーがフリーズすることがあったので、
その場合は、次のようにプロセス番号を調べて、番号を指定してkillすればよかった。
root@raspberrypi:/home/pi# ps -u myusername | grep boincmgr
12345 ? 00:00:03 boincmgrroot@raspberrypi:/home/pi# kill 12345
さて、タンパク質の解析中の場合は以下の表示となった。
root@raspberrypi:/home/pi# systemctl status boinc-client
● boinc-client.service - Berkeley Open Infrastructure Network Computing Client
Loaded: loaded (/lib/systemd/system/boinc-client.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2020-04-11 09:33:50 JST; 13h ago
Docs: man:boinc(1)
Main PID: 5087 (boinc)
Tasks: 11 (limit: 4261)
Memory: 3.0G
CGroup: /system.slice/boinc-client.service
├─1222 ../../projects/boinc.bakerlab.org_rosetta/rosetta_for_devices_4.12_aarch64-unknown-linux-gnu -run:protocol jd2_scripting -parser:protocol predicto
├─1464 ../../projects/boinc.bakerlab.org_rosetta/rosetta_for_devices_4.12_aarch64-unknown-linux-gnu -run:protocol jd2_scripting @flags_rb_04_11_21136_207
├─4110 ../../projects/boinc.bakerlab.org_rosetta/rosetta_for_devices_4.12_aarch64-unknown-linux-gnu -run:protocol jd2_scripting @flags_rb_04_11_21136_207
└─5087 /usr/bin/boinc
Apr 11 22:27:28 raspberrypi boinc[5087]: 11-Apr-2020 22:27:28 [Rosetta@home] Started upload of *****_Junior_HalfRoid_vs_COVID-19_design1_dev_SAVE_ALL_OUT_NOJRAN_
Apr 11 22:27:34 raspberrypi boinc[5087]: 11-Apr-2020 22:27:34 [Rosetta@home] Finished upload of *****_Junior_HalfRoid_vs_COVID-19_design1_dev_SAVE_ALL_OUT_NOJRAN
Apr 11 22:50:05 raspberrypi boinc[5087]: 11-Apr-2020 22:50:05 [Rosetta@home] Sending scheduler request: To report completed tasks.
Apr 11 22:50:05 raspberrypi boinc[5087]: 11-Apr-2020 22:50:05 [Rosetta@home] Reporting 4 completed tasks
Apr 11 22:50:05 raspberrypi boinc[5087]: 11-Apr-2020 22:50:05 [Rosetta@home] Requesting new tasks for CPU
Apr 11 22:50:07 raspberrypi boinc[5087]: 11-Apr-2020 22:50:07 [Rosetta@home] Scheduler request completed: got 1 new tasks
Apr 11 22:50:09 raspberrypi boinc[5087]: 11-Apr-2020 22:50:09 [Rosetta@home] Started download of *****_Junior_HalfRoid_vs_COVID-19_design1_dev.zip
Apr 11 22:50:09 raspberrypi boinc[5087]: 11-Apr-2020 22:50:09 [Rosetta@home] Started download of *****_Junior_HalfRoid_vs_COVID-19_design1_dev.flags
Apr 11 22:50:11 raspberrypi boinc[5087]: 11-Apr-2020 22:50:11 [Rosetta@home] Finished download of *****_Junior_HalfRoid_vs_COVID-19_design1_dev.flags
Apr 11 22:50:13 raspberrypi boinc[5087]: 11-Apr-2020 22:50:13 [Rosetta@home] Finished download of *****_Junior_HalfRoid_vs_COVID-19_design1_dev.zip
ところで、
必要があれば、USB接続HDDにBOINCワークディレクトリを移動することもできる。
これによって、365日24時間の運用でも、SDの劣化の防止が期待できると考えられる。
次のページを参照してください。
【Raspberry Pi 4 B / Raspbian】BOINCの作業領域を外付けUSB HDDドライブに移してSDの劣化を防止する【BOINC 7.14.2+dfsg-3】
以上
<参考>
・Rosetta@home
< https://boinc.bakerlab.org/ > 2020年4月11日
< https://www.element14.com/community/thread/75254/l/set-your-processors-to-analyse-for-the-covid-19-virus > 2020年4月11日
・Rosetta@home on Raspbian Pi 4
< https://www.element14.com/community/people/gam3t3ch/blog/2020/04/09/rosettahome-on-raspbian-pi-4 > 2020年4月11日
・Turning Your Raspberry Pi Into a Science Research Station Via BOINC
< https://dzone.com/articles/turning-your-raspberry-pi-into-a-science-research > 2020年4月11日
・How to Fight Coronavirus With Your Raspberry Pi
< https://www.tomshardware.com/how-to/fight-coronavirus-with-raspberry-pi > 2020年4月11日
・E14community チームの情報
< https://boinc.bakerlab.org/rosetta/team_display.php?teamid=19110 > 2020年4月11日
・Raspberry Pi BOINC Tutorial
< https://pimylifeup.com/raspberry-pi-boinc/ > 2020年4月15日
・Controlling BOINC remotely
< https://boinc.berkeley.edu/wiki/Controlling_BOINC_remotely > 2020年4月25日
〇CPUアーキテクチャについて
・ARM、64ビットアーキテクチャ「ARMv8」の概要を公開
< https://news.mynavi.jp/article/20111031-arm_v8/2 > 2020年4月15日
・ARMアーキテクチャ
< https://ja.wikipedia.org/wiki/ARMアーキテクチャ > 2020年4月15日
・ARM64 on Raspberry Pi 4
< http://marksrpicluster.blogspot.com/2019/12/arm64-on-raspberry-pi-4.html > 2020年4月15日
・armv7とarm64とarmhfの違い
< https://teratail.com/questions/190228 > 2020年4月15日
・ARM、64bit化される次世代アーキテクチャー「ARMv8」を発表
< https://ascii.jp/elem/000/000/645/645995/ > 2020年4月15日