Google Cloud 上で HPC アプリケーションの MPI パフォーマンスを改善
Google Cloud Japan Team
※この投稿は米国時間 2020 年 12 月 5 日に、Google Cloud blog に投稿されたものの抄訳です。
大規模なエンジニアリング シミュレーションや、分子力学、ゲノミクスなどを扱うハイ パフォーマンス コンピューティング(HPC)アプリケーションの多くは、オンプレミスの HPC クラスタにあるスーパーコンピュータ上で実行するのが一般的です。現在、こうしたワークロードの実行環境として、弾力性、従量課金制、低いメンテナンス コストといった特長を備えたクラウドが魅力的な選択肢となってきています。
HPC アプリケーションのパフォーマンスとスケーラビリティを向上させるには、Message Passing Interface(MPI)レイテンシを縮めることが重要となります。Google Cloud では最近、MPI ワークロードの実行を簡易化してパフォーマンスを最適化するため、いくつかの工夫と調整を行いました。ベスト プラクティスを取り入れたことにより、特に、小規模メッセージとグループ演算を多用するアプリケーションにおいて、MPI レイテンシの減少が期待できます。
このベスト プラクティスは、ソフトウェアの大規模な変更やハードウェアの追加を行うことなく、Google Cloud システムとネットワーキング インフラストラクチャを最適化するだけで TCP の MPI 通信を向上させられるのが特長です。具体的には、MPI の ping-pong レイテンシがマイクロ秒(μs)1 桁にまで落ち、小規模の MPI メッセージなら 10 μs 以下で配信できます。以下の図は、積極的に最適化することで Google Cloud のテスト環境において片道レイテンシが 28 μs から 8 μs にまで縮まったことを示しています。
MPI パフォーマンスの向上は、アプリケーション スケーリングの改善に直結します。つまり、Google Cloud で効率良く実行できるワークロード セットの拡張につながります。Google Cloud で MPI ワークロードを実行する際は、ここで紹介するベスト プラクティスに沿って、パフォーマンスをできるだけ高めるようにしましょう。間もなく、HPC VM イメージの提供を開始する予定です。このイメージを利用すれば、Google Cloud 上の MPI ワークロードにベスト プラクティスを簡単に適用して高いパフォーマンスを得られます。
1. コンピューティング最適化された VM
コンピューティング最適化(C2)されたインスタンスには、仮想コアから物理コアへの固定されたマッピングがあり、NUMA アーキテクチャをゲスト OS に公開しています。このような最適化は、MPI ワークロードのパフォーマンスに大きく影響します。さらに、C2 インスタンスは、高速なクロック速度(3.8 GHz)と広いメモリ帯域幅をサポートしている第 2 世代の Intel Xeon Scalable プロセッサ(Cascade Lake)を採用していて、古い世代のインスタンス タイプと比べてパフォーマンスが最大で 40% 向上します。
また、C2 VM はベクトル命令(AVX2、AVX512)もサポートしています。AVX 命令を使ってコンパイルすることで、多数の HPC アプリケーションでパフォーマンスが大幅に向上することが確認されています。
2. コンパクト プレースメント ポリシーを使用する
プレースメント ポリシーとは、データセンターにおける仮想マシンの配置を制御する仕組みです。コンパクト プレースメント ポリシーは、単一のアベイラビリティ ゾーンに VM を配置する低レイテンシ トポロジを提供し、ネットワーク内の最寄りのノードでインスタンスをホストするのが特長です。プレースメント ポリシーの API では現在、C2 VM を 22 個まで作成することが可能です。
3. Intel MPI を使用して、グループ通信を調整する
Google Cloud で MPI アプリケーションのパフォーマンスを最大化するには、Intel MPI 2018 を使用することをおすすめします。Intel MPI ではグループ通信のアルゴリズムと構成パラメータを手動で指定できます。MPI グループ アルゴリズムを選択すれば、MPI アプリケーションの大幅なパフォーマンス向上が期待できます。
こうした調整は mpitune を使用して行います。その際、コンパクト プレースメント ポリシーに従う C2-Standard-60 の VM について、VM の数と VM ごとのプロセス数のすべての組み合わせに対して調整を行う必要があります。この作業は非常に手間がかかるので、Google では一般的な MPI ジョブの構成に利用できる推奨の Intel MPI グループ アルゴリズムを提供しています。
科学計算のパフォーマンスを向上させるには、Intel Math Kernel Library(MKL)の使用もおすすめします。
4. Linux TCP の設定を調整する
密結合なアプリケーション(異なるノード上の MPI プロセスが頻繁に通信する、またはデータ量の大きい通信を行うアプリケーション)では、MPI のネットワーキング パフォーマンスが特に重要となってきます。ネットワーク設定を以下のように調整すると、MPI パフォーマンスを最適化させることができます。
tcp_mem の設定値を大きくして、ネットワークのパフォーマンスを向上させる
CentOS でネットワーク レイテンシ プロファイルを使用して、ビジー ポーリングを有効にする
5. システムの最適化
ハイパー スレッディングを無効にする
両方の仮想コアが計算依存型である計算依存型ジョブの場合、Intel ハイパー スレッディングはアプリケーションの全体的なパフォーマンスを妨げ、非決定的なバリアンスをジョブに追加する場合があります。ハイパー スレッディングを無効にすると、予測可能性に優れたパフォーマンスが可能になり、ジョブの時間を短縮できます。
セキュリティ設定を見直す
組み込みの Linux セキュリティ機能の一部を無効にすると、MPI のパフォーマンスをさらに向上させることができます。システムが十分に保護されていると確信できる場合は、ベスト プラクティス ガイドのセキュリティ設定セクションの説明に沿って、次のセキュリティ機能の無効化を検討してください。
Linux ファイアウォールを無効にする
SELinux を無効にする
Spectre と Meltdown の緩和策を無効にする
効果の測定
では、ベスト プラクティスがパフォーマンスにどのように影響するのかを見ていきましょう。そのために、アプリケーション レベルのベンチマークを使用して、お客様のオンプレミス環境と Google Cloud でのランタイムを比較しました。
(i)米国海洋大気庁(NOAA)の FV3GFS ベンチマーク
NOAA FV3GFS ベンチマークを C768 モデルと C2-Standard-60 インスタンス 104 個(物理コア数 3,120)で実行し、ベスト プラクティスの効果を測定しました。オンプレミスのスーパーコンピュータを基準としたランタイム目標値は 600 秒です。ベスト プラクティスを取り入れた後では、基準測定値に比べ結果が 57% 向上しました。具体的には、Google Cloud 上でベンチマークを 569 秒で実行できました(オンプレミスのスーパーコンピュータを上回りました)。
(ii)ANSYS LS-DYNA エンジニアリング シミュレーション ソフトウェア
C2-Standard-60 インスタンス、AVX512 命令、コンパクト プレースメント ポリシーを使って、LS-DYNA の車 3 台のベンチマークを実行しました。MPI ランクを 30~120(VM 1~4 個)に変化させながら評価を実施しました。ベスト プラクティスを取り入れたところ、Google Cloud のランタイムは、特殊ハードウェアを使用しているお客様のオンプレミス環境と比べて、多くのケースで同等または上回る結果となりました。
ベスト プラクティスを簡単に効率良く導入する方法
Google では、ここで紹介したベスト プラクティスを簡単に導入していただけるよう、CentOS 7 で動作する HPC VM イメージを作成しました。このイメージを利用すれば、Google Cloud 上の MPI ワークロードにベスト プラクティスを簡単に適用して高いパフォーマンスを得られます。または、独自のイメージに調整を加えることも可能です。そのためには、Google HPC-Tools GitHub リポジトリで公開されている bash や Ansible のスクリプトを利用するか、ベスト プラクティス ガイドに沿って操作してください。
HPC VM イメージの利用をご希望の場合は、こちらのフォームからご登録ください。ベンチマークを使用して、効率やコストの観点から最適な構成を見つけることをおすすめします。
ベスト プラクティスを取り入れることは、アプリケーションのパフォーマンス改善とコスト削減につながります。コストのさらなる削減や管理には、自動継続利用割引や、料金を 1 秒単位で明記した請求書のほか、通常のインスタンス タイプと比べて最大 80% 割引となるプリエンプティブル VM もご用意しておりますので、どうぞご利用ください。
Google Cloud のウェブサイトにアクセスして、Google Cloud 上で HPC の使用を今すぐ始めましょう。
-ネットワーキング担当グループ プロダクト マネージャー Manoj Jayadevan
-ネットワーク インフラストラクチャ担当プリンシパル エンジニア David Wetherall