漢なら InfiniBand ですね! Windows 10 でも使いたいですね!
Connect-X 3(not Pro) を Windows 10 で動かしましょう.
Connect-X 3 について
最近だと eBay で 1.5 万円 + 海外送料で調達できます.
ドライバについて
Mellanox の WinOF ドライバを使います.
Connect-X 2 は Windows 7 までのサポートなので, Windows 10 では動きません.
また, OpenFabrics 版である WinOFED は久しくアップデートされていないので, これも最新の Windows では動きません. したがって Windows 10 ですと Connect-X 3 以降 + Mellanox WinOF ドライバ一択となります.
Connect-X 3 の場合は WinOF を使います. 現時点では 5.10 が最新でした. Windows Client + OS 10 を選択します.
動かす.
IB QDR スイッチを経由して, Linux CentOS7 + Connect-X 2 と通信できるか試してみます.
opensm が linux 側で動いているとします.
CentOS7 での InfiniBand の設定は CentOS7 + InfiniBand で MPI を動かす などを参照ください.
C:/Program Files/Mellanox/MLNX_VPI/IB
あたりにいろいろツールがあります.
ibstat
を動かしてみます.
syoyo@gpu-ib-win MINGW64 /c/Program Files/Mellanox/MLNX_VPI/IB/Tools
$ ./ibstat.exe
CA 'ibv_device0'
CA type:
Number of ports: 2
Firmware version: 2.35.5100
Hardware version: 0x0
Node GUID: 0x0002c90300436210
System image GUID: 0x0002c90300436213
Port 1:
State: Active
Physical state: LinkUp
Rate: 40
Real rate: 32.00 (QDR)
Base lid: 4
LMC: 0
SM lid: 1
Capability mask: 0x90580000
Port GUID: 0x0002c90300436211
Link layer: IB
Transport: IB
Port 2:
State: Down
Physical state: Polling
Rate: 40
Base lid: 0
LMC: 0
SM lid: 0
Capability mask: 0x90580000
Port GUID: 0x0002c90300436212
Link layer: IB
Transport: IB
LinkUp と繋がりを確認しました. Cool!
(スイッチが QDR なので QDR rate になります)
IPoIB
Mellanox のドキュメントを参考にし, IPoIB の設定をしておきます(IPv4 静的ネットワークを作るのが手っ取り早いでしょう).
(最初の WinOF インストールのあと再起動し, その後 device manager でドライバの自動更新をする必要があるかもしれません)
Windows の ping などで相手先の IP アドレスが見えることを確認します.
iperf で性能測定してみましたが, 理論上 2.5 GB/s くらい出るはずが 1 GB/s(8 gbp/s) くらいしか出ませんでした. 精進が必要ですね.
TODO
- FDR スイッチで試す.
- Linux <-> Windows での IB Verbs or rsocket 通信を試す.
- ND(NetworkDirect) は RoCE(Eth) 専用っぽいので IB では動かない模様.
- rsocket(librdmacm) は Mellanox の SDK に入っていないので, librdmacm のソースを引っ張ってきて自分で頑張ってハックする?
- Linux + Windows 混在での MPI + InfiniBand は動くかな?
- Dual port なので IPoIB teaming 試したい.