iWARP (Internet Wide-Area RDMA Protocol) は、TCP/IPネットワーク経由でRDMAを実装するネットワークプロトコルです。
前回の記事
Chelsio NICは、ドライバ ダウンロードしてmake一発で環境構築できるので楽ですが、Intel NICはどうもそう楽ではなさそう。
ドキュメントをなんとなく見たところ、どうやら 3つのソフトウェア構成が必用そうです。
・NICドライバ
・NIC RDMAドライバ
・RDMA Coreライブラリ
簡単に環境構築できることは楽で良いですが、もう少し手間を学んだほうが良いのでしょう。
つづく
「PCクラスタ」カテゴリーアーカイブ
iWARP動作検証 つづき①
iWARP (Internet Wide-Area RDMA Protocol) は、TCP/IPネットワーク経由でRDMAを実装するネットワークプロトコルです。
前回の記事
iWARP対応しているNICはどこのメーカーか?
ザックリ調べてみたところ以下
Intel
Chelsio
Marvell
それ以外もあるかもしれない。
ChelsioはiWARPに関して様々なドキュメントやホワイトペーバーが用意されており安心感があります。実際に以下OSをインストールしてみましたが、特に悩まず動作環境を構築できました。
CentOS 7
Rocky Linux 8
Rocky Linux 9
Ubuntu Desktop 20.04
Ubuntu Server 20.04
Chelsioドライバは以下よりダウンロードできます。
https://service.chelsio.com/
2023年5月30日時点での最新Linuxドライバ バージョンは v3.18.0.0 です。
ドライバ ダウンロードし解凍したディレクトリで
$ make list_kernels
実行するとサポートカーネルバージョンのリストが見れます。
(以下 Ubuntu Server 20.04 に関係しそうな部分のみ抜粋)
$ make list_kernels
5.4.0-26-generic
5.4.0-54-generic
5.4.0-65-generic
5.4.0-81-generic
5.4
例えば Ubuntu Server 20.04 の現時点での最新カーネルバージョンは
5.4.0-149-generic
です。
最後の 5.4 の範囲でサポートされているようです。
つづく
iWARP動作検証
iWARP (Internet Wide-Area RDMA Protocol) は、TCP/IPネットワーク経由でRDMAを実装するネットワークプロトコルです。
従来よりHPC分野では、大量のデータを使い演算処理をする大規模計算をサポートするインターコネクトとしてInfinibandが広く採用されてきています。
しかしここ最近では、Infiniband以外にもiWARPやRoCEなども採用される事例が多くなってきています。
そこでiWARPの動作検証をしてみました。
比較方法は、2台の計算機の最大スコアを想定し
1GBps
Infiniband
10Gbps iWARP
のスコアを比較します。
まず以下構成の計算機を2台用意する。
【環境】
●ハードウェア環境
CPU: Intel Xeon Gold 6258R CPU 28Core x1
MEM: 16GB DDR4-2933 x6
●ソフトウェア環境
OS: Ubuntu Server 20.04
MPI: Openmpi 4.1.1
GCC: 9.4.0
Benchmark: cc_himenoBMTxp_mpi(C + MPI, static allocate version)Size=L
【テスト】
●準備計測
まず前提となる最大値を計測する。
計算機1台でのスコアは以下。
・28core without HT N=28
MFLOPS measured : 48898.718831
MFLOPS measured : 48306.170793
MFLOPS measured : 48640.000116
MFLOPS measured : 48399.317924
MFLOPS measured : 48277.031488
平均 48504.2478304 MFLOPS
同構成マシン2台なので最大期待スコアはシンプルに2倍とする。
48504.2478304 MFLOPS x2 = 97008.4956608 MFLOPS
最大期待値 97008.4956608 MFLOPS
●計測
ここからはインターコネクト越しに2台のマシンで計測する。
■ 1Gbps TCP(オンボード Intel 1Gbps NIC)
・56core without HT N=56
MFLOPS measured : 80623.366818
MFLOPS measured : 80866.794020
MFLOPS measured : 81248.198197
MFLOPS measured : 81189.602887
MFLOPS measured : 80827.159099
平均 80951.0242042 MFLOPS
平均 80951.0242042 MFLOPS ÷ 最大期待値 97008.4956608 MFLOPS ≒ 83.4%
※ 計測時のおおよそなシステムプロセス値 10%ほど
■ Infiniband QDR(Mellanox QDR)
・56core without HT N=56
MFLOPS measured : 96102.390695
MFLOPS measured : 96600.515094
MFLOPS measured : 96122.006927
MFLOPS measured : 95872.529788
MFLOPS measured : 96135.243922
平均 96166.5372852 MFLOPS
平均 96166.5372852 MFLOPS ÷ 最大期待値 97008.4956608 MFLOPS ≒ 99.1%
※ 計測時のおおよそなシステムプロセス値 0.1%ほど
■ 10Gbps iWARP(Chelsio 10Gbps NIC)
・56core without HT N=56
MFLOPS measured : 95879.634238
MFLOPS measured : 95465.368767
MFLOPS measured : 94577.077169
MFLOPS measured : 94201.079737
MFLOPS measured : 94704.609024
平均 94965.553787 MFLOPS
平均 94965.553787 MFLOPS ÷ 最大期待値 97008.4956608 MFLOPS ≒ 97.8%
※ 計測時のおおよそなシステムプロセス値 0.1%ほど
【評価】
姫野ベンチマークは、大規模計算までならないとしても軍配はInfinibandでした。さすがです。
ですが10Gbps iWARPも良い結果でした。
最大期待値の97.8%のスコアも良かったですが、計測時のシステムプロセス値 が驚くほど低く0.1%であったことはビックリでした。
計算機環境が小規模であり、コストに見合うのであれば1GbpsよりiWARPを選択するのも悪くなさそうです。
つづく
Intel Xeon Platinum 8180 (Skylake-SP) Linpackベンチマーク
CPU: Intel Xeon Platinum 8180 (28core x2CPU)
MEM: DDR4-2400 192GB (16GB x12 枚 )
OS: CentOS 7
■ソフトウェア環境
Intel Compiler: 2018 update3 Cluster Edition
BLAS: Intel MKL
MPI: Intel MPI
■ベンチマーク
HPL 2.2
# プロセスで使うメモリは、おおよそ 32GB 程度に調整
■スコア
Compiler option: mpiicc -Ofast -xCORE-AVX512
Score: 1628.0GFLOPS
■frequency値
AVX512使用時 (28Core動作)
Base frequency: 1.7GHz
Turbo frequency: 2.3GHz
■結果
最大理論性能を以下に示します。
AVX512使用時Turbo frequency = 2.3GHz x 16 演算 x 28core x 2cpu = 2060.8GFLOPS
スコアは 1628.0GFLOPS ですので、理論性能の 79% となりました。
以上
Intel Xeon Silver 4114 (Skylake-SP) Linpckベンチマーク
Skylake-SPがリリースされて以来、ベンチマーク走らせていなかったのでやってみました。
CPU: Intel Xeon Silver 4114 (10core x2CPU)
MEM: DDR4-2400 128GB (16GB x8 枚 )
OS: CentOS 7
■ベンチマーク
HPL 2.2
# プロセスで使うメモリは、おおよそ 32GB 程度に調整
・環境1
GCC: 8.2.0
BLAS: Atlas 3.10.3
MPI: OpenMPI 3.1.1
・環境2
Intel Compiler: 2018 update3 Cluster Edition
BLAS: Intel MKL
MPI: Intel MPI
■スコア
・環境1
Compiler option: mpicc -Ofast -march=native
Score: 223.2GFLOPS
Core frequency: 2.2GHz
・環境2
Compiler option: mpiicc -Ofast -xCORE-AVX512
Score: 413.6GFLOPS
Core frequency: 1.4GHz
■補足情報
Intel Skylake-SP は並列計算時に、 AVX未使用時 AVX2使用時 AVX512使用時で各々にBase frequencyが決まっています。
そしてTurbo Boostにて、各々のBase frequencyに対しプロセスを動かすコア数ごとに動作周波数が変動します。
・AVX未使用時 (10Core動作)
Base frequency: 2.2GHz
Turbo frequency: 2.5GHz
・AVX2使用時 (10Core動作)
Base frequency: 1.8GHz
Turbo frequency: 2.2GHz
・AVX512使用時 (10Core動作)
Base frequency: 1.1GHz
Turbo frequency: 1.4GHz
■評価
前提とする最大理論性能を以下に示します。
AVX未使用時Turbo frequency = 2.5GHz x 4 演算 x 10core x 2CPU = 200GFLOPS
AVX2使用時Turbo frequency = 2.2GHz x 8 演算 x 10core x 2CPU = 352GFLOPS
AVX512使用時Turbo frequency = 1.4GHz x 16 演算 x10core x 2CPU = 448GFLOPS
・環境1のスコアについて
「 -march=native 」指定しているので、 AVX512 なコードを出していると期待している。
実際に AVX2 アーキテクチャの CPU で実行するとエラーを吐いて動作しないことから、少なからずAVX512 なコードになっているのではないか?
しかし、 AVX512使用時Turbo frequency 1.4GHz で動作していない。
考えられることとしては、 GCCでは中途半端にAVX512なコードを出しているだけで(ほとんど AVX2 なコードに近いのか?) AVX512 を最大限最適化していないと見えます。そのためにAVX2使用時Turbo frequencyと同じ 2.2GHz で動作していると見える。
仮に AVX2 のコードと仮定して理論性能と比較しても、実際のスコアは 223.2GFLOPS ですので、最大理論性能の 63% となります。
# これはリーズナブルな値と言えるのか。。。
・環境2のスコアについて
スコアは 413.6GFLOPS ですので、理論性能の 92% となります。
もはやSkylake-SPでは、開発環境にIntelコンパイラとIntel MKLを選択しない理由は無いのではないか?と思える結果でした。
以上