Raspberry Pi3でスパコン作ると息子に言ったら、興味深々のようで食い付きが良かった。
自分用オモチャとしての導入から一転、息子の夏休み自由研究ネタで作る事にした。
しかし息子にいきなりやらせるのではなく、まずは自分で1台で構成を組みHPL(High Performance Linpack)導入のテストを実施してみた。
尚、HPLとはTOP500で有名なスーパーコンピュータの評価指標となっているベンチマークツールの事である。
当方の環境
Raspberry Pi 3 Model B
CPU: ARM Cortex-A53 Quad Core 1.2GHz
GPU: Broadcom VideoCore IV 400MHz
RAM: 1GB
Storage: Micro SD Card 16GB
OS: Raspbian Jessie Lite (Kernel 4.4)
HPLの導入
1.HPL導入の準備
Raspberry Pi本体にOS(Raspbian)をインストールする方法は、Googleで検索すると沢山ヒットする為にここでは割愛。
自分の環境の場合、Raspbian Jessie Liteのイメージファイルを書き込んだ16GBのMicroSD CardをRaspberry Piに挿入し電源投入。
電源投入後1分程でTera TermからSSHログイン可能になる。
IPアドレスは、PCと同じネットワーク内に属する為にExPingでネットワーク内のIPアドレスに打ちまくってRaspberry Piに割り当てられたIPアドレスを探した。
キーボードやモニタを別途準備するのではなく、SSHでPCからログインしてセットアップした。
HPLの導入方法は、以下のサイトを参考にした。
https://www.howtoforge.com/tutorial/hpl-high-performance-linpack-benchmark-raspberry-pi/
2.HPLのダウンロードとインストール
HPLのコンパイルに必要なライブラリを、apt-getコマンドでインストール。
以下の3つを指定すると、他の必要なライブラリも一緒にインストールしてくれる。
sudo apt-get install libatlas-base-dev libmpich2-dev gfortran libblas3 libblas-dev libc6-dev
ライブラリのインストール後は、HPLのソースファイルをwgetコマンドでRaspberry Piに直接ダウンロード。解凍後、Makefileの準備。
wget http://www.netlib.org/benchmark/hpl/hpl-2.1.tar.gz tar xf hpl-2.1.tar.gz cd hpl-2.1/setup sh make_generic cd .. cp setup/Make.UNKNOWN Make.rpi
上記にて作成されたMake.rpiをviで編集。
修正箇所は上記リンク先の"3 Adjust the Make.rpi file"を参照。
そして、いよいよHPLのコンパイル。
make arch=rpi
途中で、以下のエラーを吐いてコンパイルが止まった。
gfortran: error: /usr/local/mpich2/lib/libmpich.a: No such file or directory Makefile:76: recipe for target 'dexe.grd' failed make[2]: *** [dexe.grd] Error 1 make[2]: Leaving directory '/home/pi/hpl-2.1/testing/ptest/rpi' Make.top:64: recipe for target 'build_tst' failed make[1]: *** [build_tst] Error 2 make[1]: Leaving directory '/home/pi/hpl-2.1' Makefile:72: recipe for target 'build' failed make: *** [build] Error 2
libmich.aが/usr/local/mpich2/libに無いという。
手前味噌ではあるが、自分の環境では以下で対処した。
また、makeコマンドを打つ前に前もってMake.rpiファイルにてパスを指定するのも良し。
cp /usr/lib/arm-linux-gnueabihf/libmpich.a /usr/local/mpich2/lib/libmpich.a
この後は再度make arch=rpiを実行。今度はエラーを吐く事無くコンパイルとインストールが終わった。
3.HPLの実行準備
ディレクトリ~/hpl-2.1/bin/rpi内にあるHPL.datを1台構成用に修正する。
修正前に、元からあったHPL.datはファイル名を変更して保存する。
cd bin/rpi cp HPL.dat HPL.dat.old
修正箇所は、上記リンク先の"Creating the HPL input file"を参照。
4.いよいよ、1台構成でのHPL実行開始
以下のスクリプトを叩いて実行。
./xhpl
...約5分後、結果が出力された。
HPLの結果は2.694e-01GFLOPS、つまり269メガFLOPS。1982年の富士通FACOM VP-200程度(最大250MFLOPS)である。
単位はギガ表示だが右側の-01に従って桁を1つ減らして読む。FLOPSがギガになると+00になる。
================================================================================ T/V N NB P Q Time Gflops -------------------------------------------------------------------------------- WR11C2R4 5040 128 1 1 316.92 2.694e-01 HPL_pdgesv() start time Sun Jul 24 19:05:55 2016 HPL_pdgesv() end time Sun Jul 24 19:11:12 2016 -------------------------------------------------------------------------------- ||Ax-b||_oo/(eps*(||A||_oo*||x||_oo+||b||_oo)*N)= 0.0021492 ...... PASSED ================================================================================ Finished 1 tests with the following results: 1 tests completed and passed residual checks, 0 tests completed and failed residual checks, 0 tests skipped because of illegal input values. -------------------------------------------------------------------------------- End of Tests. ================================================================================
今時のPCより低い値であるものの、1台構成でのHPL実行は成功した。
次は4台構成で実施の予定。それも成功したら息子にやらせてみよう。
関連する記事
http://d.hatena.ne.jp/debslink/20160801/1469980976 Raspberry Pi3でスパコン遊び その2
http://d.hatena.ne.jp/debslink/20160827/1472285472 Raspberry Pi3でスパコン遊び その3
http://d.hatena.ne.jp/debslink/20160902/1472819758 Raspberry Pi3でスパコン遊び その4