繁体   English   中英

mpi4py recv数据上限?

[英]mpi4py recv data cap?

我正在开发一个与一群人进行密集交流的程序。 我不是特别擅长调试分布式程序,但是我强烈怀疑我一次向一个进程发送太多消息。 我在mpi4py中重新实现了actor模型。 每个进程都有一个“邮箱”作业,当他们完成邮箱时,他们决定进入CHECK_FOR_UPDATES模式,在CHECK_FOR_UPDATES模式下,他们是否可以接收新消息。

我遇到了一群学生和我一直在努力的程序问题。 当负载太大时,它将开始崩溃,但是我们无法弄清楚问题出在哪里,因为我们都很不擅长调试东西。

我问我学校的一些人是否有任何想法,并建议在重新实现演员系统时,我们应该考虑使用Akka。 今年的一名学生说,仍然可能存在问题,一个演员可能会被消息淹没和崩溃。 我在这里问过。 流模型似乎不是我们想要的模型(有关更多详细信息,请参见我的评论),此后我回头看了看mpi4py程序,因为我之前没有考虑过这个问题。

在普通的C或Fortran实现中,似乎存在MPI_Recvcount参数 我注意到comm.recv没有count参数,并怀疑当进程进入CHECK_FOR_UPDATES模式时,它仅消耗大量来自各种来源和管芯的消息。 (从技术上来说,我不确定,但我们怀疑可能是这种情况。)有没有办法限制comm.recv接受的数据量?

(注意:我想避免使用comm.Recv变体,因为它限制了用户使用numpy数组。)

找到了答案:

可以向recv()irecv()方法传递一个缓冲区对象,该缓冲区对象可以重复用于接收消息,从而避免内部内存分配。 缓冲区必须足够大以容纳已传输的消息

强调我的。 因此,我必须使用SendRecv

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM