reduce()和Reduce()(大写和小写)

时间:2018-12-29 18:06:04

标签: python mpi

在我的课程中,我的讲课特别推荐使用comm.reduce(小写字母)来解决一个特殊的问题,但是,所有MPI reduce语法的参考文献都是Reduce(大写字母),如在讲义中找到的所有示例ive和我自己完成了示例,所以我不知道该参数的精确语法。

在我当前的代码中,

试图基于使我得到的collect()命令的语法基础:“ A = comm.reduce(x_local,MPI.SUM)”,因此我将其放入此代码中以检查其是否有效:

from mpi4py import MPI
import numpy as np

comm = MPI.COMM_WORLD
rank = comm.Get_rank()
size = comm.Get_size()


x_local = 5*size
print("on rank:",rank," local value is: ",x_local)
A = np.zeros(size)
if rank == 0:
    A = comm.reduce(x_local,MPI.SUM)
    print(A)

但是,当我尝试在终端中运行此代码时,它根本行不通,我将打印除rank = 0以外的任何其他等级,但不会给出其他错误,没有反馈,它将一直存在直到我按crtl + c。我把它放在那儿大约一个小时,而我又做些其他事情,当我回来时,它仍然在做同样的事情。我只能假设我的语法错误,但是我不知道为什么python只会吐出一个错误。任何帮助将不胜感激

(以及实际上包含reduce和其他mpi函数的大写和小写实例的链接)

1 个答案:

答案 0 :(得分:0)

您的问题与大写/小写无关。

无论大小写,减少都是集体行动。所有沟通者都必须参与调用该功能。

关于大写/小写,这特定于mpi4py。大写变体使用“内存缓冲区”,小写变体可以传递python对象。

另请参阅:https://mpi4py.readthedocs.io/en/stable/overview.html#communicating-python-objects-and-array-data