mpi4py只有一个MPI进程可用



我试图使用mpi4py,但在试图初始化它时得到以下错误:

Tried to create an MPI pool, but there was only one MPI process available. Need at least two.

"MPI.COMM_WORLD.Get_size()"的值为"1",说明存在问题。

但是,当我在安装它之后运行通常的测试时,我得到了预期的输出,这很奇怪:

$ mpiexec -n 5 python -m mpi4py.bench helloworld
Hello, World! I am process 0 of 5 on sevrhuntd1.
Hello, World! I am process 1 of 5 on sevrhuntd1.
Hello, World! I am process 2 of 5 on sevrhuntd1.
Hello, World! I am process 3 of 5 on sevrhuntd1.
Hello, World! I am process 4 of 5 on sevrhuntd1.

我不是系统管理员,他们需要一段时间来处理我的请求,删除openmpi并安装mpich,如这里和这里所建议的。还有其他方法可以解决这个错误吗?

更具体地说,我试图在鸭嘴兽库中使用此文件中的MPIPool类创建一个池,并且在这里得到错误:

from mpi4py import MPI

class MPIPool(object):
def __init__(self, comm=None, debug=False, loadbalance=False):
self.comm = MPI.COMM_WORLD if comm is None else comm
self.rank = self.comm.Get_rank()
self.size = self.comm.Get_size() - 1
self.debug = debug
self.function = _error_function
self.loadbalance = loadbalance
if self.size == 0:
raise ValueError("Tried to create an MPI pool, but there "
"was only one MPI process available. "
"Need at least two.") # This is the error.
# More code below, but not making it there.

当我试图在main中使用以下命令初始化它时:

if __name__ == "__main__":
pool = MPIPool()

这是个愚蠢的错误。我只需要用mpiexec -n <# processes> python ...调用Python。问题解决了。

最新更新