2019年4月にHPCおよびAIイノベーション ラボのVarun Bawa、Savitha Pareek、Ashish K Singhによって作成された記事
第2世代インテルXeon®プロセッサー スケーラブル ファミリー プロセッサー(アーキテクチャ コードネーム「Cascade Lake」)のリリースに伴い、Dell EMCはPowerEdge第14世代サーバーをアップデートし、コア数の増加とメモリー速度の向上によるメリットを生かしてHPCアプリケーションにメリットをもたらしました。
このブログでは、一部のHPCベンチマークとアプリケーションに対して、最新のインテルXeon® Cascade Lakeプロセッサーを搭載したDell EMC PowerEdge C6420で使用可能なさまざまなBIOSチューニング オプションについて、最初の結果セットを示し、その影響について説明します。この調査で使用したCascade Lakeプロセッサー、BIOSオプション、HPCアプリケーションについて以下に簡単に説明します。
Cascade Lake は、インテルのSkylakeの後継製品です。Cascade Lakeプロセッサーは、最大28コア、最大2933 MT/sの速度を持つ6個のDDR4メモリー チャネルをサポートします。Skylakeと同様に、Cascade Lakeは、32 DP FLOP/サイクルを可能にするAVX512命令セットにより、追加のベクトル化電力をサポートします。Cascade Lakeでは、画像分類、音声認識、言語翻訳、物体検出などのAIおよびDLワークロードのパフォーマンスを高速化する
ベクトル ニューラル ネットワーク命令(VNNI)が導入されています。VNNI は、
推論パフォーマンスを高速化するために 8 ビット命令もサポートしています。
Cascade Lakeには、一部の
サイドチャネルの脆弱性に対する
ハードウェア軽減策が含まれています。これにより、ストレージ ワークロードのパフォーマンスが向上することが期待されます。
イノベーション ラボによる今後の研究にご期待ください。
SkylakeとCascade Lakeはソケット互換性があるため、システムBIOSで公開されているプロセッサー チューニング ノブは、これらのプロセッサー世代間で類似しています。この調査では、
Skylakeで過去に公開された研究と同様に、次のBIOSチューニング オプションを検討しました。
プロセッサーの設定:
- 隣接キャッシュ ラインのプリフェッチ: 隣接キャッシュ ライン プリフェッチ メカニズムを使用すると、自動ハードウェア プリフェッチが可能になり、プログラマーの介入なしに動作します。有効にすると、追加のキャッシュ ラインが要求されているかどうかに関係なく、2 つの 64 バイト キャッシュ ラインを 128 バイト セクターに収容できます。
- ソフトウェア プリフェッチャ: 必要になる前にデータをキャッシュにロードすることで、ストールを回避します。Example: L2プリフェッチ命令で使用する前にメインメモリからL2キャッシュにデータをプリフェッチし、L1プリフェッチ命令で使用する直前にL2キャッシュからL1キャッシュにデータをプリフェッチすること。ここで有効に設定すると、プロセッサーはメモリー リクエストごとに追加のキャッシュ ラインをプリフェッチします。
- SNC(サブNUMAクラスター): SNC を有効にすることは、1 つのソケットを 2 つの NUMA ドメインに分割し、それぞれに物理コアの半分とソケットのメモリの半分を持たせることと似ています。実用性はインテルXeon E5-2600 v3およびv4プロセッサーで利用可能だった Cluster-on-Dieオプション と似ています。SNCはCODとは異なる方法で実装されており、これらの変更により、クラスター オン ダイ オプションを使用していた旧世代と比較して、Cascade Lakeのリモート ソケット アクセスが改善されています。オペレーティング システム レベルでは、SNC が有効になっているデュアル ソケット サーバーには 4 つの NUMA ドメインが表示されます。2つのドメインは(同じソケット上で)互いに近くなり、他の2つはUPIを渡ってリモート ソケットまで遠く離れています。これは、次のようなOSツールを使用して表示できます。numactl –H に示されており、図 1 に示されています。
図1: NUMAノードのレイアウト
システム プロファイル:
システム プロファイルはメタ オプションであり、ター
ボ モード、
Cstate、C1E、
Pstate管理、アンコア周波数など、パフォーマンスと電源管理に重点を置いた複数のBIOSオプションを設定します。 この調査で比較されたさまざまなシステム プロファイルは次のとおりです。
- パフォーマンス
- WattDAPあたりのパフォーマンスC
- WattOSあたりのパフォーマンス
2つのHPCベンチマークと2つのHPCアプリケーションを使用して、これらのBIOSオプションがCascade Lakeのパフォーマンスに与える影響を理解しました。この調査で使用したサーバーおよびHPCアプリケーションの構成を表1と表2に示します。
アプリケーション |
ドメイン |
バージョン |
ベンチマーク |
High Performance Linpack(HPL) |
計算 - 密な一次方程式系を解く |
インテルMKL - 2019 Update 1から |
問題の規模 合計メモリーの90%、92%、94% |
ストリーム |
メモリー帯域幅 |
5.4 |
トライアド |
Wrf |
気象調査と予報 |
3.9.1 |
イモナス 2.5km |
ANSYS®フルエント® |
流体力学 |
19.2 |
Ice_2m、 Combustor_12m、 Aircraft_wing_14m、 Exhaust_System_33m |
表1:アプリケーションとベンチマーク
コンポーネント |
詳細 |
Server |
PowerEdgeサーバーC6420 |
CPU |
インテル® Xeon® Gold 6230 CPU @ 2.1GHz、20コア |
メモリー |
192GB モデル – 12 x 16GB 2933 MT/s DDR4 |
オペレーティングシステム |
Red Hat Enterprise Linux 7.6Red Hat Enterprise Linux 7.6 |
カーネル |
3.10.0-957.el7.x86_64 |
コンパイラ |
インテル® Parallel Studio クラスター Edition_2019_Update_1 |
表2 サーバー構成
ここに示すすべての結果は、単一サーバーのテストに基づいています。クラスター レベルのパフォーマンスは、単一サーバーのパフォーマンスによって制限されます。パフォーマンスの比較には、次のメトリックが使用されました。
- ストリーム – ストリーム ベンチマークによって報告されたトライアド スコア。
- HPL:GFLOP/秒。
- Fluent - Fluent によって報告されたソルバー評価。
- WRF – 円錐 2.5 km の過去 719 インターバルで計算された平均時間ステップ
ベンチマークとアプリケーションの結果
グラフ表記の略語:
システム プロファイル:
パフォーマンス – パフォーマンスOS – パフォーマンスPerWattOS DAPC – パフォーマンスPerWattDAPC
サブNUMAクラスタリング: SNC = 0 (SNC = 無効): SNC = 1(SNC = 有効: グラフではストライピングとして書式設定)
SW – Software Prefetcher: SW = 0(SW = 無効): SW = 1(SW = 有効)
図2:ハイ パフォーマンスLinpack
図2は、さまざまなBIOSオプションで問題サイズ = 90%(N=144476)のHPLの結果を比較したものです。このグラフは、さまざまなBIOS構成でHPLを実行しているときに取得された絶対ギガフロップスをプロットします。得られたこれらのギガフロップスはy軸にプロットされており、数値が高いほど良いです。
以下は、グラフの観測結果です。
- ソフトウェアのプリフェッチによるHPLパフォーマンスの差は1%未満です。
- HPL パフォーマンスに対する SNC の大きな影響はありません (SNC=Disabled で 0.5% 向上)。
- パフォーマンス システム プロファイルは、OSおよびDAPCと比較して最大6%優れています。
図3:ストリーム
図3は、STREAMの結果を異なるBIOS構成で比較したものです。
このグラフは、STREAM Triadの実行中に得られたメモリ帯域幅をギガバイト/秒でプロットしたものです。得られたメモリー帯域幅(GB/秒)はy軸にプロットされます。数値が高いほど良いです。x軸には、ギガバイト/秒の特定の値に関連付けられているBIOS設定がプロットされます。
以下は、グラフの観測結果です。
- SNC=enabled使用時のメモリー帯域幅が最大3%向上。
- STREAMメモリー帯域幅でのソフトウェア プリフェッチによるパフォーマンスの偏差はあまりありません。
- システム プロファイル間の逸脱なし。
図4:メモリー帯域幅 – SNC
図4は、このような構成でのストリーム トライアド メモリー帯域幅スコアを示しています。フル システム メモリー帯域幅は~220 GB/秒です。ローカル ソケット上の20個のコアがローカル メモリーにアクセスする場合、メモリー帯域幅は~109GB/秒で、これは全システム帯域幅の半分です。この半分(~56 GB/秒)は、ローカル メモリーにアクセスする同じNUMAノード上の10スレッドと、同じソケット上の他のNUMAノードに属する1つのNUMAノード アクセス メモリー上の10スレッドのメモリー帯域幅です。スレッドがリモート ソケット上のQPIリンクを介してリモート メモリーにアクセスすると、メモリー帯域幅が42%低下して~33GB/秒になります。これは、データがローカルでない場合にSNCモードで大幅な帯域幅のペナルティがあることを示しています。
図5:Wrf
図5は、さまざまなBIOSオプションでのWRFの結果を比較したものです。使用されるデータセットは、デフォルトの「namelist.input」ファイルを使用したconus2.5kmです。
このグラフは、さまざまなBIOS構成でWRF-conus2.5kmデータセットを実行しているときに得られた絶対平均時間ステップ(秒単位)をプロットしています。得られた平均時間ステップはy軸にプロットされ、小さいほど良いです。平均時間ステップの特定の値に関連付けられた相対プロファイルが x 軸にプロットされます。
以下は、グラフの観測結果です。
- SNC=Enabledでパフォーマンスが2%向上。
- ソフトウェア プリフェッチの有効化と無効化でパフォーマンスに差はありません。
- パフォーマンス プロファイルは、PerformancePerWattDAPCプロファイルよりも1%優れています
図6から図9は、Fluent-の実行中に得られたソルバーレーティングを、それぞれIce_2m、Combustor_12m、Aircraft_Wing_14m、Exhaust_System_33mデータセットでプロットしたものです。得られたソルバー評価はy軸にプロットされます。数値が高いほど良いです。平均時間の特定の値に関連付けられた相対プロファイルがx軸にプロットされます。
以下は、上記のグラフの全体的な観察結果です。
- SNC=Enabledを使用すると、パフォーマンスが最大4%向上します。
- ソフトウェア プリフェッチによるパフォーマンスへの影響はありません。
- パフォーマンス プロファイルを使用すると、DAPCおよびOSプロファイルと比較してパフォーマンスが最大2%向上します。
結論
この調査では、インテル Xeon Gold 6230プロセッサーを使用した場合のパフォーマンスに対するさまざまなBIOSチューニング オプションの影響を評価しました。さまざまなベンチマークとアプリケーションにわたってさまざまなBIOSオプションのパフォーマンスを観察した結果、次のような結論が出されます。
- ソフトウェア プリフェッチ は、テストされたデータセットに大きなパフォーマンス インパクトを与えません。したがって、ソフトウェアプリフェッチャーをデフォルト(有効)のままにしておくことをお勧めします
- SNC=Enabled の場合、Fluent と Stream では 2 から 4% のパフォーマンス向上、SNC = Disabled と比較して WRF では約 1% 向上します。したがって、パフォーマンスを向上させるには、 SNC を有効にすることをお勧めします 。
- パフォーマンス プロファイルは、PerformancePerWattDAPCおよびPerformancePerWattOSよりも2〜4%優れています。そのため、HPC のパフォーマンス プロファイルをお勧めします 。
汎用HPCクラスターでは 、ハイパースレッディング をオフにすることをお勧めします。使用するアプリケーションに応じて、この機能のメリットをテストし、必要に応じて有効にする必要があります。
この調査では説明しませんが、システムにx4 DRAM構成(32GB、64GB DIMM)のメモリーが構成されている場合に利用できる、Adaptive Double DRAM Device Correction(ADDDC)と呼ばれるメモリーRAS機能があります。システムにx8ベースのDIMM(8GB、16GB)がある場合、ADDDCは使用できず、これらの構成では重要ではありません。HPCワークロードの場合、 調整可能なオプションとして使用可能な場合は、ADDDCを無効に設定することをお勧めします。