|TOP Page|
MPICH2を用いると並列計算のプログラムを開発することができます。いきなり多数のPCを使って開発を行うとデバッグが大変ですが、MPICH2は多数のPCで実行されていることを仮想的に再現することができるのでとても便利です。ここではWindows上での設定方法について説明します。
こちらのMPICH2のページ
http://www.mcs.anl.gov/research/projects/mpich2/
http://www-unix.mcs.anl.gov/mpi/mpich2/index.htm
から
Win32 IA32 | mpich2-1.0.6p1-win32-ia32.msi |
をダウンロードする。あとは適当に[Next]ボタンを押していくとインストールが終了する。
何も指定しなければ、
C:\Program Files\MPICH2\
にMPICH2がインストールされる
;C:\Program Files\MPICH2\bin\
を追加して[OK]ボタンをクリックする。
mpiexec
と入力、引数のUsageが表示されたらPATHは通っている。
Visual Studio2005がすでに起動している場合は再び立ち上げないと設定が反映されないので注意が必要である。
C:Program Files\MPICH2\include
を追加する。
C:Program Files\MPICH2\lib
を追加する。
デバッグの場合 | mpi.lib cxxd.lib |
---|---|
リリースの場合 | mpi.lib cxx.lib |
を追加する。
MPICH2を用いて作られたプログラムをローカル環境で実行させるには次のようにすればよい。
mpiexec.exe -localonly 4 (プログラム名)
ここで4というのは仮想的に実行させるプロセッサ数である。
わざわざビルドしたプログラムをコマンドプロンプトで実行させるのは不便なので開発環境側で同じ処理が行われるように設定を変更しておく
mpiexec.exe
と入力する
-localonly 4 $(TargetPath)
と入力する。ここで4としたのは仮想的に並列計算させるプロセッサー数の例である。この数字を変えることで、何台のマシンで仮想的に並列計算を実行するかを変えることができる。
Windows上でMPIのプログラムを実行する場合、管理者権限が必要なので注意が必要である。
#include "mpi.h" #include <iostream> int main(int argc,char **argv) { int myid, numprocs; MPI::Init(argc,argv); numprocs = MPI::COMM_WORLD.Get_size(); myid = MPI::COMM_WORLD.Get_rank(); std::cout << "Process " << myid << " of " << numprocs << std::endl; MPI::Finalize(); }
Process 2 of 4 Process 3 of 4 Process 1 of 4 Process 0 of 4