読者です 読者をやめる 読者になる 読者になる

あれとアレは混ぜるな危険

日々精進をしているふり

Windows Server 2012 で InfiniBand を使いましょう

こんにちは、はるたまです。例によって楽天の藤田(プロ)のファインプレーをお楽しみください。話はそれからだ。

正反対へのジャンピングスロー 藤田が魅せる妙技 2013.08.07 E-Bs
ちなみにこの動画の見どころは解説をしている草野*1(おっさん)のトークです。「安いです!(キリッ」

今日は Windows Server 2012 で InfiniBand を使うときのお話です。

メンバー紹介

InfiniBand を使うからにはいろいろと機器が必要になりますが、今回はこれを使っています。

  • InfiniBand HCA

Mellanox MCX353A-QCBT

InfiniBand がデュアルポートで出ているものもありますが、とりあえず1個あればいいかと思ってコレにしました。
FDRという選択肢もありましたが、スイッチ側がQDRのためHCAもQDRで我慢しておきました。

  • InfiniBand スイッチ

Mellanox MIS5022Q

このスイッチですけど、付属の電源ケーブルがこんな残念な感じのものになりますので、別途調達しておいてください。特に買わなくても、そこらへんに転がっていると思います。

  • QSFPケーブル

Mellanox CTMC2206130

お好きな長さでどうぞ。ケーブルが固めなので、ちょっと長目のものを買っておきました。

つまりオール Mellanox でお送りします。

とりあえず繋ぐ

まずは新品の電子機器特有の匂いをクンカクンカしつつ、HCA をマシンに挿し、スイッチに電源を入れ、QSFP でつなぎましょう。
この状態で Windows のデバイスマネージャーから見ると…

標準でドライバが入ってきましたね。良い感じなので通信できるのか見てみると…

通信できないです。スイッチの状態はこんな感じで…

HCAはこんな感じです。

さてどうしましょう?

サブネットマネージャー

InfiniBand のネットワークの中には「サブネットマネージャー」と呼ばれるものが動作している必要があります。サブネットマネージャーは、ネットワークの中にいるホストや通信経路を監視する役割を持っています。
これがどこかで動いていないと北斗の拳のような無法状態なので、誰かがどこかでサブネットマネージャーを動かす必要があります。ヒャッハー!

スイッチで動かす

サブネットマネージャーが動作可能な InfiniBand スイッチは「マネージドスイッチ」と呼ばれています。もしマネージドスイッチに接続していれば、Windows Server 2012 マシンに HCA を刺してスイッチに繋ぐと、通信ができる状態になっているはずです。*2
今回使っている MIS5022Q は「アンマネージドスイッチ」になります。なので、スイッチ以外の誰かがサブネットマネージャーを動かさないといけません。

サブネット内にあるマシンで動かす

ではアンマネージドなスイッチの場合どうするの?ということになりますが、InfiniBand のサブネットに参加しているマシンの中で、とある1台のマシンにサブネットマネージャーを実行してもらいます。
Windows のサブネットマネージャー実装としては「OpenSM」というものが一般的に使われています。Mellanox 製 HCA の場合ドライバをインストールすると OpenSM も一緒にインストールされるので、今回はコレを使います。

ドライバをインストールして OpenSM を動かす

ここで説明することの詳細はこの PDF に詳細が書いてあります。
Mellanox 製品の Windows 用ドライバはここから入手できますのでダウンロードして実行しますが、管理者として実行しないと途中のインストールプロセスで失敗してしまいます。
この点に注意しつつインストールを進めると OpenSM がインストールされることが確認できます。

新しいドライバが入るので、デバイスマネージャーからの見え方が変わっています。*3

OpenSM は「C:\Program Files\Mellanox\MLNX_VPI\IB\Tools\opensm.exe」としてインストールされているので、これを Windows サービスとして登録して開始します。

sc create OpenSM binPath= "c:\Program Files\Mellanox\MLNX_VPI\IB\Tools\opensm.exe -service" start= auto
sc start OpenSM

これで通信ができる状態になりました。

スイッチの状態もこうなって

HCAも元気に動き始めます。

ということでQDR InfiniBand の 32Gbps 通信*4をお楽しんでいる最中です。

*1:元楽天の内野手。去年いっぱいで選手としては引退して、今も楽天のアンバサダーとして、試合の解説もしたりする。http://www21.atwiki.jp/washisen/pages/34.html

*2:とりあえず通信はできますが、HCA の持っている機能の全てが使えるわけではないので、最新のドライバを入れてください。

*3:ファームウエアアップデートが必要な場合があるかもしれませんが、手順自体は先のPDFにありますので。

*4:本来は40Gbpsだけど、データを転送する際に8bitsのデータを10bitsに引き伸ばす処理が行われるので、20%はロスしてしまうのです。どうして無駄にしか思えない処理が必要になるのかはこちらをどうぞ。 http://ja.wikipedia.org/wiki/8b/10b