gpt4 book ai didi

python - 如何使用 MS HPC Server 2008 R2 的 MPI 堆栈成功编译 mpi4py?

转载 作者:太空狗 更新时间:2023-10-30 01:10:05 26 4
gpt4 key购买 nike

故事是这样的:我需要一个用于 Python 的 MPI 包装器。

我知道有 mpi4py .对于我(主要)使用 Python 和 Windows 的当前工作,我想使用 Microsoft HPC Cluster Pack,它可以访问一些运行 Win 2008 Server 的相当“强大”的机器。顺便提一下,除了 Win 经验之外,我确实有一些 *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 调用绑定(bind)到 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

MS MPI 安装程序注册一个环境变量 CCP_HOME 指向包的确切安装位置。 “CCP”这个名字一定是从它被称为 Microsoft Compute Cluster Pack 的时候就遗留下来的)。必须将其传递给最初的 mpi4py 开发人员。

在此之后,编译顺利通过,但我无法链接 - 存在三个 Unresolved external 问题:

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 源文件中注释掉这些,但我认为这不是正确的路径。

提前致谢!

最佳答案

我正在与@Hrvoje 和源代码的当前维护者交谈 https://code.google.com/p/mpi4py/

感谢大家的帮助。
我使用的是 Visual Studio 2012、Python 2.7.3(64 位)和 MPI4PY 1.3

更改如下:

  • mpi header 和库现在位于不同的位置 (MS HPC 2008 R2),因此我的 mpi.cfg 的 msmpi 部分现在看起来像这样:

    [msmpi]
    mpi_dir = $ProgramFiles\Microsoft HPC Pack 2008 R2
    include_dirs = %(mpi_dir)s\inc
    libraries = msmpi
    #library_dirs = %(mpi_dir)s\lib\i386
    library_dirs = %(mpi_dir)s\lib\amd64
  • 因为 Python 构建环境寻找 Visual Studio 2008,所以我不得不手动添加它寻找的变量。它实际上指向一个 VS 2012 目录,但所有构建工具都是兼容的,所以它可以工作。这是我添加的内容。

    VS90COMNTOOLS = C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\

除此之外,没有任何变化,setup.py 生成了 .exe 和 .msi,没有任何问题。

关于python - 如何使用 MS HPC Server 2008 R2 的 MPI 堆栈成功编译 mpi4py?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7151752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com