故事就这样了:我需要一个用于Python的MPI包装器。
我知道这里有mpi4py。对于当前的工作,我(主要)使用Python和Windows,我想使用Microsoft HPC群集包,可以访问一些运行Win 2008 Server的“强大”计算机。值得一提的是,除了Win经验之外,我在MPI和其他方面确实有* nix的经验,但这是解决此问题的有意思的地方。
当我遇到适用于Visual Studio的Python工具时,我对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和建立该库失败-无法指向MPI库。好的,没问题,我下载了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
Run Code Online (Sandbox Code Playgroud)
MS MPI安装程序将注册一个环境变量CCP_HOME,该环境变量指向Pack的确切安装位置。名称“ CCP”必须从被称为Microsoft Compute Cluster Pack的日期开始保留下来。已将其传递给原始的mpi4py开发人员。
在此之后,编译可以顺利通过,但我无法链接-有三个未解决的外部变量:
MPI.obj : error LNK2019: unresolved external symbol _MPI_Type_create_f90_integer@8 referenced in ...
MPI.obj : error LNK2019: unresolved external …Run Code Online (Sandbox Code Playgroud)