【发布时间】:2012-03-31 02:02:27
【问题描述】:
在 MPI 中,是否可以立即丢弃接收到的数据而不分配缓冲区来保存它?我正在使用 MPI_Allgather 从多个进程收集数据,但在某些时候,一个或多个进程没有要发送的有用数据。
我最初的解决方案是让无用的过程完成。但是,如果一个任务在没有调用 MPI_Allgather 的情况下终止,则其余任务将陷入死锁,因为 MPI_Allgather 阻塞。为了克服这个问题,我将所有进程保留到最后,但发送从未使用过的垃圾数据。
有用的进程会保留一些接收到的数据,但无用的进程不会。我尝试像这样为 recbuf 传递一个空指针:
MPI_Allgather(&sendbuf, 1, MPI_INT, 0, 1, MPI_INT, MPI_COMM_WORLD);
但它没有用。我能做些什么来避免接收或至少存储无用的数据吗?
【问题讨论】:
标签: c++ c mpi parallel-processing