问题标签 [mpi4py]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
438 浏览

python - python中并行运行的一致断言?

在我看来,在并行运行的 python 代码中,至少一个处理器失败的断言应该中止所有处理器,以便:

1)错误消息清晰可见(带有堆栈跟踪)

2)剩余的处理器不会永远等待。

然而,这不是标准断言所做的。

如果处理器 0 上的断言失败,则在使用 mpirun 运行的 python 脚本中已经提出了这个问题, 但我对答案不满意。建议使用 comm.Abort() 函数,但这仅回答上面的第 2) 点。

所以我想知道:并行代码(例如使用 mpi4py)是否有标准的“断言”函数,或者我应该为此编写自己的断言?

谢谢!

编辑——这是我的尝试(在课堂上但可能在外面),肯定可以改进:

0 投票
0 回答
685 浏览

python-2.7 - macports mpi4py 安装工作但无法导入它“没有名为 mpi4py 的模块”

我已经通过 macports 将 py27-mpi4py 下载到我的 OS X Yosemite 10.10 系统。这一步似乎奏效了。终端输出:

现在,当我尝试在 python 中导入 mpi4py 时,它找不到它。这是否意味着安装顺利但我忘记设置python路径?浏览了网络上的许多帖子,但我找不到帮助我完成这一步的指南。

我是 mpi 和 macports 的新手。如果您有什么我可以尝试的建议,我们将不胜感激。最良好的祝愿,J。

0 投票
2 回答
891 浏览

arrays - Mpi4Py - 发送 numpy 子数组(非连续内存)而不复制

我正在重写通信瓶颈。我需要发送 3d 数组的子numpy数组。但是将子数组直接传递给MPI.Send()失败:

创建新数据类型 byMPI.Datatype.Create_vector无济于事 - 它因同样的原因而失败。

简化示例:

在实际代码中,我使用异步发送/接收。目前我通过将子数组复制到具有连续内存布局的临时数组来解决它。

问题是缓冲区往往非常大,它会吃掉所有的内存和可用的交换空间。

我认为创建跨步数据类型是一种可行的方法,但是由于我无法访问具有连续内存的原始数组,因此我无法创建跨步缓冲区。

也不能选择使用小写版本的发送/接收,因为正如我所说,我需要速度并且数据很大。

目前我唯一的想法是创建 C 模块扩展,在其中我进行所有指针计算并返回 numpy 数组并访问包含我的子数组的连续内存段。

0 投票
1 回答
319 浏览

python - MPI4PY - 为什么我的 while 循环只在某些等级上退出?

我已经并行化了一些代码来制作电影的帧。所有排名都退出 while 循环,除了创建最后一帧的那一个,尽管它达到了结束条件。我还发现,如果我在 while 循环之后添加 CW.Barrier(),它只会生成最后一帧。如果那不存在,那么它会停在倒数第二帧。

0 投票
2 回答
514 浏览

python - mpi4py - 获取进程自己的通信器

我们目前正在开发一个 mpi4py 项目,我们希望将进程分组到不同的组中。然后我们将这些组分配给他们自己的传播者。这些步骤由进程 0 完成。

现在的问题是其他进程如何找出它们属于哪个通信器?

请注意,这些组的大小不同,例如,第一组包含 5 个进程,第二组包含 3 个进程。那么,进程 4(在第一组中)如何从第一组中获取通信器。

0 投票
1 回答
152 浏览

python - 通过 send 函数广播并通过 recv 接收来自不同来源的消息

我尝试编写主/从程序,其中根 comp 将数据发送到包括自身在内的 3 个 comps,并在从该 comps 接收计算数据之后。它发送但无法接收数据。

我尝试在非根组合中使用 isend。我不知道为什么 root 没有收到消息。

0 投票
1 回答
1030 浏览

numpy - 奇数大小的numpy数组发送/接收

我想将所有处理器的 numpy 数组内容收集到一个。如果所有数组的大小相同,则它可以工作。但是,对于依赖于过程的大小的数组,我看不到一种自然的方式来执行相同的任务。请考虑以下代码:

我的问题在于“收到”分配。我怎么知道要分配的大小?我必须先发送/接收每个数组大小吗?

根据下面的建议,我会选择

0 投票
1 回答
2222 浏览

python - mpi4py:库未加载:/usr/local/lib/libmpi.1.dylib

我正在尝试将 python 与 mpi4py 一起使用。但是,当我from mpi4py import MPI在 python 环境中运行时,出现以下错误:

在指定的路径 ( /usr/local/lib/) 中,我有一个我认为是所需文件的版本,称为libmpi.12.dylib. 我查看了mpi4py 的源代码,据我所知该文件是有效的,但由于某种原因,mpi4py(特别是 MPI.so)仍在尝试使用 .1。版本。

无论我是使用mpirun,运行mpiexec还是只是在终端 python 会话中输入导入命令,都会出现显示的错误消息(最后一个是我如何生成此处复制的错误消息)。

我将不胜感激任何帮助。我已经尝试重新安装和/或更新所有相关的包和代码,但它并没有解决问题。

--- 更新 --- 出于绝望,我尝试重命名libmpi.12.dyliblibmpi.1.dylib,并且至少现在有效。如果有人有的话,我仍然对非黑客解决方案感兴趣。

0 投票
1 回答
246 浏览

python - MPI,fortran master 和 Python worker 之间的互通?

我想在 fortran 程序(作为主机)和 python 程序(作为从机)之间与 MPI 通信。我编写了以下测试,但无法从从站获取父通信器。

对此的任何帮助将不胜感激!


Fortran(主端)


Python(从站)

0 投票
1 回答
94 浏览

python - 使“for”循环更快

我正在尝试在大型 3D 数据集上运行此代码。目标是计算每个网格点与所有其他网格点的时间相关性(轴 0)。我想像下面的代码那样做:两个循环,每个维度一个。这对于小型数据集来说是可以的,但现在我转向更大的分辨率,并且需要几天的时间才能运行。

任何人都可以建议加快/优化此代码,请记住我只能访问标准 python 库(所以没有 mpi4py!)?

correlation函数用于pandas计算两个时间序列之间的相关系数:

谢谢