python - reduce() 和 Reduce()(大写和小写)
问题描述
在我的课程作业中,我的讲座特别推荐使用 comm.reduce(lowercase) 来解决一个特定的问题,但是所有对 MPI reduce 语法的引用都是 Reduce(大写),就像我在讲义和我完成的示例中找到的所有示例一样我自己,所以我不知道参数的精确语法。
在我当前的代码中,我试图将语法从gather()命令中提取出来:“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函数的大写和小写实例的链接)
解决方案
您的问题与大写/小写无关。
无论大小写如何,Reduce 都是一项集体操作。通讯器的所有等级都必须参与调用该函数。
关于大写/小写,这是特定于 mpi4py 的。大写变体使用“内存缓冲区”,而小写变体可以通信 python 对象。
另请参阅:https ://mpi4py.readthedocs.io/en/stable/overview.html#communicating-python-objects-and-array-data
推荐阅读
- python - 无法用 seaborn 地块来评估斧头对象
- python - 如何自动复制 - 粘贴 - 运行 .exe 文件?
- javascript - 带有数组值的jQuery排序元素没有html属性
- python - 如何根据特定字符串匹配将特定字符串附加到另一个字符串?
- c# - 没有递归的 C# 字符串数组修改
- azure - 如何将源中的行键映射到接收器中的行键?没有按预期工作
- node.js - 使用 multer-s3 将大型视频文件上传到 s3
- python - Treating a percentage over 100% as a double digit %
- c# - XmlSerializer 在一种特定情况下不序列化
- reactjs - 在 jest-emotion 中添加道具时未更改的快照