MS-MPIのインストール (Visual Studio 2008)

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

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

はじめに

Maicrosoft製のMPI実行環境(MS-MPI)をインストールします。MS-MPIはWindows環境でMPIが使えるようにMicrosoft自身が用意したものなので、Visual Studioでの開発には最も楽に導入できると思います。フリーです。現在は MPI version 2のAPIまでに対応しているようです。
このメモ時点での環境。すでにVisual Studioはインストール済みの環境を想定しています。
  1. OS:Windows 7 pro. 64bit
  2. C++コンパイラ:Visual Studio 2008 pro. SP1
  3. MS-MPI:HPC Pack 2008 R2 MS-MPI Redistributable Package with Service Pack 2 - 日本語

MS-MPIの取得

MS-MPIはMicrosoftのダウンロードセンターから取得できます。この記事を書いている現時点でのリンクは
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=ce888449-0e71-44f3-a2fc-947ec57ff90f
です。ただし、Microsoftのリンクアドレスは頻繁に変わるので、最新のものを取得するようにしてみてください。 インストーラーの名称も度々変わっているようで、本当のところよくわからないんですが、今回は
"HPC Pack 2008 R2 MS-MPI Redistributable Package with Service Pack 2 - 日本語"
と記述されているものを選びました。 ここで、64bit環境(x64)か32bit環境(x86)か、あなたのOS環境に合わせた方のバージョンを選択してください。 基本的にOSが64bitの場合、x64をインストールすることになりますが、Visual Studioでのコンパイルに必要なライブラリファイルは、64bit用と32bit用の両方がちゃんとインストールされます。

MS-MPIのインストール

さて、mpi_x64.msiをダウンロードしたら、おもむろにクリックしてそのままインストールしましょう。 インストールディレクトリは変更しない方が、設定で困ったときに対処が楽かと思います。 あとはインストーラーの設定に従って進めばOKです。

MS-MPIのパスをVisual Studioに登録

うまくインストールできたら、あとはVisual Studioにインストールディレクトリを登録すればOKです。 Visual Studio2008の場合は、メニューの「ツール」→「オプション」を選び、出てきたダイアログの中の左のリストから「プロジェクトおよびソリューション」→「VC++ディレクトリ」を選択します。 次に、右側の画面の「プラットフォーム」から「x64」か「Win32」かを、作成するアプリケーションに合わせて選びましょう。開発環境が64bitOSであっても、Win32を選んで32bitアプリケーションソフトを作ることが可能です。右の「ディレクトリを表示するプロジェクト」を選択しながら、下のリストにMS-MPIのディレクトリを追加していきます。 細かい操作方法は省きます。追加するディレクトリは、今回の環境では以下の通りです。
  1. 実行可能ファイル:C:\Program Files\Microsoft HPC Pack 2008 R2\Bin
  2. インクルードファイル:C:\Program Files\Microsoft HPC Pack 2008 R2\Inc
  3. ライブラリファイル(x64の場合):C:\Program Files\Microsoft HPC Pack 2008 R2\Lib\amd64
  4. ライブラリファイル(WIN32の場合):C:\Program Files\Microsoft HPC Pack 2008 R2\Lib\i386
ここのディレクトリはマシン環境に依存するので、適宜えらんでください。 もしかすると、Win32かx64かによってライブラリファイルのディレクトリだけが違います。 Win32用とx64用の両方の設定をしてしまって大丈夫です。

Visual Studioのプロジェクト毎の設定

MPIを使うためには、上記は別途、プロジェクトごとにプロパティーを弄る必要があります。 まず、目的のプロジェクトのプロパティページというダイアログを開きましょう。メニューから「プロジェクト」→「~~のプロパティ」です。
まずは、MS-MPIのコアとなるライブラリをコンパイル時にリンクできるようにします。 ダイアログの左のリストから「構成プロパティ」→「リンカ」→「入力」を選び、右の設定項目の中で以下の設定をします。
  1. 追加の依存ライブラリ:msmpi.lib
続いて、Visual Studio上からF5キーでexeを実行できるようにします。 同じくダイアログの左のリストから「構成プロパティ」→「デバッグ」を選び、右の設定項目の中で以下の設定をします。
  1. コマンド:mpiexec.exe
  2. コマンド引数:-n プロセス数 $(TargetPath)
ただし、"プロセス数"には実行したい並列数(CPU数)を数字で入れましょう。F5実行した時に"mpiexec"が最初に起動し、その上でプロセス数分の実行ファイルが並列実行されます。 また、MS-MPIをインストールした直後では環境変数のパスが通っていない可能性があるため、うまくいかないときは一度OSを再起動しましょう。

コンパイル

ディレクトリの設定ができたら、ソースコードに"mpi.h"をインクルードさせましょう。 これで、MPI関係のAPIもコンパイルが通ります。 無事にコンパイルが通ればおめでとうございます。

実行

実行すると、mpiexec.exeとしてプロンプトが立ち上がり、その上で並列数分の実行ファイルが走ります。printf等の出力もこのプロンプトに出力されます。ただし、getchar()関数などの入力待機関数を使用したプログラムは、通信がうまくいかず停止できなくなる可能性があるので、注意しましょう。ファイヤーウォールに引っかかった場合は、ダイアログが出るので、以後の実行では無視するようにOKをおしてしまいましょう。デバッグ実行でのブレークポイントは無視されます。

余談

Visual Studio 2010の場合には、「MPIクラスタデバッガ」なる並列用のデバッグ実行が使えるらしいです。 といっても使ったことがないのでノーコメント。