【发布时间】:2012-06-09 19:51:02
【问题描述】:
这个错误最常见的原因是什么
MPI_ERR_BUFFER: invalid buffer pointer
哪个是 MPI_Bsend() 和 MPI_Rcev() 调用的结果? 当并行进程数很少(
【问题讨论】:
-
缓冲区参数有问题。你在用
MPI_Buffer_attach吗?我认为您必须发布一些代码才能获得更多帮助。 -
缓冲区有最大大小吗?
-
我认为
MPI_Buffer_attach没有大小限制(int的大小除外)。 MPI_Buffer_attach page 说:“给定的大小应该是您打算拥有的所有未完成 Bsend 的大小之和,加上您执行的每个 Bsend 的 MPI_BSEND_OVERHEAD。为了计算大小,您应该使用 MPI_Pack_size。”你符合这些要求吗? -
随着更多进程要发送给您,最终会在发送之前缓冲更多数据,并且您的缓冲区太小。增加其大小或更好地使用非阻塞标准发送
MPI_Isend()。 -
@HristoIliev 我使用了 MPI_Isend() 并解决了问题。您可以将其发布为anwer,我会接受它。
标签: c++ parallel-processing mpi