HPC 対応 VM インスタンスの作成


はじめに

密結合のハイ パフォーマンス コンピューティング(HPC)ワークロードは、多くの場合、Message Passing Interface(MPI)を使用してプロセスと仮想マシン(VM)インスタンス間の通信を行います。ただし、MPI パフォーマンスを最適にするために独自の VM イメージをビルドするには、システムに関する専門知識と Google Cloud の知識が必要になり、メンテナンスに費やす時間も多くなります。HPC ワークロード用の VM インスタンスをすばやく作成するには、HPC VM イメージを使用します。また、H3 マシンシリーズを使用して VM を作成することもできます。

HPC VM イメージは、密結合の HPC ワークロード用に最適化された CentOS 7.9 か Rocky Linux 8 ベースの VM イメージです。この中には、Google Cloud で MPI のパフォーマンスを最大化する VM インスタンスの作成に必要な事前構成済みのカーネルとネットワーク調整パラメータが含まれています。

HPC 対応 VM を作成するには、次のオプションを使用します。

利点

HPC VM イメージには、次の利点があります。

  1. すぐに使用できる HPC 対応の VM。密結合の HPC ワークロードの場合、パフォーマンスを手動で調整する必要はありません。VM の再起動を管理する必要も、Google Cloud の最新のアップデートを使用して最新の状態に更新する必要もありません。
  2. 密結合のワークロードのネットワーク最適化。小規模メッセージのレイテンシを低減するように最適化されます。ポイントツーポイント通信とグループ通信に大きく依存するアプリケーションにメリットがあります。
  3. HPC ワークロードのコンピューティング最適化。システム ジッターを削減するように最適化されます。これにより、単一ノードの高パフォーマンスの予測可能性が向上します。
  4. 一貫性のある再現可能なパフォーマンス。VM イメージの標準化により、アプリケーション レベルで一貫した再現性が得られます。
  5. アプリケーションの互換性の向上Intel HPC プラットフォーム仕様のノードレベルの要件を満たすことで、システム間で高度な相互運用性を実現します。

機能

自動更新を無効にする

自動更新は HPC アプリケーションのパフォーマンスに悪影響を与える可能性があります。HPC VM イメージを使用するときに自動更新を無効にするには、VM の作成時に google_disable_automatic_updates メタデータ エントリを TRUE に設定します。VM の作成時にメタデータを設定する方法は、VM の作成に使用するツールによって異なります。

たとえば、gcloud compute instances create コマンドを使用して VM を作成する場合は、--metadata 引数を指定します。詳細については、VM メタデータについてをご覧ください。

Intel MPI グループ調整

HPC VM イメージには、コンパクト プレースメント ポリシーを使用して c2-standard-60c2d-standard-112 インスタンスで実行される Intel MPI のグループ調整機能が含まれています。

プリインストールされている RPM

HPC VM イメージには、次の RPM パッケージがプリインストールされています。

  • gcc-gfortran
  • gcc-toolset-12
  • Lmod
  • dkms
  • htop
  • hwloc
  • hwloc-devel
  • kernel-devel
  • ltrace
  • libXt
  • nfs-utils
  • numactl
  • numactl-devel
  • papi
  • pciutils
  • pdsh
  • perf
  • redhat-lsb-core
  • redhat-lsb-cxx
  • rsh
  • screen
  • strace
  • wget
  • zsh
  • 「デベロッパー ツール」パッケージ グループ

クイックスタート

始める前に

  1. このクイックスタートで Google Cloud CLI を使用するには、まず Google Cloud CLI をインストールして初期化する必要があります。
  2. Google Cloud コンソールの [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

HPC VM インスタンスを作成する

VM を作成する

コンピューティング最適化マシンタイプ(C2C2DH3 など)を選択することを強くおすすめします。これらの VM は、仮想コアから物理コアへの固定されたマッピングを持ち、NUMA セル アーキテクチャをゲスト OS に公開します。どちらの機能も、密結合な HPC アプリケーションのパフォーマンスのために重要です。

コンソール

  1. Google Cloud コンソールで、HPC VM Cloud Marketplace ページに移動します。HPC VM Cloud Marketplace ページに移動

  2. [運用開始] をクリックします。

  3. HPC VM のデプロイページで、デプロイ名を入力します。この名前が VM 名のルートになります。Compute Engine は、この名前に -vm-を追加してインスタンス名を設定します。

  4. ゾーンマシンタイプを選択します。このクイックスタートでは、すべての設定をそのまま使用することも、変更することもできます。コンピューティング最適化マシンタイプ(C2C2DH3 など)を選択することを強くおすすめします。

  5. ブートディスクの種類ブートディスク サイズネットワーク インターフェースの設定はデフォルトのままにします。

  6. [デプロイ] をクリックします。

VM インスタンスの作成が完了すると、Cloud Deployment Manager が開き、HPC VM とその他のデプロイを管理できます。

gcloud

instances create コマンドを使用して HPC VM を作成します。ネットワーク レイテンシを短縮するには、コンパクト プレースメント ポリシーを使用して HPC VM を作成することを強くおすすめします。1 つのコンパクト プレースメント ポリシーに収まらない VM が必要な場合は、VM を複数のプレースメント ポリシーに分割します。VM に適した最小数のプレースメント ポリシーの使用をおすすめします。

gcloud compute instances create VM_NAME \
        --zone=ZONE \
        --image-family=IMAGE_FAMILY \
        --image-project=cloud-hpc-image-public \
        --maintenance-policy=TERMINATE \
        --machine-type=MACHINE_TYPE

次のように置き換えます。

  • VM_NAME: 作成する HPC VM の名前。
  • ZONE: VM を作成するゾーン
  • IMAGE_FAMILY: VM インスタンスの作成に使用するイメージのイメージ ファミリー。CentOS ベースのイメージの場合は hpc-centos-7、Rocky Linux 8 ベースのイメージの場合は hpc-rocky-linux-8 を使用します。
  • MACHINE_TYPE: 新しい VM のマシンタイプ

しばらくすると VM インスタンスの作成が完了します。VM を確認し、そのステータスを表示するには、次のコマンドを実行します。

gcloud compute instances describe VM_NAME

VM へのアクセス

Console

HPC VM インスタンスを作成すると、インスタンスが自動的に起動します。このインスタンスにアクセスする手順は次のとおりです。

  1. Google Cloud コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. VM インスタンスの名前をクリックします。

  3. [リモート アクセス] セクションで、最初のプルダウン リストをクリックして、インスタンスへのアクセス方法を選択します。

Compute Engine が SSH 認証鍵を伝播してユーザーを作成します。詳細については、Linux VM への接続をご覧ください。

gcloud

HPC VM インスタンスを作成すると、インスタンスが自動的に起動します。SSH を使用してインスタンスにアクセスするには、compute ssh コマンドを使用します。

gcloud compute ssh VM_NAME

Compute Engine が SSH 認証鍵を伝播してユーザーを作成します。詳細については、インスタンスへの接続をご覧ください。

クリーンアップ

このクイックスタートで使用したリソースに対して Google Cloud アカウントに課金されないようにするには、作成した HPC VM インスタンスを削除します。

コンソール

  1. Google Cloud コンソールで、[デプロイメント] ページに移動します。

    [デプロイメント] に移動

  2. HPC VM のデプロイメントの横にあるチェックボックスをオンにします。

  3. [削除] をクリックします。

gcloud

instances delete コマンドを使用します。

gcloud compute instances delete VM_NAME

コンパクト プレースメント ポリシーを使用して HPC VM を作成する

コンパクト プレースメント ポリシーを作成すると、VM 間のレイテンシを短縮できます。コンパクト プレースメント ポリシーにより、同じアベイラビリティ ゾーンの VM が互いに近い位置に配置されます。

コンパクト プレースメント ポリシーを指定する HPC VM を作成するには、次の手順に沿って操作します。

  1. コンパクト プレースメント ポリシーを作成する

  2. 次のいずれかを行います。

ベスト プラクティスに従って HPC VM を構成する

HPC VM のパフォーマンスの予測可能性を向上させるには、次のベスト プラクティスを使用することをおすすめします。

同時マルチスレッディングを無効にする

デフォルトでは、HPC VM イメージは同時マルチスレッディング(SMT)(Intel プロセッサではハイパー スレッディング)を有効にします。SMT を無効にすると、パフォーマンスの予測可能性を向上させ、ジョブの時間を短縮できます。

SMT は、次の方法で無効にできます。

  • 新しい HPC VM の作成中に SMT を無効にするには、HPC VM の作成手順に沿って --threads-per-core=1 フラグを指定します。

  • 既存の HPC VM で SMT を無効にするには、VM に接続して、VM から次のコマンドを実行します。

    sudo google_mpi_tuning --nosmt
    

詳細については、コアあたりのスレッド数を設定するをご覧ください。

仮想ネットワーク インターフェースとして gVNIC を使用する

HPC VM イメージは、仮想ネットワーク インターフェースとして Virtio-net と Google Virtual NIC(gVNIC)の両方をサポートしています。Virtio-net の代わりに gVNIC を使用すると、通信パフォーマンスが向上し、スループットが向上するため、MPI アプリケーションのスケーラビリティを改善できます。gVNIC は、高度なネットワーキングの前提条件であり、高帯域幅を提供するため、スループットを向上させることができます。

新しい VM を作成すると、デフォルトでは Virtio-net が仮想ネットワーク インターフェースとして使用されます。gVNIC を使用するには、HPC VM の作成手順に沿って --network-interface=nic-type=GVNIC フラグを指定します。HPC VM イメージには、Dynamic Kernel Module Support(DKMS)として gVNIC ドライバが含まれています。詳細については、Google Virtual NIC の使用をご覧ください。

Meltdown と Spectre の緩和策を無効にする

HPC VM イメージでは、デフォルトで Meltdown と Spectre の緩和策が有効になっています。これらの緩和策により、ワークロード固有のパフォーマンス低下につながる場合があります。これらの緩和策を無効にし、関連するセキュリティ リスクを発生させるには、次の手順を行います。

  1. HPC VM で次のコマンドを実行します。

    sudo google_mpi_tuning --nomitigation
    
  2. VM を再起動します。

ネットワークのパフォーマンスを向上させる

VM のネットワーク パフォーマンスを向上させるには、次の構成を 1 つ以上設定します。

  • より高い帯域幅を構成する。VM Tier_1 ごとのネットワーク パフォーマンスを構成するには、gcloud compute instances create コマンドを使用して VM を作成し、--network-performance-configs フラグを指定します。詳細については、高帯域幅の構成で VM を作成するをご覧ください。

  • ジャンボ フレームを使用する。ネットワーク パケットの処理オーバーヘッドを最小限に抑えるには、より大きなパケットサイズを使用することをおすすめします。より大きなパケットサイズは、アプリケーションの仕様に応じて検証する必要があります。ジャンボ フレームとパケットサイズの使用方法については、最大伝送単位のガイドをご覧ください。

  • TCP メモリの上限を引き上げる。帯域幅が高いほど、必要な TCP メモリは大きくなります。このため、tcp_*mem の設定値を増やす手順を行います。

  • ネットワークレイテンシ プロファイルを使用する。アプリケーションのレイテンシを評価し、ネットワークの受信パスのレイテンシを低減するビジー ポーリングを有効にします。/etc/sysctl.confnet.core.busy_pollnet.core.busy_read の設定を調整するか、tuned-adm を使用します。

Intel MPI 2021 を使用する

Google Cloud で MPI ジョブを実行する場合は、Intel MPI 2021 ライブラリを使用することをおすすめします。

MPI 実装には、通信のパフォーマンスに影響する可能性のある内部構成パラメータが多数あります。これらのパラメータは、MPI グループ通信に特に関連しています。このことによって Google Cloud 環境で大きく異なる動作をする可能性のあるアルゴリズムと構成パラメータの指定が可能です。

HPC VM イメージにはユーティリティの Google-hpc-compute が含まれています。このユーティリティを使用すると、推奨の MPI ライブラリを簡単にインストールし、TCP トランスポートで Google Cloud 向けにカスタマイズされた libfabric プロバイダを使用できます。

IntelMPI 2021 サポートに google-hpc-compute ユーティリティを使用する

google_install_intelmpi スクリプトは、Google-hpc-compute ユーティリティの MPI 関連ツールです。IntelMPI 2021.11 のインストールと構成に役立ちます。

Google-hpc-compute ユーティリティは HPC VM イメージに含まれています。

Intel MPI 2021 をインストールする

新しい HPC VM の作成中に IntelMPI ライブラリをインストールするには、HPC VM を作成するの手順に沿って、VM インスタンスの作成時に以下を含めます。

--metadata=google_install_intelmpi="--impi_2021"

既存の HPC VM にライブラリをインストールするには、その VM で次のコマンドを実行します。

sudo google_install_intelmpi --impi_2021 --install_dir=PATH_INSTALL_MPI

install_dir のデフォルトの場所は /opt/intel に設定されています。

HPC CentOS 7 イメージの Intel MPI 2018

Intel MPI 2018 のサポートは、Google Cloud の HPC CentOS 7 イメージで利用できます。詳しくは、google_install_mpi のユーティリティ ユーザーガイドをご覧ください。

Intel Parallel Studio XE でビルドされた MPI アプリケーションの実行など、Intel MPI 2018 に関連するその他のユースケースでは、上記のコマンドで、intel_mpiintel_psxe_runtime に置き換えて、Intel Parallel Studio XE(PSXE)Runtime 全体を使用します。PSXE ランタイムには、Intel Math Kernel Library(MKL)などの MPI アプリケーションの動作に重要なライブラリが含まれています。

HPC VM イメージを使用してカスタム イメージを作成する

  1. HPC VM イメージを使用するカスタム VM を作成します

  2. MPI 調整を使用して VM をカスタマイズします

  3. HPC VM イメージのブートディスクをソースディスクとして使用して、カスタム イメージを作成します。これは、Google Cloud コンソールまたは Google Cloud CLI を使用して行います。

コンソール

  1. Google Cloud コンソールで、[イメージ] ページに移動します。

    [イメージ] に移動

  2. [イメージを作成] をクリックします。

  3. イメージの名前を指定します。

  4. [ソースディスク] で、HPC VM のブートディスクの名前を選択します。

  5. イメージの残りのプロパティを選択します。

  6. [作成] をクリックします。

gcloud

カスタム イメージを作成するには、images create コマンドを使用します。

gcloud compute images create IMAGE_NAME \
         --source-disk=VM_NAME \
         --source-disk-zone=VM_ZONE \
         --family=IMAGE_FAMILY \
         --storage-location=LOCATION

次のように置き換えます。

  • IMAGE_NAME: カスタム イメージの名前。
  • VM_NAME: HPC VM の名前。
  • INSTANCE_ZONE: HPC VM が配置されているゾーン。
  • IMAGE_FAMILY: 省略可。この新しいイメージが属するイメージ ファミリー
  • LOCATION: 省略可。カスタム イメージを保存するリージョン。デフォルトのロケーションは、ソースディスクのロケーションに最も近いマルチリージョンです。

料金

HPC VM イメージは、追加料金なしで利用できます。HPC VM イメージは Compute Engine 上で実行されるため、C2 vCPU やメモリなどの Compute Engine リソースに対する課金が発生する場合があります。詳細については、Compute Engine の料金をご覧ください。

制限事項

調整のメリットはアプリケーションによって異なります。特定の調整がパフォーマンスに悪影響を与える場合もあります。アプリケーションのベンチマークを行って、最も効率的でコスト効率の高い構成を見つけることをおすすめします。

次のステップ