是否存在允许使用MPI发送/接收可变大小消息的库调用?
解决方法是在第一条消息中发送数据大小并使用实际有效负载进行跟踪,但我想知道是否存在组合这两条单独消息的约定。
答案 0 :(得分:2)
提供给MPI_Recv的计数只是一个上限。 MPI_Get_count可用于查找收到的确切项目数。
我觉得有点像插座。
答案 1 :(得分:2)
您还可以使用MPI_Probe
或MPI_Iprobe
,而不是使用MPI_Recv
或MPI_Irecv
发布接收。如果使用不正确,Probe / Iprobe可能会有性能缺点,但它们是处理可变大小消息的常用方法。另外,在多线程环境中要小心,因为在某些多线程上下文中,Probe / Iprobe不安全。有关这些问题的详细讨论,请参阅Hoefler et al.,以及可能包含在MPI-3中的修正草图(Mprobe)。