次の方法で共有


Azure で MPI アプリケーションを実行するためのガイドライン

このトピックでは、WINDOWS Azure ノードで MPI アプリケーションを実行できるようにするためのガイドラインと手順について説明します。 この情報は、オンプレミスの Windows HPC クラスター (Windows Azure の "バースト" シナリオ) に追加される Windows Azure ノード、または Windows Azure HPC Scheduler (Windows Azure のみ) を使用する Windows Azure サービスの一部としてデプロイされるノードに適用されます。

Windows Azure ノード上のデータとファイル共有に関する一般的なガイドラインについては、「Azure ノードでの HPC アプリケーションの実行に関するガイドライン」を参照してください。

このトピックでは、次の操作を行います。

Windows Azure に最適な MPI ジョブの種類は何ですか?

特に待機時間や帯域幅に依存しない MPI ジョブは、Windows Azure 環境で適切にスケーリングされる可能性が高くなります。 待機時間と帯域幅に依存する MPI ジョブは、少数のノードで 1 つのタスクが実行される小さなジョブと同様に、適切に実行できます。 たとえば、エンジニアリング シミュレーションの場合、モデル サイズを大きくする前に、多数の小さなジョブを実行して、パラメトリック空間を調べて定義することができます。 これは、オンプレミスのコンピューティング ノードへのアクセスが制限され、クラスター時間を最も適切なモデルに使用する必要がある場合に特に役立ちます。

これらの推奨事項を作成する理由 MPI ジョブは、多くの場合、特殊な低待機時間の高帯域幅ネットワーク ハードウェアを備えたクラスターで実行されます。 Windows Azure ノードは現在、この種類のネットワークに接続されていません。 さらに、Windows Azure ノードは、Windows Azure システムによって定期的に再プロビジョニングされます。 ノードが MPI ジョブの実行中に再プロビジョニングされると、MPI ジョブは失敗します。 1 つの MPI ジョブに使用するノードが多いほど、ジョブの実行時間が長いほど、ジョブの実行中にいずれかのノードが再プロビジョニングされる可能性が高くなります。

Windows Azure ノード上のファイアウォールに MPI ジョブを登録する

管理者は、Windows Azure のコンピューティング ノード間の MPI 通信を許可するように Windows ファイアウォールを構成する必要があります。 そのためには、各 MPI アプリケーションをファイアウォールに登録できます (アプリケーション ベースの例外を作成します)。 これにより、ファイアウォールによって動的に割り当てられたポートで MPI 通信を行うことができます。 clusrun を使用し、hpcfwutil コマンドを することで、ノードでファイアウォール例外を構成できます。

注:

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

次の手順では、すべてのノードに myApp.exe の例外を追加する方法について説明します。 次の手順を実行するには、Windows HPC クラスターまたは Windows Azure HPC Scheduler デプロイの管理者である必要があります。

myApp.exe のファイアウォール例外を構成するには

  1. (管理者資格情報を使用して) 次のいずれかの方法でヘッド ノードに接続します。

    • ヘッド ノード (オンプレミス) に直接ログインします。

    • HPC Pack クライアント ユーティリティがインストールされているクライアント コンピューター (オンプレミス) からコマンドを実行します。 CCP_SCHEDULER環境変数がコンピューターに設定されていない場合は、clusrun コマンドに /scheduler:<yourHeadNodeName> パラメーターを含めます。

    • Windows Azure 管理ポータル を使用して、サービス デプロイのヘッド ノード (Windows Azure HPC Scheduler) へのリモート デスクトップ接続を作成します。

  2. コマンド プロンプトを開きます。

  3. 次のコマンドを入力します。

    clusrun hpcfwutil register myApp.exe e:\approot\myApp.exe  
    

ノードのサブセットで clusrun コマンドを実行するには、/nodegroup:<node_group_name>/nodes:<node_list> (コンマ区切り)、/template:<node_template_name>など、clusrun パラメーターを指定できます。 詳細については、clusrun参照してください。

バースト用の MPI ネットマスクを Windows Azure ノードに設定する

Windows Azure ノードで MPI ジョブを実行する場合は、Windows Azure ノードの IP アドレスが、MPI ネットワーク マスクに指定されている承認済み IP アドレスの範囲内にあることを確認します。 MPI ネットワーク マスクは、MPI ランクが通信を受け付けることができる IP アドレスの範囲を決定します。 Windows Azure ノード上のジョブが接続エラーに関するエラーで失敗する場合は、ノード間の通信を有効にするためにネットマスクのリセットが必要になる場合があります。

既定のクラスター全体の範囲は、CCP_MPI_NETMASK クラスター環境変数によって定義されます。 このクラスター変数で指定された値は、すべてのクラスター ノードでシステム環境変数として自動的に設定されます。 管理者は、要件に応じて、クラスター全体のレベルでネットワーク マスクを再構成したり、ノードまたはノード グループ レベルでクラスター設定をオーバーライドしたりできます。 ジョブ所有者は、ジョブ レベルでクラスターまたはノードの設定をオーバーライドできます (詳細については、「環境変数階層参照してください)。

クラスター レベルの

クラスター全体でネットマスクを無効 (すべての IP アドレスを許可) できます。 たとえば、ヘッド ノードで次のコマンドを実行します。

setx CCP_MPI_NETMASK=”0.0.0.0/0.0.0.0”

範囲を広げて、Windows Azure ノードとオンプレミス ノードを確実に含めることができます。 たとえば、Windows Azure ノードの IP アドレスが 10.x.x.x で、オンプレミス ノードの既定のアドレス範囲が 10.x.x.x または 10.1.x.x の場合、ネットマスクを次のように設定できます。

cluscfg setenvs ccp_mpi_netmask=10.0.0.0/255.0.0.0

重要

Windows Azure ノード アクセスとオンプレミス リソースの間の接続を構成する場合は、オンプレミスノードと Windows Azure ノード用に個別のネットマスクを定義する必要があります。 Windows Azure ノードのネットマスクでオンプレミスの IP アドレスが許可されていないことを確認します。

ノード レベルの

Windows Azure ノード上でネットマスクを無効にするか、設定できます (すべての IP アドレスを許可します)。 たとえば、ネットマスクを無効にするには、次のコマンドを入力します。

clusrun /nodegroup:AzureNodes setx CCP_MPI_NETMASK=”0.0.0.0/0.0.0.0”

ジョブ レベルの

ジョブ所有者は、MPI 環境変数を mpiexec コマンド引数に> 範囲MPICH_NETMASK <設定することで、ジョブ レベルで目的の範囲を指定 (または無効にする) ことができます。 たとえば、Windows Azure ノードに 10.28.x.x で始まる IP アドレスがある場合は、次のコマンドを入力します。

job submit /nodegroup:azurenodes /numcores:32 /stdout: %CCP_PACKAGE_ROOT%\myApp\out.txt /workdir: %CCP_PACKAGE_ROOT%\myApp mpiexec –env MPICH_NETMASK 10.28.0.0/255.255.0.0 myApp.exe

Windows Azure ノードでの MPI アプリケーションのトレース

mpiexec–trace 引数を使用して Windows Azure ノードで MPI アプリケーションをトレースしようとすると、既定のトレース ファイル サイズ (10 GB) が大きすぎます。 ジョブの送信が失敗し、ディスク領域が不足していることを示すメッセージが表示される可能性があります。 –tracefilemax 引数を含めることで、トレース ファイルのサイズを小さくできます。 たとえば、トレース ファイル サイズを 1 GB に構成するには、–tracefilemax 1000設定します。

MPI エラー メッセージでの Windows Azure ノードの識別

MPI アプリケーションのエラー メッセージでは、通常、ホスト名を使用してノードを識別します。 Windows Azure では、ホスト名はノードのフレンドリ名ではないため、識別が困難な場合があります。 HPC クラスター マネージャーを使用して、HPC クラスター内のノード名と Windows Azure インスタンス名を表示できます。

Windows Azure へのバーストに関する追加の考慮事項

  • MPI ジョブは、オンプレミスノードと Windows Azure ノード間、または異なる Windows Azure ノード デプロイ (異なるノード テンプレートを使用してデプロイされた Windows Azure ノード) にまたがることはできません。 個別の Windows Azure ノード デプロイは分離されており、MPI プロセスは相互に通信できません。 MPI ジョブを特定のノード グループに送信することで、MPI ジョブがこれらの境界にまたがらないようにすることができます。 ノード グループは、管理者がジョブ テンプレート レベルで適用することも、ジョブ レベルでジョブ所有者が指定することもできます。

関連情報

Azure ノードでの HPC アプリケーションの実行に関する ガイドライン
hpcpack を する