次の方法で共有


MPI アプリケーションを実行するように HPC Pack を使用して Windows RDMA クラスターを設定する

重要

クラシック VM は、2023 年 3 月 1 日に廃止されます。

ASM の IaaS リソースを使用する場合は、2023 年 3 月 1 日までに移行を完了してください。 Azure Resource Manager の多数の機能強化を活用するために、早急に切り替えを行うことをお勧めします。

詳細については、「 2023 年 3 月 1 日までに IaaS リソースを Azure Resource Manager に移行する」を参照してください。

Microsoft HPC PackRDMA 対応の HPC VM サイズを使用して Azure に Windows RDMA クラスターを設定し、並列メッセージ パッシング インターフェイス (MPI) アプリケーションを実行します。 HPC Pack クラスターで RDMA 対応の Windows Server ベースのノードを設定すると、MPI アプリケーションは、リモート ダイレクト メモリ アクセス (RDMA) テクノロジに基づく Azure の低待機時間の高スループット ネットワークを介して効率的に通信します。

HPC Pack クラスターのデプロイ オプション

Microsoft HPC Pack は、Windows または Linux HPC アプリケーションを実行するために、オンプレミスまたは Azure で HPC クラスターを作成するための追加コストなしで提供されるツールです。 HPC Pack には、Windows 用メッセージ パッシング インターフェイス (MS-MPI) の Microsoft 実装用のランタイム環境が含まれています。 サポートされている Windows Server オペレーティング システムを実行している RDMA 対応インスタンスと共に使用する場合、HPC Pack には、Azure RDMA ネットワークにアクセスする Windows MPI アプリケーションを実行するための効率的なオプションが用意されています。

この記事では、2 つのシナリオと、Microsoft HPC Pack 2012 R2 を使用して Windows RDMA クラスターを設定するための詳細なガイダンスへのリンクを紹介します。

  • シナリオ 1. コンピューティング負荷の高いワーカーロールインスタンスを展開する (PaaS)
  • シナリオ 2. コンピューティング集中型 VM (IaaS) にコンピューティング ノードをデプロイする

シナリオ 1: コンピューティング集中型 worker ロール インスタンス (PaaS) をデプロイする

既存の HPC Pack クラスターから、クラウド サービス (PaaS) で実行されている Azure worker ロール インスタンス (Azure ノード) にコンピューティング リソースを追加します。 この機能は、HPC Pack から "Azure へのバースト" とも呼ばれ、worker ロール インスタンスのさまざまなサイズをサポートします。 Azure ノードを追加するときは、RDMA 対応のサイズのいずれかを指定します。

既存の (通常はオンプレミスの) クラスターから RDMA 対応の Azure インスタンスにバーストする考慮事項と手順を次に示します。 同様の手順を使用して、Azure VM にデプロイされている HPC Pack ヘッド ノードに worker ロール インスタンスを追加します。

HPC Pack を使用して Azure にバーストするチュートリアルについては、「HPC Pack を使用 してハイブリッド クラスターを設定する」を参照してください。 RDMA 対応の Azure ノードに特に適用される次の手順の考慮事項に注意してください。

Azureへの突入

ステップス

  1. HPC Pack 2012 R2 ヘッド ノードのデプロイと構成

    MICROSOFT ダウンロード センターから HPC Pack インストール パッケージをダウンロードします。 Azure バースト デプロイの準備の要件と手順については、「 Microsoft HPC Pack を使用した Azure Worker インスタンスへのバースト」を参照してください。

  2. Azure サブスクリプションで管理証明書を構成する

    ヘッド ノードと Azure の間の接続をセキュリティで保護する証明書を構成します。 オプションと手順については、「 HPC Pack 用の Azure 管理証明書を構成するシナリオ」を参照してください。 テスト デプロイの場合、HPC Pack は、Azure サブスクリプションにすばやくアップロードできる既定の Microsoft HPC Azure 管理証明書をインストールします。

  3. 新しいクラウド サービスとストレージ アカウントを作成する

    Azure portal を使用して、デプロイ用のクラウド サービス (クラシック) とストレージ アカウント (クラシック) を作成します。 これらのリソースは、使用する H シリーズ、A8、または A9 サイズが使用可能なリージョンに作成します。 リージョン別の Azure 製品を参照してください。

  4. Azure ノード テンプレートを作成する

    HPC クラスター マネージャーでノード テンプレートの作成ウィザードを使用します。 手順については、「Microsoft HPC Pack を使用 して Azure ノードを デプロイする手順」の「Azure ノード テンプレートを作成する」を参照してください。

    初期テストでは、テンプレートで手動可用性ポリシーを構成することをお勧めします。

  5. クラスターにノードを追加する

    HPC クラスター マネージャーでノードの追加ウィザードを使用します。 詳細については、「 Windows HPC クラスターへの Azure ノードの追加」を参照してください

    ノードのサイズを指定する場合は、RDMA 対応のインスタンス サイズのいずれかを選択します。

    コンピューティング集中型インスタンスを使用した Azure への各バーストでは、HPC Pack は、指定した Azure worker ロール インスタンスに加えて、少なくとも 2 つの RDMA 対応インスタンス (A8 など) をプロキシ ノードとして自動的にデプロイします。 プロキシ ノードは、サブスクリプションに割り当てられたコアを使用し、Azure worker ロール インスタンスと共に料金が発生します。

  6. ノードを起動 (プロビジョニング) し、ジョブを実行するためにオンラインにする

    ノードを選択し、HPC クラスター マネージャーで [開始 ] アクションを使用します。 プロビジョニングが完了したら、ノードを選択し、HPC クラスター マネージャーで オンラインにする アクションを使用します。 ノードはジョブを実行する準備ができています。

  7. クラスターにジョブを送信する

    HPC Pack ジョブ送信ツールを使用してクラスター ジョブを実行します。 「Microsoft HPC Pack: ジョブ管理」を参照してください。

  8. ノードを停止 (プロビジョニング解除) する

    ジョブの実行が完了したら、ノードをオフラインにして、HPC クラスター マネージャーで [停止] アクションを使用します。

シナリオ 2: コンピューティング集中型 VM (IaaS) にコンピューティング ノードをデプロイする

このシナリオでは、AZURE 仮想ネットワーク内の VM に HPC Pack ヘッド ノードとクラスター コンピューティング ノードをデプロイします。 HPC Pack には、自動デプロイ スクリプトや Azure クイック スタート テンプレートなど、 Azure VM にデプロイ オプションがいくつか用意されています。 たとえば、次の考慮事項と手順では、 HPC Pack IaaS デプロイ スクリプト を使用して、Azure での HPC Pack 2012 R2 クラスターのデプロイを自動化する方法について説明します。

Azure VM 内のクラスター

ステップス

  1. クライアント コンピューターで HPC Pack IaaS デプロイ スクリプトを実行してクラスター ヘッド ノードとコンピューティング ノード VM を作成する

    MICROSOFT ダウンロード センターから HPC Pack IaaS デプロイ スクリプト パッケージをダウンロードします。

    クライアント コンピューターを準備し、スクリプト構成ファイルを作成し、スクリプトを実行するには、「 HPC Pack IaaS デプロイ スクリプトを使用した HPC クラスターの作成」を参照してください。

    RDMA 対応のコンピューティング ノードをデプロイする際の考慮事項については、 ハイ パフォーマンス コンピューティング VM のサイズ に関するトピックを参照し、次の点に注意してください。

    • 仮想ネットワーク: 使用する H シリーズ、A8、または A9 サイズが使用可能なリージョンに新しい仮想ネットワークを指定します。 リージョン別の Azure 製品を参照してください。

    • Windows Server オペレーティング システム: RDMA 接続をサポートするには、コンピューティング ノード VM に Windows Server 2012 R2 などの互換性のある Windows Server オペレーティング システムを指定します。

    • クラウド サービス: スクリプトはクラシック デプロイ モデルを使用するため、クラスター VM は Azure クラウド サービス (構成ファイルのServiceName 設定) を使用してデプロイされます。 ヘッド ノードを 1 つのクラウド サービスにデプロイし、コンピューティング ノードを別のクラウド サービスにデプロイすることをお勧めします。

    • ヘッド ノードのサイズ: このシナリオでは、ヘッド ノードの A4 (特大) 以上のサイズを検討してください。

    • HpcVmDrivers 拡張機能: Windows Server オペレーティング システムでサイズ A8 または A9 コンピューティング ノードをデプロイすると、デプロイ スクリプトによって Azure VM エージェントと HpcVmDrivers 拡張機能が自動的にインストールされます。 HpcVmDrivers は、RDMA ネットワークに接続できるように、コンピューティング ノード VM にドライバーをインストールします。 RDMA 対応 H シリーズ VM では、HpcVmDrivers 拡張機能を手動でインストールする必要があります。 「ハイ パフォーマンス コンピューティング VM のサイズ」を参照してください。

    • クラスター ネットワーク構成: デプロイ スクリプトは、トポロジ 5 (エンタープライズ ネットワーク上のすべてのノード) で HPC Pack クラスターを自動的に設定します。 このトポロジは、VM 内のすべての HPC Pack クラスターデプロイに必要です。 後でクラスター ネットワーク トポロジを変更しないでください。

  2. コンピューティング ノードをオンラインにしてジョブを実行する

    ノードを選択し、HPC クラスター マネージャーで オンラインにする アクションを使用します。 ノードはジョブを実行する準備完了です。

  3. クラスターにジョブを送信する

    ヘッド ノードに接続してジョブを送信するか、オンプレミスコンピューターを設定してこれを行います。 詳細については、「 Azure の HPC クラスターにジョブを送信する」を参照してください。

  4. ノードをオフラインにして停止 (割り当て解除) する

    ジョブの実行が完了したら、HPC クラスター マネージャーでノードをオフラインにします。 次に、Azure 管理ツールを使用してシャットダウンします。

クラスターで MPI アプリケーションを実行する

例: HPC Pack クラスターで mpipingpong を実行する

RDMA 対応インスタンスの HPC Pack デプロイを確認するには、クラスターで HPC Pack mpipingpong コマンドを実行します。 mpipingpong は、RDMA 対応アプリケーション ネットワークの待機時間とスループットの測定値と統計情報を計算するために、ペアになっているノード間でデータのパケットを繰り返し送信します。 この例では、クラスター mpiexec コマンドを使用して MPI ジョブ (この場合は mpipingpong) を実行する一般的なパターンを示します。

例としては、この記事の [シナリオ 1](#scenario-1.-deploy-compute-intensive-worker-role-instances-(PaaS)) での "Azure へのバースト" 構成において Azure ノードを追加したことを想定しています。 Azure VM のクラスターに HPC Pack をデプロイした場合は、コマンド構文を変更して別のノード グループを指定し、ネットワーク トラフィックを RDMA ネットワークに転送するための追加の環境変数を設定する必要があります。

クラスターで mpipingpong を実行するには:

  1. ヘッド ノードまたは適切に構成されたクライアント コンピューターで、コマンド プロンプトを開きます。

  2. 4 つのノードの Azure バースト デプロイ内のノードのペア間の待機時間を推定するには、次のコマンドを入力して、小さなパケット サイズと多数の反復で mpipingpong を実行するジョブを送信します。

    job submit /nodegroup:azurenodes /numnodes:4 mpiexec -c 1 -affinity mpipingpong -p 1:100000 -op -s nul
    

    このコマンドは、送信されたジョブの ID を返します。

    Azure VM にデプロイされた HPC Pack クラスターをデプロイした場合は、1 つのクラウド サービスにデプロイされたコンピューティング ノード VM を含むノード グループを指定し、 mpiexec コマンドを次のように変更します。

    job submit /nodegroup:vmcomputenodes /numnodes:4 mpiexec -c 1 -affinity -env MSMPI_DISABLE_SOCK 1 -env MSMPI_PRECONNECT all -env MPICH_NETMASK 172.16.0.0/255.255.0.0 mpipingpong -p 1:100000 -op -s nul
    
  3. ジョブが完了したら、出力 (この場合はジョブのタスク 1 の出力) を表示するには、次のように入力します。

    task view <JobID>.1
    

    ここで、 <JobID> は送信されたジョブの ID です。

    出力には、次のような待機時間の結果が含まれます。

    Ping pong latency

  4. Azure バースト ノードのペア間のスループットを見積もるために、次のコマンドを入力して、大きなパケット サイズといくつかの反復で mpipingpong を実行するジョブを送信します。

    job submit /nodegroup:azurenodes /numnodes:4 mpiexec -c 1 -affinity mpipingpong -p 4000000:1000 -op -s nul
    

    このコマンドは、送信されたジョブの ID を返します。

    Azure VM にデプロイされた HPC Pack クラスターで、手順 2 で説明したようにコマンドを変更します。

  5. ジョブが完了したら、出力 (この場合はジョブのタスク 1 の出力) を表示するには、次のように入力します。

    task view <JobID>.1
    

    出力には、次のようなスループット結果が含まれます。

    ピンポン試験のスループット

MPI アプリケーションに関する考慮事項

Azure で HPC Pack を使用して MPI アプリケーションを実行する場合の考慮事項を次に示します。 一部は、Azure ノードのデプロイにのみ適用されます ("Azure へのバースト" 構成で追加された worker ロール インスタンス)。

  • クラウド サービスの worker ロール インスタンスは、Azure によって通知されずに定期的に再プロビジョニングされます (たとえば、システムメンテナンスやインスタンスが失敗した場合など)。 MPI ジョブの実行中にインスタンスが再プロビジョニングされると、インスタンスはデータを失い、最初にデプロイされたときの状態に戻ります。これにより、MPI ジョブが失敗する可能性があります。 1 つの MPI ジョブに使用するノードが多いほど、ジョブの実行時間が長いほど、ジョブの実行中にいずれかのインスタンスが再プロビジョニングされる可能性が高くなります。 また、デプロイ内の単一ノードをファイル サーバーとして指定する場合も、この点を考慮してください。

  • Azure で MPI ジョブを実行するには、RDMA 対応インスタンスを使用する必要はありません。 HPC Pack でサポートされている任意のインスタンス サイズを使用できます。 ただし、RDMA 対応インスタンスは、ノードを接続するネットワークの待機時間と帯域幅に影響を受けやすい比較的大規模な MPI ジョブを実行する場合に推奨されます。 他のサイズを使用して待機時間と帯域幅に依存する MPI ジョブを実行する場合は、少数のノードでのみ 1 つのタスクが実行される小さなジョブを実行することをお勧めします。

  • Azure インスタンスにデプロイされたアプリケーションには、アプリケーションに関連付けられているライセンス条項が適用されます。 クラウドで実行するためのライセンスまたはその他の制限事項については、商用アプリケーションのベンダーに確認してください。 すべてのベンダーが従量課金制ライセンスを提供しているとは限りません。

  • オンプレミスのノード、共有、ライセンス サーバーにアクセスするには、Azure インスタンスをさらにセットアップする必要があります。 たとえば、Azure ノードがオンプレミスのライセンス サーバーにアクセスできるようにするには、サイト間 Azure 仮想ネットワークを構成できます。

  • Azure インスタンスで MPI アプリケーションを実行するには、 hpcfwutil コマンドを実行して、各 MPI アプリケーションをインスタンスの Windows ファイアウォールに登録します。 これにより、ファイアウォールによって動的に割り当てられたポートで MPI 通信を行うことができます。

    Azure へのバーストデプロイでは、クラスターに追加されたすべての新しい Azure ノードで自動的に実行されるようにファイアウォール例外コマンドを構成することもできます。 hpcfwutil コマンドを実行し、アプリケーションが動作することを確認したら、Azure ノードのスタートアップ スクリプトにコマンドを追加します。 詳細については、「 Azure ノードにスタートアップ スクリプトを使用する」を参照してください。

  • HPC Pack では、CCP_MPI_NETMASK クラスター環境変数を使用して、MPI 通信に使用できるアドレスの範囲を指定します。 HPC Pack 2012 R2 以降、CCP_MPI_NETMASK クラスター環境変数は、ドメイン参加済みクラスター コンピューティング ノード (オンプレミスまたは Azure VM) 間の MPI 通信にのみ影響します。 変数は、バーストで Azure 構成に追加されたノードによって無視されます。

  • MPI ジョブは、異なるクラウド サービスにデプロイされている Azure インスタンス間で実行することはできません (たとえば、異なるノード テンプレートを使用した Azure デプロイへのバーストや、複数のクラウド サービスにデプロイされた Azure VM コンピューティング ノードなど)。 異なるノード テンプレートで開始される複数の Azure ノード デプロイがある場合、MPI ジョブは 1 セットの Azure ノードでのみ実行する必要があります。

  • クラスターに Azure ノードを追加してオンラインにすると、HPC Job Scheduler Service は直ちにノードでジョブを開始しようとします。 ワークロードの一部のみが Azure で実行できる場合は、ジョブ テンプレートを更新または作成して、Azure で実行できるジョブの種類を定義してください。 たとえば、ジョブ テンプレートを使用して送信されたジョブが Azure ノードでのみ実行されるようにするには、ジョブ テンプレートに Node Groups プロパティを追加し、必要な値として AzureNodes を選択します。 Azure ノードのカスタム グループを作成するには、Add-HpcGroup HPC PowerShell コマンドレットを使用します。

次のステップ