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

2024-02-23

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

我知道有mpi4py http://code.google.com/p/mpi4py/。对于当前的工作,我(大部分)使用 Python 和 Windows,我想使用 Microsoft HPC Cluster Pack,可以访问一些运行 Win 2008 Server 的相当“强大”的机器。顺便提一下,除了 Win 经验之外,我确实有一些关于 MPI 和其他东西的 *nix 经验,但这对于这个问题来说是相当没有意义的。

当我遇到Visual Studio 的 Python 工具 http://pytools.codeplex.com/。这是一些非常棒的东西。任何 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 库。好的,没问题,我下载了 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 开发人员。

之后,编译顺利通过,但我无法链接 - 有三个未解决的外部问题:

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/ https://code.google.com/p/mpi4py/

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

以下是变化:

  • mpi 标头和库现在位于不同的位置 (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,没有任何问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 MS HPC Server 2008 R2 的 MPI 堆栈成功编译 mpi4py? 的相关文章

  • 如何使用一个模型中间层的输出作为另一个模型的输入?

    我训练一个模型A并尝试使用中间层的输出name layer x 作为模型的附加输入B 我尝试像 Keras 文档一样使用中间层的输出https keras io getting started faq how can i obtain th
  • Keras model.predict 函数给出输入形状错误

    我已经在 Tensorflow 中实现了通用句子编码器 现在我正在尝试预测句子的类概率 我也将字符串转换为数组 Code if model model type universal classifier basic class probs
  • 带有 mkdocs 的本地 mathjax

    我想在无法访问互联网的计算机上使用 MathJax 和 Mkdocs 因此我不能只调用 Mathjax CDN Config mkdocs yml site name My Docs extra javascript javascripts
  • 使用pathlib获取主目录

    翻看新的pathlib在 Python 3 4 中 我注意到没有任何简单的方法来获取用户的主目录 我能想到的获取用户主目录的唯一方法是使用旧的os path像这样的库 import pathlib from os import path p
  • Django 多对多关系(类别)

    我的目标是向我的 Post 模型添加类别 我希望以后能够按不同类别 有时是多个类别 查询所有帖子 模型 py class Category models Model categories 1 red 2 blue 3 black title
  • 为什么 re.findall 在查找字符串中的三元组项时不具体。 Python

    所以我有四行代码 seq ATGGAAGTTGGATGAAAGTGGAGGTAAAGAGAAGACGTTTGA OR 0 re findall r ATG 9 TAA TAG TGA seq 首先让我解释一下我正在尝试做什么 如果这令人困惑
  • 正在使用 PIL 保存损坏的图像

    我遇到一个问题 操作图像像素导致保存损坏的图像 因此 我使用 PIL 打开图像 然后将其转换为 NumPy 数组 image Image open myimage png np image np asarray image 然后 我转置图像
  • 高级描述熊猫

    有没有像 pandas 那样更高级的功能 通常我会继续这样 r pd DataFrame np random randn 1000 columns A r describe 我会得到一份很好的总结 就像这样 A count 1000 000
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • 为什么 Collections.counter 这么慢?

    我正在尝试解决罗莎琳德的基本问题 即计算给定序列中的核苷酸 并在列表中返回结果 对于那些不熟悉生物信息学的人来说 它只是计算字符串中 4 个不同字符 A C G T 出现的次数 我期望collections Counter是最快的方法 首先
  • 如何按 pandas 中的值对系列进行分组?

    我现在有一只熊猫Series与数据类型Timestamp 我想按日期对其进行分组 并且每组中有许多行具有不同的时间 看似显而易见的方法类似于 grouped s groupby lambda x x date 然而 熊猫的groupby按索
  • 从迭代器外部将 StopIteration 发送到 for 循环

    有几种方法可以打破一些嵌套循环 他们是 1 使用中断 继续 for x in xrange 10 for y in xrange 10 print x y if x y gt 50 break else continue only exec
  • 如何创建用于霍夫曼编码和解码的树?

    对于我的作业 我将对霍夫曼树进行编码和解码 我在创建树时遇到问题 并且陷入困境 不要介意打印语句 它们只是让我测试并查看函数运行时的输出是什么 对于第一个 for 循环 我从主块中用于测试的文本文件中获取了所有值和索引 在第二个 for 循
  • UnicodeDecodeError:部署到 Heroku 时,“utf-8”编解码器无法解码位置 0 中的字节 0xff

    我尝试在heroku上部署我的简单django项目 但我不明白如何解决这个问题 这是git push heroku master remote Traceback most recent call last remote File tmp
  • python中有没有一种方法可以将存储在列表中的正则表达式模式列表应用到单个字符串?

    我有一个正则表达式模式列表 存储在列表类型中 我想将其应用于字符串 有谁知道一个好方法 将列表中的每个正则表达式模式应用于字符串 和 如果匹配 则调用与列表中该模式关联的不同函数 如果可能的话我想用 python 来做这件事 提前致谢 im
  • 两种 ODE 求解器之间的差异

    我想知道 两者之间有什么区别ODEINT and solve ivp用于求解微分方程 它们之间有什么优点和缺点 f1 solve ivp f 0 1 y0 y0 is the initial point f2 odeint f y0 0 1
  • MoviePY 无法在 Windows 上检测 ImageMagick 二进制文件

    我刚买了一台新笔记本电脑 想要设置MoviePY在那新的Windows 64x Python3 7 0 机器 我对所有内容都进行了三次检查 但是当涉及到我的代码的文本部分时 它向我抛出了这个错误 OSError MoviePy Error
  • 如何同时接受int和float类型的输入?

    我正在制作一个货币转换器 如何让 python 同时接受整数和浮点数 我就是这样做的 def aud brl amount From to ER 0 42108 if amount int if From strip aud and to
  • 在Python中停止ThreadPool中的进程

    我一直在尝试为控制某些硬件的库编写一个交互式包装器 用于 ipython 有些调用对 IO 的影响很大 因此并行执行任务是有意义的 使用 ThreadPool 几乎 效果很好 from multiprocessing pool import
  • Biopython 可以执行 Seq.find() 来解释歧义代码吗

    我希望能够在 Seq 对象中搜索考虑歧义代码的子序列 Seq 对象 例如 以下内容应该是正确的 from Bio Seq import Seq from Bio Alphabet IUPAC import IUPACAmbiguousDNA

随机推荐

  • USB 驱动程序 华硕 Nexus 7 Windows 7

    我已经尝试了该网站和其他许多网站上的所有建议 但均无济于事 甚至可以在 Windows 上为 Nexus 7 进行 Android 开发吗 我试过从sdk管理器下载的usb驱动 华硕的那个 我已尝试将 USB 模式更改为 PTP 但仍然收到
  • 当您使用 Javascript 单击或停止悬停时,如何使 CSS 悬停内容保持在原位?

    我有一个想要实现的身体系统功能 当用户将鼠标悬停在身体 部位上时 它会突出显示并显示该特定身体部位的信息 我已经按照我想要的方式编写了 CSS 代码 但是我对 JavaScript 一无所知当单击身体部位或鼠标离开悬停状态时 获取要粘贴的信
  • MIPS 左加载字 (LWL) 和右加载字 (LWR) 指令的作用是什么?

    最近我一直在研究 MIPS 指令集 当时我遇到了两个在其他指令集中没有见过的不寻常指令 我环顾四周 想找到一个关于指令到底做什么的合理解释 但我所能弄清楚的是 它们在某种程度上与未对齐的内存访问有关 例如 维基百科说 https en wi
  • 膨胀类 android.widget.listview 时出错

    我浏览了很多其他人的问题和解释 但没有什么对我有用 我的程序的第一个活动 ListActivity 在膨胀其 xml 文件时遇到问题 LogCat 输出为 08 01 08 36 17 800 E AndroidRuntime 1935 F
  • statsmodels 如何编码以字符串形式输入的 endog 变量?

    我是使用 statsmodels 进行统计分析的新手 我大多数时候都会得到预期的答案 但有些事情我不太明白 statsmodels 在以字符串形式输入时定义逻辑回归的 endog 依赖 变量的方式 可以定义如下所示的示例 Pandas 数据
  • 在 asp.net mvc 项目中添加列到创建的标识表?

    我在我的 MVC 5 项目中使用 Identity 2 0 当我第一次在数据库中运行该项目时 已创建所有用于身份验证和授权的默认表 在 AspNetUsers 表中 我需要创建名为 LoyoutId 的整数类型的附加列 我的问题是如何向创建
  • 如何测试需要jquery的ES6类?

    我有一个需要 jquery 的 ES6 模块 import from jquery export class Weather Constructor for Weather class param latitude param longit
  • 是否可以使用 python 安装 msi?

    是否可以用 python 编写一个安装 msi 的脚本 或者 是否可以通过任何其他脚本来实现 您可以使用过时的操作系统 http docs python org library os html highlight os system os
  • 应用程序获得 Amazon AppStore 批准需要多长时间? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 申请被审查的平均时间是多少亚马逊应用商店 https developer amazon com 小型 无争议 优质的应用程序 在 Android 市场
  • ASP.NET MVC3 和 Facebook 集成

    我正要使用 MVC3 启动一个新的 ASP NET 项目 并且由于一些要求与 facebook 集成有关 因此我需要您就以下问题提供建议 1 是否可以将我的会员用户连接到他们的 Facebook 帐户 以便每当用户在我的网站上分享 添加 评
  • 有没有办法在 Android 中定义 EditText 的最小值和最大值?

    我想定义一个最小值和最大值EditText 例如 如果有人尝试在其中输入月份值 则该值必须在 1 12 之间 我可以通过使用来做到这一点TextWatcher但我想知道是否有其他方法可以在布局文件或其他地方执行此操作 编辑 我不想限制字符数
  • Java中的char和Character有什么区别?

    我需要知道Java中的char和Character有什么区别 因为当我编写java程序时 char可以工作 而Character却不起作用 char 是表示单个 16 位 Unicode 字符的原始类型 而 Character 是一个包装类
  • 如何正确使用UrlEncode和Decode

    所以我有一个文件要上传到 azure blob 存储 C 测试文件夹 A B testfile txt 以及两个扩展方法 可帮助对我的路径进行编码 以确保为其提供有效的 azure 存储 blob 名称 public static stri
  • 旋转 glViewport?

    在 多点触控 环境中 表面上显示的任何应用程序都可以根据用户的方向旋转 缩放 实际的解决方案是在 FBO 上绘制应用程序 并绘制一个带有纹理的旋转 缩放的矩形 我认为这对性能没有好处 而且所有显卡都不提供FBO 这个想法是沿着用户的方向裁剪
  • 如何获取MASM中当前光标位置

    我正在编写一个智商测试生成程序 其中我必须随机生成包括言语非言语问题的问题 为了生成非语言问题 我想显示其中字母和字母以圆形或三角形出现的问题 但我不知道如何定位它们 例如 在非语言问题中 我想通过编写以下代码将字母和数字放置在三角形中 m
  • 虚拟继承中应该写“public virtual”还是“virtual public”?

    基于http en wikipedia org wiki Virtual inheritance http en wikipedia org wiki Virtual inheritance class Animal Two classes
  • 使用 Django Rest 框架中定义的 mixins 类

    Mixins类的实际用途是什么 我实在不明白 所有 mixins 类 如 CreateModelmixin Listmixin 等功能 都已在基于类的视图 如 ListCreateApiView 中可用 For eg class Examp
  • 从 Firestore 文档中嵌套的集合获取数据的最佳方法是什么?

    我正在浏览 Firestore 文档和指南 我下面的代码示例使用 AngularFire2 让我们考虑一个类似于此处提供的示例的 聊天 集合 https firebase google com docs firestore manage d
  • Python只保留列表中的字母数字单词

    我有一个类似于以下的单词列表 mylist hi h ello how re you list 我想提取所有非字母数字字符以给出如下结果 h ello how re list 请注意 我在现实生活中有一个更长的列表 它包含一些非字母数字实例
  • 如何使用 MS HPC Server 2008 R2 的 MPI 堆栈成功编译 mpi4py?

    故事是这样的 我需要一个 Python 的 MPI 包装器 我知道有mpi4py http code google com p mpi4py 对于当前的工作 我 大部分 使用 Python 和 Windows 我想使用 Microsoft