我可以重用请求对象吗?

时间:2019-04-29 11:42:12

标签: c mpi

在使用多个MPI_IsendMPI_Irecv的同时,我应该重新声明MPI_Request请求,还是只声明一次并重用请求对象。如果需要重新声明,您可以举一个例子来回答。

1 个答案:

答案 0 :(得分:3)

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

您甚至可以走得更远,并使用持续的通信请求。如果您的请求在循环中在多个调用中保留相同的参数列表。您可以将MPI_Send_init等与MPI_Start一起使用。这样可以具有更好的性能。请注意,对于持久性请求,完成功能(例如MPI_Wait)只会将请求标记为无效,而不会将变量设置为MPI_REQUEST_NULL