MPICH2メモ
MPICH2をX201Tで走らせようとしてコケているので状況をメモ。Win7Pro(32bit)+MinGW*1+g95*2+MPICH2*3でコンパイル。コンパイルのコマンドは次のとおり
g95 testMPI.f -I"C:\Program FIles\MPICH2\include" -L"C:\Program FIles\MPICH2\lib" -lfmpich2g実行すると次の表示が出る:
C:\directoryname>mpiexec -n 2 a.exe
Please specify an authentication passphrase for smpd:
Error while connecting to host, 対象のコンピューターによって拒否されたため、接続
できませんでした。 (10061)
Connect on sock (host=hostname, port=8676) failed, exhaused all end points
Unable to connect to 'hostname:8676',
sock error: Error = -1
- mpiexec.exe への Path は通っている。
- Windows ファイアウォールの[詳細設定]の[受信の規則]に[MPICH2]を新たに作成し、TCPの8676をすべてのアドレスに開放してみた
- それでもダメなので、Windows ファイアウォールは全部、無効にしたけど、同じメッセージが出てきた。
- wmpiconfig.exe を起動すると error の欄に
hostname: MPICH2 not installed or unable to query the host
と表示される。何で自分で自分が見えてない? - a.exe をそのまま WinXP マシンにコピーして実行したら実行できたので、executable 自体はきちんとできている。
- [2010.12.1](いずれ丁寧に書く)Windows Vista 以降の UAC (User Account Control) の設定の問題だったようだ。UACのレベルを最低にしたら動作した。[コントロールパネル]⇒[ユーザー アカウント]⇒[ユーザー アカウント制御設定の変更]で設定を[通知しない]のレベルに下げる。
- smpd.exe を起動しようとすると次のエラー表示を出した
C:\directoryname>"\Program Files\MPICH2\bin\smpd.exe" -start -phrase behappy
OpenSCManager failed:
アクセスが拒否されました。 (error 5) - [2010.12.1](かなり謎)UACの設定を元のレベルに戻して再起動してみたら、今度は mpiexec が走った。wmpiconfig.exe でも hosts の欄が見えていた。WinXPでも経験したが、最初の1回を突破すると動作するようになるみたい。よく分からんな。
- 参考: yet-unnamed weblog - FC2 BLOG パスワード認証
ソース test02.c
#include "mpi.h" int main (void) { }
を
C:\mypath\mingw64\bin\gcc.exe -m64 test02.c -I"C:\Program Files\MPICH2\include" -L"C:\Program Files\MPICH2\lib" -lmpiでコンパイルしようとすると
mpi.h:1168:52: error: expected declaration specifiers or '...' before 'MPI_Aint'
といエラーがゾロゾロ出るのだが、windows.hを呼び出して
#include <windows.h> #include "mpi.h" int main (void) { }
にするとエラーが出なくなった。参考:mpich2 MinGW-w64 gcc MPI_Aint - Google 検索 [mpich-discuss] Trouble compiling MPICH2 (mpich2-1.2.1-win-x86-64) with mingw-w64