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を選択しない理由は無いのではないか?と思える結果でした。

以上

AMD EPYC 7501 + 32GB DDR4-2666 性能評価

EPYC1CPU当たり32コアを持つEPYC 7501 x 2個と、32GB DDR4-2666 x 32枚(合計1024GB)を搭載するシステムPOWER MASTER Server S5081にて、姫野ベンチマークによる計測を行ってみました。

ちなみに、AMD EPYCには8coreのダイが4つパッケージに入っていて、各々のダイにはメモリ2chとPCIE x16 2本が接続できる構成となっているとのこと。1CPUでメモリ8chとPCIE x16 8本も持っているのです。

【環境】

    CPU:EPYC 7501 x 2個
    メインボード:Supermicro H11DSU-iN
    メモリ:32GB DDR4-2666 ECC Registered x 32枚(合計1024GB)
    OS:CentOS7.3 x86_64

【テスト】

① シングルスレッド評価

    Compiler: gcc 7.2.1
    Benchmark: himenoBMTxp_l(C, dynamic allocate version)
    Size: L

② マルチスレッド評価

    MPI: mpich3.2
    Compiler: gcc 7.2.1
    Benchmark: cc_himenoBMTxp_mpi(C + MPI, static allocate version)
    Size: L、XL

【結果】

[TABLE=26]

[TABLE=27]

(SMT: Simultaneous MultiThreading)

Xeon E5-2680v4とEPYC 7501のシングルスレッド値で比較すると、 EPYC 7501は、Xeon E5-2680v4よりも 約1.35倍の高い結果となっています。

並列計算でもスレッド数64で良い結果となっていますが、スレッド数128では値が少し下がっていて、このあたりがメモリ帯域の限界ではなかろうか?

いずれにしても、すでに持っているバイナリ(アプリケーション)で、パフォーマンス向上を目指すならば、AMD EPYCは良い選択肢となるかもしれません。