ボックス内の Azure MS-MPI

紺碧
の記事で触れたものの XNUMX つは、 以前のブログ投稿 をセットアップする際の相対的な難易度です。 マイクロソフト MPI HPC Pack のインストール要件により、Windows Azure 上のクラスターが必要になります。 公式ドキュメント 推奨します。 私たちが発見したように、HPC Pack を使用せずに Microsoft MPI クラスターを手動でインストールして構成することは可能ですが、このプロセスについては十分に文書化されていません。
本日、Azure PaaS 用の InfiniBand Microsoft MPI クラスターをインストールして構成する自己完結型のクラウド サービス パッケージをリリースできることを嬉しく思います。 この「MPI-in-a-box」機能により、HPC Pack の完全な展開のインストールと維持に投資することなく、XNUMX 回限りの目的でクラスターを起動することがはるかに簡単になると考えています。
A9 インスタンスの接続されたクラスターをスピンアップするには、事前に構築されたパッケージをダウンロードしてデプロイするだけです。 ここ 付属の .cscfg ファイルでいくつかの設定を調整します。 パッケージには、ノードに Microsoft MPI をインストールして構成する起動スクリプトが含まれています。 起動スクリプトは、ノード間通信用のファイアウォール ポートの開放と、mpiexec 呼び出しで使用できる基本的なマシンファイルの構築に関する詳細を処理します。 さらに、スクリプトはクラスターにリモートでアクセスするために、すべてのロール インスタンスに Cygwin OpenSSH サーバーをインストールします。
.cscfg ファイルでいくつかの値を構成する必要もあります。


  
    
    
      
      
      
      
      
    
    
  

まず、Instances 要素で起動する A9 インスタンスの数を必ず指定してください。 次に、マシンの起動後にログインできるように、少なくとも adminuser.publickey 設定と jobuser.publickey 設定の値を指定する必要があります。 さまざまな ConfigurationSettings を以下に示します。

管理者ユーザー 管理者グループに作成されるユーザーの名前
管理者.公開鍵 管理者ユーザーの SSH 公開キー。 ~/.ssh/authorized_keys リストに追加されました。
ジョブユーザー Users グループ内に作成される、権限の低いユーザーの名前。 これは、mpiexec を実行する必要があるユーザーです。
ジョブユーザー.公開鍵 jobuser の SSH 公開キー。 ~/.ssh/authorized_keys リストに追加されました。
blob.storageurl 起動スクリプトは、起動時にこの場所からプログラムをダウンロードします。 MS-MPI および Cygwin の配布可能ファイルはここにあります。 Rescale は必要なファイルをホストするため、これを変更する必要はありません。

.cscfg ファイルに値を入力したら、Azure 管理 Web ページを通じてサービスをデプロイするか、管理 API を使用してスクリプトを作成できます。
インスタンスが起動して実行されたら、SSH を使用して各ロール インスタンスに接続できます。 クラウド サービスは、インスタンス内部エンドポイントを使用して、クライアントがロード バランサーを介して個々のロール インスタンスに接続できるように設定されています。 最初のロール インスタンスのポート 22 で実行されている OpenSSH サーバーは、外部ポート 10106 にマッピングされます。10107 番目のロール インスタンスの OpenSSH サーバーは 10108 に、XNUMX 番目は XNUMX にマッピングされます。
したがって、foobar.cloudapp.net というクラウド サービスをデプロイした場合、クラスター内の最初から最初のロール インスタンスにログインするには、次のようなコマンドを使用する必要があります。

ssh -i [ジョブユーザーの秘密鍵ファイル] -p 10106 jobuser@foobar.cloudapp.net

SCP を使用してファイルをクラスターに転送できます (ただし、カスタム SSH ポートを指定するには、-p の代わりに -P を使用する必要があることに注意してください)。
起動スクリプトは、jobuser 設定で指定されたユーザーとしてすべてのマシン上で SMPD プロセスを起動します。 これは、mpiexec を実行するには、必ずこのユーザーとしてログインする必要があることを意味します。
マシンファイルは jobuser のホーム ディレクトリに書き込まれ、mpiexec 呼び出しで使用できます。 たとえば、jobuser として最初のロール インスタンスに SSH 接続した後、次のコマンドはクラスター内の各マシンのホスト名をダンプします。

$ mpiexec -machinefile マシンファイル ホスト名 RD00155DC0E6D8 RD00155DC0BEB3

最後に、起動スクリプトは、クラスター内のすべてのノード間で基本的な Windows SMB ファイル共有も構成します。 jobuser は、~/work/shared パスからこのフォルダーにアクセスできます。 これは、クラスター内のノード間でファイルを分散する簡単な方法です。 ただし、次のようなものを使用すると、パフォーマンスが向上する可能性があることに注意してください。 アズコピー 代わりに、各ノードが BLOB ストレージから入力ファイルをダウンロードするようにします。
  ソースコード Cloud Service は Github で入手できます。 自由にフォークして貢献してください。
MPIClusterService.zip

類似の投稿