MS-MPIのデバッグ実行 (Visual Studio 2008)

検索サイトからいらした方へ

インストール関連の最新記事はリンク先ページです:
最新記事へ移動

はじめに

前回のメモではMS-MPIのとりあえずのインストールを行ったが、あれだけではVisual Studio 2008においてデバッグ実行ができない。色々と問題があるようで、実行中にスタックが破壊されてエラーになる。web上で情報を集めたところ、そのまま使っていると最悪Visual Studio200自体が壊れるとの報告も。 MSの日本語サイトによれば、Visual Studio 2010のpro.以上であればMS-MPIのデバッグ実行が可能とのことだが、Visual Studio 2008では果たしてできないのか? そんな折、英語ページにて下記の記事を見つけた
http://msdn.microsoft.com/en-us/library/ff384244.aspx
これによれば、パッチを当てることでVisual Studio 2008でもMS-MPIのデバッグ実行が行えそうだ。早速試してみる。
どうやら必要な環境は以下のソフトがインストールされている必要があるようだ。
  1. C++コンパイラ:Visual Studio 2008 SP1
  2. 修正パッチ1:KB957912
  3. 修正パッチ2:KB971932
いろいろ試行錯誤した結論から言うと、これだけ揃えば、最低限MS-MPIのデバッグ実行が可能である。 また、次のツールが必要と書かれていますが、便利ツールだったりC#用の機能だったりします。
  1. HPC Pack 2008 R2 Client Utilities Redistributable Package with Service Pack 2 - 日本語 ( こちらのSDKの方が相応しいかもしれません(未検証): "HPC Pack 2008 SDK with Service Pack 2 (SP2)" http://www.microsoft.com/en-us/download/details.aspx?id=2800
  2. Windows HPC Server 2008 SP1 SDK
  3. The MPI Cluster Debugger Add-In for Visual Studio 2008
前回インストールした「HPC Pack 2008 R2 MS-MPI Redistributable Package with Service Pack 2 - 日本語」とversionを合わせたものがいいでしょう。 今回はVS2008で便利な、三つ目のアドインだけをインストールします。

修正パッチ(KB957912,KB971932)のインスコ

まずはVisual Studio 2008は必ずSP1になっていること。まだSP1で無い場合は、 事前にダウンロード&アップデートしておきましょう。 この状態で、指示されている修正パッチKB957912とKB971932をインストールします。バッチは検索すればみつかるので探しましょう。 今回は一応、番号の若い順にKB957912→KB971932の順でインストールしました。 しかしなぜか後者のインストール後に、「推奨設定で再インストールするか?」と聞かれるので、それに従って再インスコ。どうやら今度はOKなようです。 一応無事にインストールできて一安心。時々引っかかるんですよね、こういうパッチは。
さて、これらのパッチは、VS2008のデバッガおよびリモートデバッガの修正パッチのようです。 今回特に重要なのがこれらで、例えば前者をインスコすると、
C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\Remote Debugger\x64\mpishim.exe
が更新されます。 これはVS2008上でMS-MPIをデバッグ実行する際に、プロパティーに指定する必要があり、コアとなるファイルのようです。

MS-MPIのデバッグ実行

一応、ここまででデバッグ実行は可能です。 そのためには、VS2008で開発したプロジェクトのプロパティーを設定する必要があります。 前回と同じく、メニューから「プロジェクト」→「~~のプロパティ」を選択して、プロジェクトのプロパティページというダイアログを開きましょう。
続いてダイアログの左のリストから「構成プロパティ」→「デバッグ」を選びます。 前回はここで、右の設定項目のうち「コマンド」と「コマンド引数」を指定して、取り敢えずの並列実行を行ったわけですが、 ブレークポイントを引っ掛けられるようなちゃんとしたデバッグ実行をするには、「起動するデバッガ」の項目を変更する必要があります。前回はデフォルトで「ローカル Windows デバッガ」になっていたと思いますが、今回は「MPI クラスタデバッガ」を選んでください。
  1. 起動するデバッガ:MPI クラスタ デバッガ
こうすると、すぐ下の設定項目が変わります。ここで、次のように設定します。
  1. MPIRun コマンド:mpiexec.exe  (パスが通っていないならフルパスで)
  2. MPIRun 引数:-n プロセス数
  3. MPIRun 作業ディレクトリ:$(ProjectDir)  (任意で良いですが、設定しないと出力先不明でエラーもある)
  4. アプリケーションコマンド:$(TargetPath)
  5. MPIShim の場所:C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\Remote Debugger\x64\mpishim.exe
残りの項目はデフォルトでOKです。 中でも重要なのは、「MPIShim の場所」で、フルパスで拡張子までしっかり指定しておきましょう。
OKを押してプロパティページを閉じたら、コンパイルしてF5で実行してみてください。 ちゃんと並列実行され、ブレークポイントでもちゃんと一時停止できれば成功です。

Add-inのインストール

続いて、「The MPI Cluster Debugger Add-In for Visual Studio 2008」をインストールする。しかしweb上を探すと、別名の「HPC Debugger Add-ons for MPI and Cluster-SOA」にたどり着く。まあ、説明書きに"The HPC Debugger is an add-in for Visual Studio that helps launch remote debugging sessions for MPI or SOA applications running on a Microsoft HPC cluster."と書いてあるからあってるんだろう。 次のURLよりVS2008用のものをDLする。
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=21705
ダウンロードしたHPCDebugger_VS2008.msiを実行してインストール開始。 途中で、HPC Server 2008(無印)かR2かどちらをサポートするか尋ねられるので、今回はR2を選択した。 うまくインストールされると、VS2008のメニュー内の「ツール」に、「Cluster Debugger Configration」なる項目が追加される。
このアドインを使うと、上述したプロパティーページの設定を自動化してくれたり、子ウィンドウ上でスレッド数などを設定できるようになります。