はじめに
Raspberry Piは、Mathematicaが無償(非商用)で提供されているなど、組み込み用途だけでなく、科学技術計算にも利用できます。もちろん、材料シミュレーションにも使えます。
ハードウェアの用意
高速CPUと大容量メモリが望ましいことは、言うまでもありません。執筆時点で最高性能のハードウェアを用意しました。
-
Raspberry Pi 3 Model B+
- ARMv8 (64 bit対応)、1.4 GHz、4コア
- メモリ1 GB
- (イーサネット実質300 Mbps)
複数のノードがネットワークを介してデータ通信しながら協調動作する並列計算も期待できそうですが、今回は利用しません。
CPUに長時間連続して高い負荷をかけることを前提に、ヒートシンクとファンを装着しました。ファンの電源はGPIOからとります。ピン配列はこちらを参照してください。
GPIO - Raspberry Pi Documentation
CPU温度が上昇するとクロックダウンする機能が備わっているので、計算性能を維持するために注意しましょう。
他に、 SDカード (32 GB)、USBのキーボードとマウス、HDMIでつながるディスプレイを用意します。
インストールと計算環境の設定
USBからの起動やネットワークブートもできるそうですが、お手軽なSDカードを利用します。
公式OSであるRaspbianは、32 bit版のみが提供されています。ARMv8の64 bit実行モード (AArch64)は、32 bit実行モード (AArch32)と比べて大幅に機能拡張されていますので、前者の方が高速動作が期待できそうです。
ARM、64ビットアーキテクチャ「ARMv8」の概要を公開 (2)
複数のLinuxディストリビューションから64 bit版OSが提供されていますので、ここではOpenSUSE(Leap 15.0; XFCE)を選びました。
HCL:Raspberry Pi3 - openSUSE
ダウンロードしたファイルは圧縮されていますので、7-Zipなどのソフトウェアを利用して伸張します。
SDカードをフォーマットします。Windows標準搭載機能を使ってフォーマットできますが、専用ソフトウェアを利用した方が良いそうです。
SDメモリカードフォーマッター - SD Association
続いて、先ほど伸長したOSのイメージを、SDカードに書き込みます。
Win32 Disk Imager download
以上で準備が整いました。SDカードを本体に装着し、電源を入れると起動します。初期設定は、rootのパスワードがlinux
となっています。起動後直ちに変更します。一般ユーザーを作り、管理作業以外の操作は一般ユーザーを使いましょう。
ネットワークの設定には少々手間取りました。私の環境では、インストール直後は有線ネットワークが正常に動作しませんでした。一旦無線で接続してソフトウェアを更新後に、有線が動作するようになりました。有線ネットワークのハードウェアは旧機種から変更されているので、ドライバが間に合っていなかったのかもしれません。
パッケージ管理はzypper
コマンドを使います。追加ソフトウェアをインストールします。
# zypper --non-interactive install gnuplot gcc-fortran gcc-c++ openmpi3-devel fftw3-devel
OpenMPIのコマンドは/usr/lib64/mpi/gcc/openmpi3/bin/
にインストールされます。同ディレクトリをPATH
に追加しましょう。またFFTW3のライブラリは/usr/lib64/
にインストールされます。
この時点でSDカードの空き容量は約25 GBでした。
アプリケーションソフトウェアの導入
コンパイル作業は、Intel系プロセッサのLinuxとほぼ同じです。別記事を参照してください。ソースコードは、ネットワークを利用してコピーします。
アプリケーションソフトウェア導入
相違点
PHASE/0
Makefile中、コンパイルコマンドのオプションに-m64
があります(三か所)が、これらは不要です。削除してください。
libxc
コンパイル中にコンパイラ(gcc)が異常終了してしまいました。最適化レベルを下げると正常にコンパイルできましたので、configure
時にオプションを追加してください。
$ ./configure CFLAGS=-O0
性能評価
公平公正なベンチマークは難しいので厳密な評価ではありません。コンパイラ等のバージョンも統一していません。
比較対象
Core i5-4200U搭載ノートパソコン。
物理コア2、Hyper Threadingで4論理コア、Windows 8.1。
コアを二つ割り当てた仮想マシン(Virtual Box)でCentOS7が稼働。
計算課題
ITO(In$_2$Sn$_2$O$_7$; 基本格子22原子)のPHASE/0によるSCF計算に要する時間を測定。
結果
計算機環境と並列条件 | 所要時間 |
---|---|
Raspberry Pi(バンド2並列、k点2並列の計4並列) | 64分 |
比較対象WindowsノートPC(k点2並列) | 7分 |
同じコア数で比較すればCore i5が速いことは予想していましたが、これほど差がつくとは思いませんでした。積極的にRaspberry Piをお勧めする場面は限られますが、例えば、主にノートパソコンをお使いで、それを頻繁に持ち歩いている場合は、長時間の計算は事実上できません。そんな時には、卓上にRaspberry Piを置いて、計算し続けてはいかがでしょうか。
まとめ
これだけでは実用に供する材料シミュレーションとはなりませんが、本格的な予算獲得に向けた準備・練習に是非活用してください。