つまり、Python 用の MPI ラッパーが必要です。
mpi4pyがあることは知っています。現在の作業では、Python と Windows を (ほとんど) 使用しています。Microsoft HPC Cluster Pack を使用して、Win 2008 Server を実行するいくつかのかなり「強力な」マシンにアクセスしたいと考えています。Win の経験に加えて、MPI などの *nix の経験が少しありますが、それはこの問題のかなり重要な点です。
Python Tools for Visual Studioに出くわしたとき、mpi4py への関心が新たになりました。それはいくつかの真剣に素晴らしいものです。Visual Studio と Python のファンなら誰でも試してみてください。良い仕事、そして素晴らしいデバッガー。
PTVS のドキュメント ページには、mpi4py のインストールは簡単であると記載されています...そして ActiveState Python の場合、それは本当のようです。ただし、ActiveState の Python を使用せず、代わりに python.org の「通常の」Python ディストリビューションを使用する場合は、少し運が悪いようです。
私の開発マシンは、Win7 64 ビットと Python 2.6 を搭載したラップトップで、64 ビットと 32 ビットの両方のフレーバーがあります。MS HPC Pack 2008 R2 MS MPI および SDK をインストールしました。私は Visual Studio 2008 と 2010 を持っており、すべてに忠実にパッチが適用されています。
バイナリ インストーラーはなく、Unix MPI がリンク先の MPI バージョンに対して非常にうるさいことを知っていたので、独自の mpi4py を構築したいと考えました。mpi4py は基本的に、Python 呼び出しを MPI ライブラリにバインドする MPI .dll (実際には .pyd) に依存しています。
mpi4py の easy_installing とそのライブラリのビルドが失敗しました - MPI ライブラリを指すことができません。OK、問題ありません。mpi4py tarball をダウンロードして展開し、正しいフォルダーを指すようにmpi.cfgファイルを変更しました。
# Microsoft MPI example
# ---------------------
[msmpi]
define_macros = MS_MPI=1
mpi_dir = $CCP_HOME
include_dirs = %(mpi_dir)s\Inc
libraries = msmpi
library_dirs = %(mpi_dir)s\lib\i386
MS MPI インストーラーは、パックの正確なインストール場所を指す環境変数 CCP_HOME を登録します。「CCP」という名前は、Microsoft Compute Cluster Pack と呼ばれていた時代から残っているに違いありません)。これを元の mpi4py 開発者に渡す必要があります。
この後、コンパイルは問題なくパスしますが、リンクできません。未解決の外部が 3 つあります。
MPI.obj : error LNK2019: unresolved external symbol _MPI_Type_create_f90_integer@8 referenced in ...
MPI.obj : error LNK2019: unresolved external symbol _MPI_Type_create_f90_real@12 ...
MPI.obj : error LNK2019: unresolved external symbol _MPI_Type_create_f90_complex@12 ...
HPC 2008 R2 の MS MPI msmpi.lib はこれらを実装していないようで、MPI.pyd をビルドできません。
mpi4py C ソース ファイルでこれらをコメント アウトすることもできますが、これは正しいパスではないと思います。
前もって感謝します!