我可以重用请求对象吗?

问题描述 投票:3回答:1

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

c mpi
1个回答
3
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.