擅长:python、mysql、java
<p>我不是MPI专家,但是我想知道numpy中的boolean数据类型是否与C中的boolean数据类型不兼容?也许这就是导致错误的原因。(不是证据,而是一些证据:<a href="http://docs.scipy.org/doc/numpy/reference/arrays.scalars.html#arrays-scalars-built-in" rel="nofollow">http://docs.scipy.org/doc/numpy/reference/arrays.scalars.html#arrays-scalars-built-in</a>和{a2})</p>
<p>puk,正如您所提到的,一个解决方案是使用<code>send</code>send和<code>recv</code>(带小写的s和r)函数(<a href="http://mpi4py.scipy.org/docs/usrman/tutorial.html" rel="nofollow">http://mpi4py.scipy.org/docs/usrman/tutorial.html</a>)将数据作为python对象传输。”在幕后,“mpi4py为此使用了<code>pickle</code>,因此可以发送任何通用的python对象。在</p>
<p>我回答的主要原因是发布一个使用整数数组的替代解决方案,0代表真,1代表假:</p>
<pre><code>#!/usr/bin/env python
import numpy as np
from mpi4py import MPI
# MPI Initialization
rank = MPI.COMM_WORLD.Get_rank()
comm = MPI.COMM_WORLD
if __name__ == '__main__':
a=np.array([0,])
if rank == 0:
a[0]=1
comm.Send( [ a, MPI.INT ], 1, tag=111 )
print rank,a
if rank == 1:
comm.Recv([ a, MPI.INT], 0, tag=111 )
print rank,a
</code></pre>
<p>如果有人想利用更快的(根据<code>mpi4py</code>文档)numpy数组。在</p>