メモのページ - チラシの裏メモ 3枚目

通信技術や気になった事を黙々とメモし続ける

Raspberry Pi3でスパコン遊び

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