前回のWindows版に続いて、mppdyna Linux64bit版を試してみました。
Linux64用は、MPIとCPUの組み合わせで、以下のモジュールが用意
されています。
Platform MPI : MPP( Intel, PGI ), Hybrid (Intel, PGI)
Intel MPI : MPP(Intel), Hybrid (Intel)
MPICH126 : MPP (Intel, PGI )
OpenMPI : MPP(Intel, PGI), Hybrid(Intel)
SGI MPT : MPP(Intel)
この組み合わせに加えて、Linuxディストリビューションが加わります。
Intelコンパイラ版:RedHat 5.4 ( SGIのみ SUSE10.1 )
PGIコンパイラ版:SUSE 10.2
Hybrid版は、MPP+SMPの混在したようなモジュールで、「128CPU以上で性能が出る」
と言われています。他に利点として、「CPU数の組み合わせを変えても結果は変わらない」
とあります。私はそんなに沢山CPUを持っていないので今回は動作確認のみとします。
今回使用するハードウエア(サイコム製)のスペックです。
本来は、Windows版と同じスペックのハードがあればいいのですが、現在の
手持ちマシンはこれだけです。
何故AMDのCPUかというと、買った当時安かったから、です。
OSなしで購入、SUSE11.2は自分でインストールしました。
何故SUSEかというと、これも安かった(無料)だからです。
CPU速度は前回のCoreI7には全く歯がたちません。
今回使用するマシンが、AMDのCPU, OSはSUSE、Hybrid版も
試してみたい、という理由で Platform MPI PGIコンパイラ版を
試すことにしました。
1、必要なファイル (弊社サイトからもダウンロードできます)
platform_mpi-8.01.01.00-20110421r.x86_64.rpm - Platform MPI
mpp971_*_r6.0.0_71488_amd64_pgi_suse102_platformmpi.tar.gz - MPP版
mpp971_d_r6.0.0_71488_amd64_pgi_suse102_platformmpi_hybrid.tar.gz – HYBRID版
2、PlatForm MPIのインストール
platform_mpi-8.01.01.00-20110421r.x86_64.rpmを任意の場所において、
root権限で# rpm -ivh ファイル名
あっという間に終了します。ここにインストールされます。
/opt/platform_mpi
(以前インストールしたMPIが残ってます。使用するのはplatform_mpiのみ)
rootを抜けて、自分のパス変数に /opt/platform_mpi/bin を追加します。
3. MPPDYNAのインストール
モジュールのファイルを解凍、展開するのみです。
mppdyna本体と、l2aモジュールが含まれます。
これを、パスの通った場所でおけばいいのですが、mppdynaのファイル名が
あまりに長く、日本人にとって打ち込みにくいので、適当に短い名前への
シンボリックリンクを張っておくといいでしょう。
例)
% ln -s mpp971_*_r6.0.0_71488_amd64_pgi_suse102_platformmpi mpp971
4. テストデータ
Win64 MPP版と同じです。
とりあえず、動作確認してみましょう。
% cd テスト場所
% mpirun -np 6 mpp971 i=neon.k p=neon.p memory=200m jobid=test
こんな感じで、実行が始まればOKです。
ここまで、ノートラブル&とってもイージーに来ました。
MPICHのソースからのビルドなどやった頃に比べたら天国です。
終了までの経過時間:1926秒
次にHybrid版もテストしてみます。
% mpirun -np 6 mpp971h ncpu=-1 i=neon.k p=neon.p memory=200m jobid=test
動かない!!! HYBRID版のテストができない!!!
計画が狂ってしまった。
そもそも、何故AMDのマシン用にPGIコンパイラ版があるかというと、
「Intelコンパイラ版で作ったモジュールは、AMDを見つけるとわざと遅くなる」
などのような噂があったためので、逆にPGIコンパイラは、AMDで早く動く
モジュールになる(みたい)なので、それぞれ別個に作成していると
聞いてました。
でも動かないのは困る。で、よーく考えると Linux64で Intel – AMDは
バイナリ互換のはず。(専用に作るほうが難しいと思う)
では、と、Intel版 Platform Hybrid版を入れて試したら、大成功!!!
しかも、MPP版で終了までの経過時間:1822秒
あれ??? AMDのCPUなのに、Intel版の方が早い???
(CPU数を変えて試したら、PGI版が早いこともありました)
で、今回は以下のモジュールに変更しました。
mpp971_*_r6.0.0_71488_intel64_intel_rhel54_platformmpi.tar.gz - MPP版
mpp971_*_r6.0.0_71488_intel64_intel_rhel54_platformmpi_hybrid.tar.gz – Hybrid版
5. Linux版 MPPDYNA実行方法
今回は、使用マシン1台しかないので次の方法で実行しました。
% mpirun -np CPU数 mpp971 <引数・・・入力データファイル名等>
Windows版と同じく、ホスト名を記載したファイルを作ってもOKです。
% mpirun -hostfile myhst mpp971
< Myhost >
host1:6
host2:6
合計 12CPU
ハイブリッド版は、SMPと同様、NCPUパラメータも指定します。
% mpirun -np 3 mpp971h ncpu=-2 < オプション >
これで実行すると、3*2=6CPUを使用することになります。
6. ベンチマーク
テスト環境:AMD Phenom X6 3.2GHz, 16GB-RAM, SUSE 11.2 X 1台
SMP 1 CPUでの結果を 1.0としています。
LinuxでもPlatform MPIのインストール、設定は簡単でした。
他のMPIを使用したければ、パス設定変更するのみです。
Hybrid版は、全てMAX6CPUで試しましたが、MPP版を超えるにはCPU
数不足でした。
従来HPMPIを使っていたユーザには、PlatForm MPIお勧めです。