是否有库调用可以使用 MPI 发送/接收可变大小的消息?
一种解决方法是在第一条消息中发送数据大小,然后跟随实际负载,但我想知道是否有结合这两个分开的消息的约定。
是否有库调用可以使用 MPI 发送/接收可变大小的消息?
一种解决方法是在第一条消息中发送数据大小,然后跟随实际负载,但我想知道是否有结合这两个分开的消息的约定。
MPI_Recv提供的计数仅为上限。可以使用MPI_Get_count来查找接收到的确切项目数。
有点像套接字,我猜。
MPI_Get_count()
然后类似于 malloc(sizeof(char)*getCountResult)
,然后将结果缓冲区传递给 MPI_Recv()
吗? - binkiMPI_Probe
或 MPI_Iprobe
来代替使用 MPI_Recv
或 MPI_Irecv
发送接收请求。如果使用不当,Probe/Iprobe 可能会有性能劣势,但它们是处理可变大小消息的一种常见方法。此外,在多线程环境中要小心,因为 Probe/Iprobe 在某些多线程上下文中不安全。请参阅 Hoefler et al. 对这些问题进行全面讨论,并概述 MPI-3 中可能包含的修复(Mprobe)。