我可以重用请求对象吗?

标签 c mpi

在使用多个MPI_IsendMPI_Irecv 时,我应该重新声明MPI_Request 请求,还是只声明一次并重用请求对象。如果我必须重新声明,你能举例回答吗。

最佳答案

是的,您可以重用 MPI_Request 变量。这些变量只是句柄,无需初始化即可将它们传递给 MPI_IsendMPI_Irecv(它们仅标记为这些函数的 OUT 参数)。当然,当传递给任何完成它们的函数时,它们必须有效,例如 MPI_Wait。这些函数还会在完成后将变量设置为 MPI_REQUEST_NULL

您甚至可以更进一步,使用持久通信请求。如果您在循环中有请求在多个调用中保留相同的参数列表。您可以将 MPI_Send_init 等与 MPI_Start 一起使用。这样可以有更好的性能。请注意,对于持久请求,完成函数(例如 MPI_Wait)只会将请求标记为非事件状态,而不是将变量设置为 MPI_REQUEST_NULL

关于我可以重用请求对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55902635/

相关文章:

c - 将结构指针传递给不起作用的函数

c++ - 测试后无法取消 MPI 请求

ubuntu - libmpi_mpifh.so.12 : cannot open

c - 从输入中获取未知长度的数字

c - 为什么我的代码中出现段错误?

mpi - 如何判断MPI通讯器是否有效?

io - MPI - 抑制某些处理器的输出

c - 发送/接收的 MPI 数据类型是否必须匹配?

c - 用C读取格式化数据

c - 是否可以重复getopt