在我的课程中,我的讲课特别推荐使用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函数的大写和小写实例的链接)
答案 0 :(得分:0)
您的问题与大写/小写无关。
无论大小写,减少都是集体行动。所有沟通者都必须参与调用该功能。
关于大写/小写,这特定于mpi4py。大写变体使用“内存缓冲区”,小写变体可以传递python对象。
另请参阅:https://mpi4py.readthedocs.io/en/stable/overview.html#communicating-python-objects-and-array-data