在python中使用mpi-定义问题

时间:2019-06-27 12:07:36

标签: python mpi

我必须处理python,尤其是mpi。我必须使用openmp for c做同样的工作,它工作得很好,但是我很难使用mpi。我需要使用mpi并获取时间,但我不知道如何使用多个线程和进程。我知道您可以使用发送和接收,分散和收集,但是我不太了解如何使用它们。这是我想出的:

if __name__=="__main__":
start = MPI.Wtime ()
flux=MPI.COMM_WORLD
rank=flux.Get_rank()
size=flux.Get_size()
F = open("param.dat",'r')
N = int(F.readline())
Nt= int(F.readline())
print("================================")
print("====== Probleme du barage ======")
print("====== avec %d mailles"%(N))
print("====== et %d pas de temps"%(Nt))
print("================================")
dx = 1./N
x,h,hu = init(N,dx)
plt.plot(x,h,x,hu/h);
for i in range(Nt):
if rank == 0:
fh,fu,cm = Flux(N,h,hu) # calcul des flux
dt = 0.75*dx/cm;
hn,hun = integre(N,dt,dx,h,hu,fh,fu)
h  =  hn.copy()
hu = hun.copy()
print("I am rank %d in group of %d processes" %(rank,size))
plt.plot(x,h,'--',x,hu/h,'--');plt.show()
end = MPI.Wtime()
print("Total time %f" % (end -start))

程序正在运行,我有时间,例如,如果我使用4个进程:

I am rank 2 in group of 4 processes
Total time 0.014009
I am rank 3 in group of 4 processes
Total time 0.023530
I am rank 1 in group of 4 processes
Total time 0.026517
I am rank 0 in group of 4 processes
Total time 0.597385

但这无济于事,它需要比原始程序更多的时间。希望你能帮助我。我尝试了不同的文章和博客来教如何使用不同的方法,但是我无法从中获得一些帮助。 预先感谢

0 个答案:

没有答案