py
from mpi4py import MPI
import numpy as np
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
if (rank==0):
arr1=np.array([[1,2,3],[4,5,6],[7,8,9]])
data=np.array([[1,2,3],[4,5,6],[7,8,9]])
#data=np.array([1,2,3])
print("scattering")
else:
arr1=None
data = np.empty([3,3], dtype=int)
bufrcv=np.empty([3],dtype=int)
bufrcv1=np.empty([3],dtype=int)
comm.Scatter(arr1,bufrcv,root=0)
comm.Bcast(data,root=0)
print "scattered ", rank,bufrcv,data
bufsend=np.empty([3],dtype=int)
datadim=data.shape
for i in range(0,datadim[1]):
sum=0
for j in range (0,len(bufrcv)):
sum=sum+bufrcv[j]*data[j,i]
#print("buffer",rank,bufrcv[j],data[i,j],bufrcv[j]*data[i,j])
bufsend[i]=sum
#print(sum,rank)
#print(bufsend)
recvbuf=None
if rank == 0:
recvbuf = np.empty([3,3], dtype=int)
if rank==0:
print(recvbuf)