微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MPI - 节点之间可以发送的信息是否有限制?

如何解决MPI - 节点之间可以发送的信息是否有限制?

我在 MPI 中的节点之间发送(很长)字符串时遇到了一些问题。

我的目标是使用 MPI_Scatterv 将这个非常长的字符串的不同部分从进程 0 发送到所有其他进程。 我写的程序运行正常,但是当要发送的字符串的大小超过196255个字符时,我得到这个错误

[node1][[46392,1],0][btl_tcp_endpoint.c:803:mca_btl_tcp_endpoint_complete_connect] connect() to 10.0.2.15 Failed: Connection refused (111)

这是我第一次尝试运行它时发生的,但如果我再试一次,我会收到另一个错误消息:

Open MPI detected an inbound MPI TCP connection request from a peer
that appears to be part of this MPI job (i.e.,it identified itself as
part of this Open MPI job),but it is from an IP address that is
unexpected.  This is highly unusual.

The inbound connection has been dropped,and the peer should simply
try again with a different IP interface (i.e.,the job should
hopefully be able to continue).

  Local host:          node1
  Local PID:           3143
  Peer hostname:       node1 ([[46370,0])
  Source IP of socket: 10.0.2.15
  KNown IPs of peer: 

我不完全知道为什么会发生这种情况,所以我不知道我是否可以修复它,或者是否存在一些限制,我想知道为什么会出现这种情况以及如何发现它们。

>

如果此信息对识别问题有用,我的字符串是动态分配的,首先使用 calloc,然后在需要时使用 realloc 重新分配。

此外,我的 MPI 环境由 3 个节点组成,它们是 3 个 VM,由 vagrant 带来。每个 VM 有 1024 MB 的内存。

我使用以下命令运行我的程序:mpirun -np 3 --host node1,node2,node3 --mca btl_base_warn_component_unused 0 ./program

如果您需要查看代码,请询问,我会发布。我还没有发布它,因为我不确定是否需要它。

谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。