问题标签 [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.
python - python MPI sendrecv() 传递一个python对象
我正在尝试使用 mpi4py 的 sendrecv() 来传递字典 obj。
如果我在最后一步打印idxidct
,我会得到一堆“None”,所以字典idxdict
不会在内核之间传递。如果我使用字典作为 buffer: buffer={}
,那么就会有 typeerror: TypeError: expected a writeable buffer object
。
我做错了什么?非常感谢您的帮助。
python - mpi4py:动态数据处理
我有一个包含股票代码的向量,例如tickers = ['AAPL','XOM','GOOG']
,在我的“传统”python 程序中,我将遍历该tickers
向量,选择一个代码字符串,例如AAPL
,导入包含AAPL
股票收益的 csv 文件,将收益用作通用函数的输入,最后生成一个csv文件作为输出。我有超过 4000 个代码,并且应用于每个代码的功能需要时间来处理。我可以访问带有mpi4py
软件包的计算机集群,每个作业可以访问大约 100 个处理器。我很好地理解(并且能够在python中实现)这个mpi
例子:
所以在这个例子中,我们有一个大小为 8 的数据向量,并为每个处理器(总共 3 个)分配相等数量的数据元素。我如何使用上面类似的示例并为每个处理器分配一个股票代码并应用需要为每个代码运行的功能?我如何告诉 python 一旦处理器空闲,返回tickers
向量并处理ticker
尚未处理的 a?
python - sqlite的MPI锁定(python)
我正在将 mpi4py 用于我想要并行化的项目。下面是我的程序的非常基本的伪代码:
我想通过简单地让每个进程将自己的结果写入数据库来消除对 MPI.Gather 的调用。所以我希望我的伪代码看起来像这样:
这将大大提高我的程序的性能。但是,我不完全确定如何做到这一点。我试图通过谷歌找到方法,但我唯一能找到的就是 MPI-IO。是否可以使用 MPI-IO 写入数据库?具体使用 python、sqlite 和 mpi4py。如果没有,是否有任何替代方法可以同时写入 sqlite 数据库?
编辑:
正如@CL 在评论中指出的那样,sqlite3 不支持并发写入数据库。所以让我换个方式问我的问题:有没有办法锁定对数据库的写入,以便其他进程等到锁定被删除后再写入?我知道 sqlite3 有自己的锁定模式,但这些模式似乎会导致插入失败而不是阻塞。我知道我在 Python 线程中看到过类似的东西,但我无法在网上找到任何关于使用 MPI 执行此操作的信息。
python - 使多处理池适应 mpi4py
我正在使用多处理池在 Python 中运行并行模拟,它在具有多核的计算机中运行良好。现在我想在使用多个节点的集群上执行程序。我想多处理不能应用于分布式内存。但 mpi4py 似乎是一个不错的选择。那么这些代码最简单的 mpi4py 等价物是什么:
python - Ubuntu 上的 mpi4py:找不到 pyconfig.h
我正在尝试在 Ubuntu 服务器上安装 MPI 和 mpi4py,以测试我在我的 mac 上运行的一些 python 代码。我从源代码安装了 OpenMPI,然后下载了 mpi4py 的 tar 并尝试运行python setup.py build
. 但是它失败了:
我也尝试安装 MPICH sudo apt-get install libcr-dev mpich2 mpich2-doc
并运行setup
,但它仍然给我同样的错误。
我已经搜索了互联网,但仍然无法弄清楚。
我的 PATH 上是否缺少我的目录?
编辑:经过更多搜索后,似乎 pyconfig.h 应该在/usr/include/python2.7/
. 在我的 Mac 上就是这种情况,但是,当我ls
的 Ubuntu 服务器上的目录不包含 pyconfig.h 时。这是问题吗?
python - 使用没有竞争条件的python在mpi中写入文件
我正在使用 mpi4py 对分布式应用程序进行建模,并且我希望所有进程都写入一个公共文件。是否有任何功能可以在没有竞争条件的情况下实现这一点?
parallel-processing - 涉及使用 mpi4py 进行随机采样的循环的并行化
我是并行化和 MPI 的新手。我正在学习和试验 mpi4py。目前我正在尝试优化一种方法的性能,该方法在一个间隔内随机采样所需的点(满足条件)。
为了给你一个详细的想法,我创建了一个与我的程序类似的示例程序。该程序的目的是输出 9.9999 和 10.0 之间的 20 个数字。这是通过从 [0.0,1.0] 中随机采样并将其乘以 10 来完成的(通过迭代变化无穷小)。
以下是功能并提供注释。
如您所见,所有操作都发生在 fit() 方法的 while 循环中。我想做的是利用并行化和 mpi4py 使这种方法更快。例如,我想启动 n 个进程,当 while 循环到来时,这些进程被并行触发,无论哪一个首先找到所需的值,我想将该值添加到累加器数组并中止所有其他进程。我想在下一次迭代中再次继续这个例程,依此类推,直到方法完成。这样的事情可能吗?如果不是这种方式,我可以在上述函数中使用并行化的其他方式吗?
谢谢
python - 如何从串行 python 脚本使用 mpi4py 应用程序
我试图制作一个基于 mpi4py 的库,但我想在串行 python 代码中使用它。
但在serial_source.py内部存在一些名为parallel_bar的函数
这个问题的动机是找到正确的方法来使用 mpi4py 来优化 python 中的程序,这些程序不一定设计为完全并行运行。
fedora - 在 FedoraScientific 中使用 MPI4PY
最近,我下载并安装了 Fedora Scientific 20,因为我对包含的软件列表印象深刻。我对该软件的兴趣是由于包含了 MPI 框架。我能够使用 mpicc 和 mpiexec 编译和执行一个简单的 C 程序。但是,我需要一些帮助才能使用 MPI4PY 使用 Python 代码调用 OpenMPI。
在终端提示符下,如果我尝试:
$ /lib64/openmpi/bin/mpiexec -n 2 python3 helloworld.py
Traceback 报告说,
ImportError:没有名为“mpi4py”的模块
已被提出。helloworld.py 程序是在网上找到的一个示例,第 6 行是from mpi4py import MPI
.
由于 Apper 表明作为 Fedora Scientific 安装的一部分,已为 Python2 和 Python3 for OpenMPI 安装了 mpi4py,因此我不确定可能出了什么问题。有人可以建议如何使用这个包吗?
parallel-processing - mpi4py:内部错误:错误代码 409e0e 无效(环 id 不匹配)
我正在用 python 编码并使用 mpi4py 并行进行一些优化。我正在使用普通最小二乘法,我的数据太大而无法容纳在一个处理器上,所以我有一个主进程,然后产生其他进程。这些子进程各自导入一部分数据,它们在整个优化过程中分别使用这些数据。
我正在使用 scipy.optimize.minimize 进行优化,因此子进程从父进程接收系数猜测,然后将平方误差之和(SSE)报告给父进程,然后 scipy.optimize.minimize 通过迭代,试图找到 SSE 的最小值。在最小化函数的每次迭代之后,父进程将新的系数猜测广播给子进程,然后子进程再次计算 SSE。在子进程中,该算法设置在一个while循环中。在父进程中,我简单地调用了 scipy.optimize.minimize。
在给我一个问题的部分,我正在做一个嵌套优化,或者一个优化中的优化。如上所述,内部优化是 OLS 回归,然后外部优化是最小化另一个使用内部优化系数的函数(OLS 回归)。
所以在我的父进程中,我有两个最小化的函数,第二个函数调用第一个函数,并为第二个函数优化的每次迭代进行新的优化。对于这两个优化,子进程有一个嵌套的 while 循环。
希望这一切都说得通。如果需要更多信息,请告诉我。
以下是父进程的相关代码:
以下是子进程的相关代码:
我的问题是,通过外部最小化进行一次迭代后,它会吐出以下错误:
我无法找到有关此“ring id”错误或如何修复它的任何信息。帮助将不胜感激。谢谢!