あらきけいすけの雑記帳

2010-11-28 (Sun)

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


*1現在 http://sourceforge.net/projects/mingw/ で配布している mingw-get-inst-20101030.exe を用いてデフォルト値でインストールしたもの。蛇足:このインストーラで MinGW gcc をインストールするだけで gfortran が使えるようになっていたのでビックリした。g77 は使えなかった。

*2:g95-MinGW-41.exe を用いてデフォルト値でインストールしたもの。

*3:mpich2-1.3.1-win-ia32.msi を用いてデフォルト値でインストールしたもの。

トラックバック - http://d.hatena.ne.jp/arakik10/20101128/p1
リンク元