Azure で MS-MPI を始める

ライアンブログ3
発売から約XNUMX年半が経ちましたが、 再利用可能な Azure クラウド サービス HPC Pack をインストールせずに、単純な Windows MS-MPI クラスターをプロビジョニングします。 それ以来、Azure には多くの変更が加えられており、クラウドで Windows MPI アプリケーションを実行する現在の状況がどのようなものであるかを確認するために、このトピックを再検討する価値があると考えました。
まず、クラウド サービスといわゆる「IaaS v1 仮想マシン」は、Azure portal で「クラシック」ステータスに降格されました。 Microsoft は現在、すべての新しい展開で Azure Resource Manager (ARM) を使用することを推奨しています。 Azure Resource Manager を使用すると、クライアントは、アプリケーションまたはクラスターの一部として作成する必要がある、VM、ロード バランサー、ネットワーク インターフェイスなどのすべてのクラウド リソースを定義する、JSON で記述された宣言テンプレートを送信できます。 リソース間で依存関係を定義でき、リソース マネージャーは可能な限りリソースのデプロイメントを並列化するのに十分な機能を備えています。 これにより、新しいクラスターまたはアプリケーションのデプロイが古いモデルよりもはるかに高速になります。 Azure Resource Manager は、基本的に AWS の CloudFormation と同等です。 ただし、テンプレートでループを指定できるなど、追加の利点もあります。 ただし、ARM テンプレートでは、条件付きリソースのデプロイを処理するのが CloudFormation よりも面倒です。 どちらのサービスも、json 内からプログラミング ロジックをサポートしようとすることに問題があります。 ただし、全体として、ARM デプロイメントはクラシック デプロイメントよりも管理がはるかに簡単です。
  Azure クイックスタート テンプレート Github のプロジェクトは、ARM テンプレートを見つけるための優れたリソースです。 アプリケーションのデプロイは文字通り、「Azure にデプロイ」ボタンをクリックして、いくつかのテンプレート パラメーター値を入力するだけで簡単です。 HPC の前面には便利な機能があります。 HPC パックの例 スケジューラのプロビジョニングとセットアップに使用できるものを利用できます。
ただし、元のブログ投稿でも触れたように、MPI を使い始めていて、単純に新しい MPI クラスターを起動してアプリケーションをテストし、すべてを再度シャットダウンしたい場合には、HPC Pack の使用は最良の選択ではない可能性があります。 。 HPC Pack は本格的な HPC スケジューラの機能を提供しますが、この追加機能には、送信ノード上のリソース オーバーヘッド (Active Directory のセットアップ、SQL Server のインストールなど) が犠牲になります。 MPI アプリケーションを実行するために XNUMX 回限りのクラスターが必要なだけの場合、これは過剰になる可能性があります。
クラウドで Windows MPI アプリケーションを実行するための軽量の可能性があるもう XNUMX つのオプションは、Azure Batch サービスです。 最近、 マイクロソフトがサポートを発表 VM のプールでマルチインスタンス MPI タスクを実行するため。 これは、MPI ジョブの実行の自動化に興味がある人にとっては便利なオプションのように見えますが、MPI ジョブを実行する前にサービスに慣れるために開発者リソースをある程度投資する必要があります。
1) HPC Pack のオーバーヘッドなしでベアボーン Windows MPI クラスターを起動し、2) コマンド ラインまたは任意のオペレーティング システムからのバッチ スクリプトから MPI ジョブを実行できるようにする Azure Resource Manager テンプレートには、まだ余地があると感じています。システム。
上記の XNUMX 番目の点に関して、最初の投稿以降のもう XNUMX つの興味深い展開は、Microsoft が次のことを決定したことです。 SSHを正式にサポート リモートアクセス用。 その発表以来、 プレリリースバージョンのコード GitHub で利用できるようになりました。
そこで、これらの要素を考慮して、これらの両方の目標を達成するためのシンプルな ARM テンプレートをまとめることにしました。 MS-MPI を使い始めた人にとって、これは Azure の Windows クラスターでコードを実行するためのより簡単なオプションであると考えられます。
基本的な使用例を次に示します。

  1. から「Azure にデプロイ」ボタンをクリックします。 Githubプロジェクト。 テンプレートのパラメータを入力します。 ここでは、2 ノードの Standard_D2 クラスターがプロビジョニングされています。

    ライアン
  2. 導入の完了時にクラスターに割り当てられたパブリック IP アドレスをメモします。
  3. このテンプレートにより、すべてのノードで SSH と SFTP が有効になります。 アプリケーションをクラスター内の最初の VM (N0) にアップロードします。  ここでは、hello world アプリケーションを使用しています。 このブログ記事.
    $ sftp ryan@40.76.38.78 ryan@40.76.38.78のパスワード: 40.76.38.78に接続しました。 sftp> put MPIHelloworld.exe MPIHelloworld.exe を C:/Users/ryan/MPIHelloworld.exe にアップロードしています MPIHelloworld.exe 100% 8192 8.0KB/s 00:00 sftp> bye
    
  4.  SSH で N0 に接続し、MPI バイナリを共有 SMB ディレクトリ (C:\shared) にコピーして実行します。 パスワードを入力してください
    -pwd スイッチの引数 (以下で編集)。 -savecreds コマンド ライン引数は、資格情報を安全に保存します。
    計算ノードに保存されるため、今後の mpiexec 呼び出しでパスワードを指定する必要がなくなります。 見る
    こちら のガイドをご参照ください。

     

    $ ssh ryan@40.76.38.78 ryan@40.76.38.78 のパスワード: Microsoft Windows [バージョン 6.3.9600] (c) 2013 Microsoft Corporation. 無断転載を禁じます。 ryan@N0 C:\Users\ryan>copy MPIHelloworld.exe C:\shared 1 個のファイルがコピーされました。 ryan@N0 C:\Users\ryan>cd C:\shared ryan@N0 C:\shared>mpiexec -hosts 2 n0 1 n1 1 -pwd ****** -savecreds MPIHelloworld.exe ランク 1 受信文字列 Hello Worldランク0から
    

以上です! より GUI を使用する場合、RDP は MPI クラスター内のすべてのインスタンスにも開かれています。 に向かってください。 Githubプロジェクトページ のガイドをご参照ください。

類似の投稿