hack-a-thonありがとうございました&質問

270 views
Skip to first unread message

kaneda

unread,
Nov 17, 2012, 7:30:56 PM11/17/12
to InfiniBand Hackathon
金田です。
昨日のhack-a-thon、とても有意義でした。
皆様どうもありがとうございました。

何点か質問させてください。

(1) 私の当面の目標は、MPIのプログラムから2枚挿しの
Infinibandを使うことです。
OpenMPI 1.6以降で、2枚挿しに対応したと聞いたことがあります。
OpenMPI 1.6を使う場合、OFED-3.5を使う必要がありますか?
その場合、ディストロもCentOSでなくFedoraになりますか?

(2) 会場で静電気の話が飛び交っていましたが、皆様どういう服装で
業務されているのでしょうか?

よろしくお願いいたします。

Hiroyuki Sato

unread,
Nov 18, 2012, 12:13:46 AM11/18/12
to ibh...@googlegroups.com
金田様


佐藤(今回はWindows班)です。
MPIは全くわかりません。

Linux上のInfinibandについて一般的なことを記載します。
なお、OSはFedoraよりもCentOS6やScientific Linuxの方がいいと
個人的には思います。
Fedraだと新しすぎてうまくいかない場合があるような気がします。
(あくまで個人的な感想です。)

以下個人的な意見になります。ご参考になさってください。
多分嘘はかいていないと思いますが、なにか間違いがあればご指摘ください。

1, Infinibandを使う方法
(1) kernel.orgの最新のカーネルを利用する
・最新の機能はすべてこちらに先に取り込まれる。
http://git.kernel.org/?p=linux/kernel/git/roland/infiniband.git;a=summary


(2) OFEDを利用する。
・RHELやSUSEなどにInfinibandのコードをバックポート
・OFED-1.5系の開発は終了
・これからの主流はOFED-3.X
3.Xは、Linuxのカーネル3.Xのコードをベースにしている
という意味だと思いました。

ex) OFED-3.5ならLinux-3.5のInfinibandドライバをもとに
RHEL6やSUSEで使われているカーネルで動作するように、
バックポートしている
・3.5からは基本的にInfinibandのドライバはOSで提供され
るものを使ってOFEDではツールしか提供しない


(3) Mellanoxの提供しているソフトウェアを利用する
・OFEDベース
・Mellanox社内でよくテストされている。
・独自のツールがある。(ibdumpなど)
・その他のソフトウェアとの親和性がある(と思う)
・RHEL, SUSEなど商用のみサポート
(ただし、CentOSやScientific Linuxにもインストールできる)

(4) RedHatなどのディストリビューションが提供するパッケージを利用する。
・OFEDベース
・RedHatなどでよく検証している?
・OFEDとは若干設定ファイルの場所が違う。
・yumで入るため使いやすい。


2, MPIについて

・OFED-1.5までは、MPIのパッケージが含まれていた。
OpenMPIは1.5系?
・OFED-3.5以降では、MPIはOFEDでは提供しなくなった(はず)
少なくとも(OFED-3.5rc2にはMPI関連のパッケージはない)

3, 組み合わせ

(1) OS
RedHat, SUSE, CentOS6, Scientific Linux6, Fedoraのどれか

(2) OFED
(a) MLNX-OFED + OpenMPI1.6

(b) OFED-1.5.4 + OpenMPI 1.6

・ざっとソースを見た感じ、まだOFED3.xには未対応と思われます。

(c) OS標準のInfiniband + OpenMPI 1.6

4, 余談

もしMPIを使うのであれば、ScalableHPCを使うことを検討した方が
よいかもしれません。

http://www.mellanox.com/content/pages.php?pg=products_dyn&product_family=104&menu_section=73





2012年11月18日 9:30 kaneda <kan...@makoto.nifty.jp>:
> --
>
>



--
Hiroyuki Sato

Danna

unread,
Nov 18, 2012, 9:19:54 AM11/18/12
to ibh...@googlegroups.com
金田さん

だんなです。

OFEDのあたりは佐藤さんが回答していたので、
そちらをご参考にしてください。

僕の方はMPIについて、

>> (1) 私の当面の目標は、MPIのプログラムから2枚挿しの
>> Infinibandを使うことです。

すみません、ちょっと意味がわかりませんでした。
僕の認識が正しければ2枚のIB portまたはHCAを制御というのは
MPIプログラムからは出来ないと思います。
※もしかしたらMPI-IOで出来るかも・・・

通常、複数IBを使った計算クラスタだと次のどちらかかと
(1)複数のIBを重ねて通信帯域を増やす
(2)ノード間通信と共有ストレージとの通信を分離する

OpenMPI固有の話のようですので、おそらく(1)の気がします。
一応、両方について記述します

(1)について
 いわゆるbondingやteamingをIBで行うことで、
mpirun実行時や設定ファイルの次のパラメータを指定すれば
良いとと思います。
 使用デバイスの指定:"btl_openib_device_type"
 デバイスポート数の指定:"btl_openib_max_btls"

パラメータの説明
http://www.open-mpi.org/community/lists/users/att-13463/ompi_info--openib

参考:
http://web.kudpc.kyoto-u.ac.jp/manual/ja/library/openmpi


※OS(Windows、Linux)の機能でもbondingが出来そうな気がしますが、
 恐らくIPoverIB等のいくつかの機能を介するため、
 1枚でネイティブ実行するより遅くなるのではないかと考えます


(2)について
 単純にここのコメントに書いてあるのを引用します。
http://hardware.slashdot.jp/story/12/11/06/0830209/%E3%82%B9%E3%83%91%E3%82%B3%E3%83%B3%E3%81%8C24%E6%99%82%E9%96%93%E3%81%A7%E4%BD%9C%E3%82%89%E3%82%8C%E3%82%8B%E5%8B%95%E7%94%BB

“シミュレーションに必要な大量のデータを入出力するための大量の file IO を
さばけるストレージ,計算を進めるためにクラスタノード間での大量の通信をさ
ばくためのインターコネクト,の2つがなければまともに使い物にはなりません.”

ということで、
ノード間通信と共有ストレージは別に設計されています。
最近だとGlasterFSなどIBとMPI-IOに対応した分散ファイルを使うのも、
一つの解なんだと思います。

参考:
http://www.slideshare.net/keithseahus/glusterfsinfiniband-13067695


 またネットワークのTopology設計とかになりますが、
OpenMPIで3次元トーラスかメッシュが使えるようです。
 http://www.open-mpi.org/faq/?category=openfabrics#ib-3d-torus

※OpenMPIからOpenSMをコントロールしているみたいなので興味深いネタ

参考:
 http://www.hpcadvisorycouncil.com/events/2011/switzerland_workshop/pdf/Presentations/Day%201/10_HPCAC.pdf



最後に、
個人的には“MPIで2枚のIBを使う”を目標にするというのは違う気がします。
自分の持っているMPIプログラムに対して、
佐藤さんの紹介のあった“ScalableHPC”やGlusterFSを利用、試してみて、
組み合わせると効果がありそうだと言う時に
システム設計として2枚使うかを検討した方がいいと思います。

kan...@makoto.nifty.jp

unread,
Nov 18, 2012, 9:50:08 AM11/18/12
to ibh...@googlegroups.com
金田です。
佐藤さん、だんなさん、コメントありがとうございます。

コメントの内容が私には難しいので、しばらく勉強してみます。
とりあえず私のやりたいことを、追加でご説明します。

MPIのプログラムというのは、OpenFOAMです。
以下のPDFをご覧いただきたいのですが、
http://www.opencae.jp/attachment/wiki/OpenFOAM-study-group-for-beginner%28ja%2
9/20120811ofbatkansai.pdf
(1)OpenMPI、(2)SGIのMPI、(3)SGIのMPI(2枚挿し)、の3パターンで
ベンチマークテストされており、(3)のパフォーマンスが一番高いです。
ここに(4)OpenMPI(2枚挿し)、を加えてベンチマークテストしたい
というのが私の目標です。

SGIの方にお伺いしたところ、上記のベンチマークテストについて、
OpenFOAMのソースコードは一切変更していないそうです。
SGIのMPI側で2枚に振り分けているそうです。
OpenMPIも1.6以降でそれができるらしいのですが、たぶんOpenFOAMの
ソースコードを変更する必要はないと思いますが、あまり自信はありません。

また追加で質問するかもしれませんので、よろしくお願いいたします。
>--
>
>

Hiroyuki Sato

unread,
Nov 18, 2012, 5:35:15 PM11/18/12
to ibh...@googlegroups.com
金田さん

要するに、SGIのMPIを使わずになるべく安くシステムを構築して
パフォーマンスを最大限に引き出したということですね。

https://www.hlrn.de/home/view/System/MpiLibs

SGIのMPI_IB_RAILSにあたるのは、MVAPICH2だとMV2_NUM_PORTS
みたいですね。OpenMPIだとなにになるんでしょうね。

いずれにしても資料の環境はカードがDDRみたいなので、
カードをQDRやFDRにすることで通信帯域は増やせると思います。

まずは1ポートでコンパイラにIntelをつかったり(これは有償になりますが)、
ScalableHPCを使ったりして性能を最大限に引き出せるような環境を構築し
た方が良いように思います。



2012年11月18日 23:50 <kan...@makoto.nifty.jp>:
> --
>
>



--
Hiroyuki Sato

kan...@makoto.nifty.jp

unread,
Nov 19, 2012, 9:54:39 AM11/19/12
to ibh...@googlegroups.com
金田です。
佐藤さん、コメントありがとうございます。

>要するに、SGIのMPIを使わずになるべく安くシステムを構築して
>パフォーマンスを最大限に引き出したということですね。

すみません、そこまでシビアな話ではありません。
私はOpenFOAMをソースからビルドして、各種バイナリを勉強会等で配布
しています。
例のPDFの発表を聴いて、Infiniband 2枚挿しで動作確認したバイナリを
配布した方がいいのかな?と思いました。
MPIはフリーのものに代替する必要があります。

Intelコンパイラは試した方が何人かいらっしゃいますが、OpenFOAMは
C++なので残念な結果に終わったそうです。
ScalableHPCやGlusterFSは、時間を見つけて勉強してみます。
ScalableHPCは勉強会ネタにしていただけると嬉しいですが..
どうもありがとうございました。

Hiroyuki Sato

unread,
Nov 19, 2012, 10:20:23 AM11/19/12
to ibh...@googlegroups.com
金田さん

佐藤です。

メインの仕事でScalableHPCは使っていないのですが
なにかご質問があればお気軽にお問い合わせください。

余談ですが、
OpenMPIの場合
・SGIのMPI_IB_RAILSに該当するOpenMPIのパラメータはbtl_openib_max_btls?
・IBで複数ポートを利用するのはbtl_openib_max_btlsを指定する
・初期値は-1ですべてのポートを利用する。

となっているみたいなので勝手に全部のポートを利用してくれるのではないでしょうか?

このへんはだんなさんの方がくわしいと思います。

なお上記の機能はOpenMPI 1.5でも使えるみたいです。
OpenMPI1.6で使えるようになった新しい機能というのがどれだかわかりませんでした。

これのことですということがわかればもっと詳しいことがわかるかもしれませんね。

今後ともよろしくお願いします。


2012年11月19日 23:54 <kan...@makoto.nifty.jp>:
--





--
Hiroyuki Sato
Reply all
Reply to author
Forward
0 new messages