Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中使用MPI的分散(mpi4py)来分割向量处理_Python_Mpi - Fatal编程技术网

在Python中使用MPI的分散(mpi4py)来分割向量处理

在Python中使用MPI的分散(mpi4py)来分割向量处理,python,mpi,Python,Mpi,所以这是一个简单的代码片段,对我来说不适用,因为我期望4项,得到55项。实际上,我希望有一个字符串列表,并在n_进程之间拆分该列表,以便对其进行计算。这怎么可能与分散 from mpi4py import MPI comm = MPI.COMM_WORLD size = comm.Get_size() rank = comm.Get_rank() if rank == 0: data = [(i+1)**2 for i in range(55)] comm.Scatter(data,

所以这是一个简单的代码片段,对我来说不适用,因为我期望4项,得到55项。实际上,我希望有一个字符串列表,并在n_进程之间拆分该列表,以便对其进行计算。这怎么可能与分散

from mpi4py import MPI

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

if rank == 0:
   data = [(i+1)**2 for i in range(55)]
comm.Scatter(data, root=0)
print rank, data

看一看底层的散布API调用:


分散调用使用list参数向每个进程发送列表中的一个元素。您在列表中硬编码了55个元素,但听起来您只运行了4个进程。将
范围(55)
更改为
范围(大小)
(更合适的解决方案),或运行55个进程,以便现有代码正确。

转到
范围(大小)
。为什么选择
55
?请参阅问题的答案。如果您没有MPI识别的55个节点,那么在大多数笔记本电脑和台式机上,实心2、4或8更为合理today@chrisaycock-我没有意识到要将其分块到节点数大小所需的函数规范。@AndreySobolev-谢谢你解决了这个问题。