MPI重用MPI_请求

MPI重用MPI_请求,mpi,hpc,Mpi,Hpc,将已完成的MPI_请求重新用于另一个请求是否安全?我一直在使用一个MPI_请求池来提高性能,没有出现错误。但是最好确定一下。重复使用MPI\u请求对象是可以的,只要它们在再次使用之前已经完成(通过完成请求或使用MPI\u Request\u FREE手动释放请求对象).类型为MPI\u Request的变量本身不是请求对象,而是指向真实MPI请求对象的不透明句柄(类似于抽象指针)。为此类变量指定新值不会影响MPI对象,只会中断与该对象的关联。因此,该对象可能变得不可访问,因为如果程序中不存在该对

将已完成的MPI_请求重新用于另一个请求是否安全?我一直在使用一个MPI_请求池来提高性能,没有出现错误。但是最好确定一下。

重复使用
MPI\u请求
对象是可以的,只要它们在再次使用之前已经完成(通过完成请求或使用
MPI\u Request\u FREE手动释放请求对象
).

类型为
MPI\u Request
的变量本身不是请求对象,而是指向真实MPI请求对象的不透明句柄(类似于抽象指针)。为此类变量指定新值不会影响MPI对象,只会中断与该对象的关联。因此,该对象可能变得不可访问,因为如果程序中不存在该对象的句柄,则无法再将其传递给MPI调用。这与丢失指向动态分配内存块的指针相同,从而导致内存块泄漏

对于异步请求句柄,一旦操作完成,MPI将销毁请求对象,并在返回时将传递的句柄变量设置为
MPI\u request\u NULL
。此外,调用
MPI\u Request\u free
会将请求标记为删除,并在返回时将句柄设置为
MPI\u Request\u NULL
。此时,您可以重用变量并在其中存储不同的请求句柄

这同样适用于通讯器的句柄(类型为
MPI\u Comm
),数据类型的句柄(类型为
MPI\u Datatype
),减少操作的句柄(类型为
MPI\u Op
),等等