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

はじめに

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

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

利点

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

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

特長

最適化

Google では、HPC 対応の VM に対して以下の最適化をおすすめします。HPC VM イメージには、これらの最適化がすでに含まれているため、自分で構成する必要はありません。

Intel MPI グループ調整

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

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

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

  • Lmoddkmshtophwlochwloc-develkernel-develltracelibXtnfs-utilsnumactlnumactl-develpapipciutilspdshperfredhat-lsb-coreredhat-lsb-cxxrshscreenstracewgetzsh、「デベロッパー ツール」パッケージ グループ

クイックスタート

HPC 対応 VM は、gcloud コマンドライン ツールまたは Google Cloud Console で作成できます。Console の場合、Cloud Marketplace からイメージを入手できます。

始める前に

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

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

VM を作成する

Console

  1. Google Cloud Console で、HPC VM Cloud Marketplace ページに移動します。HPC VM Cloud Marketplace ページに移動

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

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

  4. ゾーンマシンタイプを選択します。このクイックスタートでは、すべての設定をそのまま使用することも、変更することもできます。C2 マシンタイプを選択することを強くおすすめします。理由については、コンピューティング最適化インスタンスの使用をご覧ください。

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

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

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

gcloud

instances create コマンドを使用して HPC VM を作成します。ネットワーク レイテンシを短縮するには、コンパクト プレースメント ポリシーを使用して HPC VM を作成することをおすすめします。

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

以下を置き換えます。

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

gcloud compute instances describe VM_NAME

VM へのアクセス

Console

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

  1. Google Cloud Console で、[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 インスタンスを削除します。

Console

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

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

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

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

gcloud

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

gcloud compute instances delete VM_NAME

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

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

  1. 適切な数の VM にコンパクト プレースメント ポリシーを作成するには、resource-policies create group-placement コマンドを使用します。

    gcloud compute resource-policies create group-placement \
            PLACEMENT_POLICY_NAME --collocation=COLLOCATED \
            --vm-count=NUMBER_OF_VMS
    

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

    • PLACEMENT_POLICY_NAME: プレースメント ポリシーの名前。
    • NUMBER_OF_VMS: コンパクト プレースメント ポリシーで作成される VM の数。
  2. instances create コマンドを使用して HPC VM を作成し、プレースメント ポリシーを指定します。

    gcloud compute instances create VM_1_NAME \
            VM_2_NAME \
            --zone=ZONE \
            --resource-policies=PLACEMENT_POLICY_NAME \
            --maintenance-policy=TERMINATE --no-restart-on-failure
    

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

    • VM_1_NAMEVM_2_NAME: VM の名前。同じプレースメント ポリシーで VM を作成するには、NUMBER_OF_VMS の名前を正確に指定する必要があります。
    • ZONE: VM のゾーン。
    • PLACEMENT_POLICY_NAME: プレースメント ポリシーの名前。

場合によっては、VM の作成プロセスを制御できないことがあります。その場合は、プレースメント ポリシーを作成して既存のインスタンスに適用できます。

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

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

ハイパー スレッディングを無効にする

HPC VM イメージを使用すると、ハイパー スレッディングがデフォルトで有効になります。ハイパー スレッディングを無効にすると、パフォーマンスが予測しやすくなり、ジョブの実行時間を短縮できます。詳細については、ハイパー スレッディングを無効にする際のベスト プラクティスをご覧ください。

新しい HPC VM の作成中にハイパー スレッディングを無効にするには、HPC VM を作成する手順に沿って、--metadata=google_mpi_tuning="--nosmt" フラグを指定します。

既存の HPC VM でハイパー スレッディングを無効にするには、次のコマンドを実行します。

sudo google_mpi_tuning --nosmt

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

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

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

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

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

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

Intel MPI 2018 と MPI グループ調整を使用する

Google Cloud で MPI ジョブを実行する場合は、Intel MPI 2018 ライブラリを使用することをおすすめします。HPC VM イメージを使用すると、このライブラリをインストールし、Google Cloud で検証された MPI グループ調整を簡単に適用できます。

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

新しい HPC VM の作成中にライブラリをインストールするには、HPC VM を作成する手順に沿って、--metadata=google_install_mpi="--intel_mpi" フラグを指定します。

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

sudo google_install_mpi --intel_mpi

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

デフォルトでは、Intel MPI ライブラリは /opt/intel ディレクトリにインストールされます。ライブラリを別の場所にインストールするには、--prefix フラグを使用します。

MPI グループ調整を使用する

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

アプリケーションの特性に基づいて構成パラメータを調整することを強くおすすめします。また、調整構成ファイルを生成して使用する場合は、VM プレースメント ポリシーを有効にすることを強くおすすめします。

HPC VM イメージには、コンパクト プレースメント ポリシーを使用して c2-standard-60 インスタンスに実行する Intel MPI グループ調整の出力構成が含まれています。この調整ファイルは以下のディレクトリにあります。

/usr/share/google-hpc-compute/mpitune-configs/intelmpi-2018

HPC イメージには、次のシナリオをサポートする調整構成が含まれています。

  • VM の数: 1~22
  • VM あたりの MPI ランク(プロセス)数: 1、2、6、10、30

これらの調整構成を使用する手順は次のとおりです。

  1. Intel MPI ライブラリ 2018 をインストールします。

  2. 次の bash スクリプトを実行して環境を設定します。

    source MPI_INSTALL_DIR/mpivars.sh
    

    MPI_INSTALL_DIR は、Intel MPI ライブラリをインストールしたディレクトリのパスに置き換えます。

  3. 次のコマンドを使用して、HPC VM イメージに含まれている調整機能をインストールします。ディレクトリに対する root アクセス権が必要な場合は、--sudo オプションを使用します。

    google_install_mpitune
    

mpitune を使用してカスタム調整構成を生成する

mpitune を使用すると、MPI グループ通信のアルゴリズムと構成パラメータを手動で指定し、構成ファイルを生成できます。

たとえば、VM あたり 22 台の VM と 30 個のプロセスを調整するには、mpivars.sh スクリプトをソースとして適切な環境を設定して、次のコマンドを実行します。ディレクトリへの書き込みアクセス権が必要です。ない場合は、root としてコマンドを実行する必要があります。

mpitune -hf hostfile -fl 'shm:tcp' -pr 30:30 -hr 22:22

これにより、アプリケーションの実行に使用できる構成ファイルが Intel MPI ディレクトリに生成されます。アプリケーションの調整構成を使用するには、次のコマンドに -tune オプションを追加します。

mpirun -tune -hostfile hostfile -genv I_MPI_FABRICS 'shm:tcp' -np 660 -ppn 30 ./app

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

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

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

  3. HPC VM イメージのブートディスクをソースディスクとして使用して、カスタム イメージを作成します。この操作を行うには、Google Cloud Console または gcloud コマンドライン ツールを使用します。

Console

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

    [イメージ] に移動

  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 の料金をご覧ください。

制限事項

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

次のステップ