Infiniband のスピード計測

Infiniband のスピードを計測しようと思い立って計測してみた。(以前にも測ってはいたんだけど結果を忘れたので。)マシンは Xeon 5650×2 に QDR のカードを挿してスイッチ1段経由で接続(メーカーは全部 Mellanox)、OS は Scientific Linux 6.1 です。

計測方法

まずは純粋に Infiniband のスピードを測るために {rc|uc}_pingpong を回してスピードを測ってみます。

 node01$ ibv_rc_pingpong -n 1000 -s メッセージサイズ
 node02$ ibv_rc_pingpong -n 1000 -s メッセージサイズ node02

 node01$ ibv_uc_pingpong -n 1000 -s メッセージサイズ
 node02$ ibv_uc_pingpong -n 1000 -s メッセージサイズ node02

次に、MPI で pingpong のスピードを測ります。MPI(片側Send/片側Recv), MPI-prepost(片側IRecv/Barrier/片側Send), MPI-prepost-bidirec(両側からIRecv/Barrier/両側からISend)の3種類を測りました。MPIの実装は OpenMPI 1.4.3 です。

結果

予想はしていましたがrcとucの違いはほとんどなくてrcでいいじゃん、という結論でした。
また、MPIは結構スピードのばらつきが激しくて、4MBぐらいのメッセージにしないと手法で結構バラつくなぁ、という感じでした。単位は全部 bps です。

メッセージサイズ rc速度 uc速度 MPI MPI(prepost) MPI(prepost-bidirec)
32K 18.9G 18.7G 3.2G 13.8G 5.4G
64K 21.4G 21.4G 5.2G 16.1G 11.9G
128K 22.9G 23.0G 3.4G 18.7G 15.0G
256K 23.8G 23.8G 8.0G 19.7G 17.1G
512K 24.2G 24.2G 14.0G 20.6G 17.6G
1M 24.4G 24.4G 15.9G 21.0G 18.4G
2M 24.6G 24.6G 17.0G 21.3G 13.8G
4M 24.6G 24.6G 17.8G 21.1G 18.4G

おまけ1(IPoIBの速度測定)

iperf でIPoIB の速度測定をしてみました。パラメータは全部デフォルトで、5回の平均で13.6Gbits/secでした。(ばらつきほとんどなし)

おまけ2(SDPの速度測定)

iperf で SDP の速度測定をしてみました。パラメータは全部デフォルトで、5回の平均で9.2Gbits/secでした。(ばらつきほとんどなし) IPoIB より遅いじゃん!