mpi4py Send()抱怨参数数目错误

2024-09-26 18:00:35 发布

您现在位置:Python中文网/ 问答频道 /正文

系统信息:

操作系统:Mac OS X Lion 10.7.5(是的,非常旧)

机器:Mac Pro,2010年年中

处理器:2 x 2.66 GHz 6核Intel Xeon

存储空间:814 GB,总共1000 GB

内存:24 GB RAM

我试图使用mpi4py包并行化一组模拟,但我的安装似乎有问题。为了测试软件包,我从mpi4py的文档站点复制/粘贴了一个脚本到它自己的文件中,然后按照文档中的说明运行它:

mpiexec -n 4 python trapParallel_1.py 0.0 1.0 10000

(脚本和文档在这里:http://materials.jeremybejarano.com/MPIwithPython/pointToPoint.html#parallelizing-the-trapezoidal-rule;我复制的脚本是trapParallel_1.py)。在

但是,当我运行脚本时,会收到以下错误消息:

^{pr2}$

我没有对代码进行任何编辑——我直接从文档中获取代码。我还检查了mpi4py api引用,它声明Send()接受一个位置参数。假设代码是正确的,我认为问题出在mpi4py或mpi的安装上,但无法找出问题所在。我用pip安装了mpi4py:

pip install mpi4py

为了安装mpi,我首先从这里安装了mpich版本3.2:https://www.mpich.org/downloads/。我下载了一个tarball到我的downloads文件夹,展开它,并从源代码构建了mpich,运行:

cd ~/Downloads/mpich-3.2
./configure --enable-shared --prefix=/usr/local/mpich2
make
make install

当我第一次获得错误时,我的下一步是尝试安装OpenMPI,为此我使用了自制程序:

brew install open-mpi

这并没有解决问题。我试图重建mpich,但没有效果;然后,当这不起作用时,我从mpich的源目录运行make uninstall,并手动删除名称中包含“mpich”的每个文件或目录。脚本仍然生成了相同的错误。在

通常我会怀疑mpi4py的安装是个问题。但是,我知道mpi4py使用Cython,我不确定Cython是如何工作的(即Send()方法可能是mpi本身以外的东西的包装器,在这种情况下,mpi安装可能是问题所在)。在

另外,在卸载mpich之前,我从mpich源目录运行make testing,并查看文件summary.xml,该文件总结了测试结果。根据档案,除了一次测试外,一切都通过了。错误消息如下:

<NAME>gather_big</NAME>
<NP>8</NP>
<WORKDIR>./coll</WORKDIR>
<STATUS>fail</STATUS>
<TESTDIFF>
[mpiexec@ilims-mac-pro] APPLICATION TIMED OUT
[proxy:0:0@ilims-mac-pro] HYD_pmcd_pmip_control_cmd_cb (pm/pmiserv/pmip_cb.c:885): assert (!closed) failed
[proxy:0:0@ilims-mac-pro] HYDT_dmxu_poll_wait_for_event (tools/demux/demux_poll.c:76): callback returned error status
[proxy:0:0@ilims-mac-pro] main (pm/pmiserv/pmip.c:206): demux engine error waiting for event
[mpiexec@ilims-mac-pro] HYDT_bscu_wait_for_completion (tools/bootstrap/utils/bscu_wait.c:76): one of the processes terminated badly; aborting
[mpiexec@ilims-mac-pro] HYDT_bsci_wait_for_completion (tools/bootstrap/src/bsci_wait.c:23): launcher returned error waiting for completion
[mpiexec@ilims-mac-pro] HYD_pmci_wait_for_completion (pm/pmiserv/pmiserv_pmci.c:189): launcher returned error waiting for completion
[mpiexec@ilims-mac-pro] main (ui/mpich/mpiexec.c:344): process manager error waiting for completion

任何指导都将不胜感激。在


Tags: 文件文档脚本formac错误mpi4pyerror
1条回答
网友
1楼 · 发布于 2024-09-26 18:00:35

这个例子是为mpi4py的早期版本编写的(我没有通知作者这一点)

dest参数过去是可选的(默认情况下发送到排名0),但现在是必需的

commit e6765257b2d4e4d37dd5471b2ab07014ab4d9b02 Author: Lisandro Dalcin Date: Sat May 10 14:17:16 2014 +0300

Change signature of all send methods,

  • 'dest' is a required argument.

正确的解决方法是更换

comm.Send(integral)

^{pr2}$

相关问题 更多 >

    热门问题