问题标签 [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 投票
2 回答
8688 浏览

python - mpiexec 和 python mpi4py 给出等级 0 和大小 1

我在虚拟机上运行 python Hello World mpi4py 代码时遇到问题。

hello.py 代码是:

我尝试使用 mpiexec 和 mpirun 运行它,但它运行得不好。输出:

并来自 mpiexec:

他们似乎没有得到通讯的等级和大小。什么会导致这种情况?如何解决?

该系统是虚拟机上的 Ubuntu 14.04。

任何想法为什么?谢谢!

0 投票
0 回答
154 浏览

parallel-processing - 在集群上使用 MPI spawn 失败

我最近尝试在使用 CentOS 的集群上执行并行模型拟合和交叉验证。因为我需要进行10折交叉验证,所以我最初通过命令启动10个进程:

mpirun -np 10 --bynode -hostfile ./my_hostfile python my_program &

在每个过程(进行一次计算)中,首先执行模型拟合。由于模型拟合可以并行执行,我通过 MPI spawn 函数生成了一些额外的过程。额外进程的数量无法预先确定,所以我真的需要生成它们!

这样的程序在我自己的工作站(单节点)上完美运行。但是,当我尝试在集群(跨节点)上运行它时,我收到以下错误消息:

[fs3:06947] [[50533,0],0] ORTE_ERROR_LOG:在第 758 行的文件 base/plm_base_launch_support.c 中找不到

并且所有进程都终止。我无法弄清楚为什么会这样。我正在使用 python 库 mpi4py,它绑定到打开的 mpi。

更新:

主机文件只包含我保留的节点列表。其中没有“max_slots”或“slots”规范。而且我确信我已经为这个计算保留了足够的节点。

0 投票
0 回答
112 浏览

python - Starcluster,如何在单独的节点上执行特定任务

使用处理高统计数据并执行长时间复杂计算的python应用程序。

当用户请求时,创建了一个异步线程并开始计算并以相等的间隔将结果保存在数据库中,而在主线程中,我们一直在寻找数据库中的更改并使用结果更新用户。

现在我被要求使用与 AWS 配合使用的 MIT 的 Starcluster。我已经创建了主集群和从集群,现在我的问题是如何使用 MPI4py 在节点(从)机器上执行计算以及在主服务器上执行所有其他操作?

我没有写任何代码,但我找到了一个例子,它展示了它在负载平衡的意义上是如何工作的,

有什么方法可以在节点机器上调用特定的 api 来在节点机器上执行任务?

0 投票
1 回答
644 浏览

python - 具有 mpi4py 的子数组数据类型

我正在制作一个简单的程序,我正在尝试使用 mpi4py 从 8x8 矩阵发送 4 x 4 矩阵子矩阵。我的方法是使用子数组数据类型,但我不断收到分段错误。

我的代码如下:

运行 4 个进程时,我的结果如下:

我对 Create_subarray 有错误的想法还是还有什么问题?

0 投票
1 回答
1271 浏览

python - 多进程在python中读取一个文件

我有一个非常非常大的txt.file(大约20G),我可以使用多进程读取整个文件而不是从第一行读取到最后一行吗?

例如,我有 4 个进程,然后我先计算文件的行数(假设它有 2000 行)。进程1读取第1~500行,进程2读取501~1000,我想知道是否可能(如果一个进程正在读取,另一个进程可以同时读取吗?)。也许这个问题是关于如何拆分 txt 文件。

如果没问题。怎么做?该文件的一个进程的代码如下:

我不知道如何将所有行更改为数字。有什么建议吗?提前致谢。

0 投票
0 回答
154 浏览

mapreduce - MapReduce 代码 mpi 超时

我正在使用 MapReduce 代码,但遇到了一个问题:地图(需要 1 小时)完成后代码没有响应。我深入研究了代码,发现这个函数没有响应:

此行没有响应:

我想知道是否有超时时间Iprobe()以及mpi4py如何设置超时时间?是否有替代品在Iprobe()这里具有相同的作用?

这是之前通过 .send() 发送消息的函数

整个代码可以在这里看到:

https://drive.google.com/file/d/0B36fJi35SPIedWdjbW5NdzlCeTg/view?usp=sharing

0 投票
1 回答
758 浏览

python - 如何测量 Python MPI 或多处理程序的内存占用率?

我在 Cray XE6 机器上执行此操作,我无法在计算节点上登录并且不可能进行交互式会话,因此我需要以某种方式使用 top 命令:在后台运行 top 并让它定期拍摄快照并将其发送到日志文件...有人可以举例说明如何执行此操作吗?

谢谢

0 投票
0 回答
115 浏览

mpi - MPI 随机广播

我正在研究 MPI 进程之间的随机广播。基本上,我想要一种随机分散的通信。我喜欢广播而不是发送和接收风格的通信以提高速度,但我得到了一个轻微的“错误”,或者取决于您的定义的功能。

当我运行以下内容时,

我得到了不想要的输出,

请注意,等级 3 进程从 4 收到 [7 7 7]。这不应该发生,因为等级 4 应该广播 [4 4 4]。你也可以在其他地方看到这一点。

我正在使用 OpenMPI (OpenRTE) 1.6.5 和 Mpi4Py 1.3.1。在 Ubuntu 15.04 上。

有什么办法可以解决吗?理想情况下,在此示例中,如果从进程接收到向量,则数组应填充进程的等级。

0 投票
2 回答
202 浏览

python - mpi4py 程序的意外输出

我是使用 Python 的 MPI 新手,我在这里遇到了一些问题。这是我的代码:

我想打印:From process PROCESS_NUMBER, sum = 3

进程 0 打印正确,但进程 1 打印无。

我不明白为什么。有人可以帮我吗?

0 投票
1 回答
1995 浏览

python - 使用 MPI 的 Allreduce 对 Python 对象求和

我正在使用我在 Python 中使用字典和计数器构建的稀疏张量数组操作。我想让并行使用这个数组操作成为可能。底线是我最终在每个节点上都有计数器,我想使用 MPI.Allreduce (或另一个不错的解决方案)将它们加在一起。例如,使用 Counters 可以做到这一点

这样

我想做同样的操作,但要使用所有相关节点,

但是,MPI 似乎无法识别字典/计数器上的此操作,从而引发错误expecting a buffer or a list/tuple。我最好的选择是“用户定义的操作”,还是有办法让 Allreduce 添加计数器?谢谢,

编辑(2015 年 7 月 14 日):我试图为字典创建用户操作,但存在一些差异。我写了以下

当我告诉 MPI 关于这个功能时,我这样做了:

在代码中我用它作为

然而,它扔了unsupported operand '+' for type dict。所以我写了

现在它抛出dict1[key] += dict2[key] TypeError: 'NoneType' object has no attribute '__getitem__' 了很明显它想知道那些东西是字典吗?我怎么知道他们确实有类型字典?