c - 我可以重用请求对象吗?
问题描述
在使用多个MPI_Isend
andMPI_Irecv
时,我应该重新声明MPI_Request
请求,还是只声明一次并重用请求对象。如果我必须重新声明,您可以举个例子来回答。
解决方案
是的,您可以重用MPI_Request
变量。这些变量只是句柄,不需要初始化它们以将它们传递给MPI_Isend
或MPI_Irecv
(它们仅标记为这些函数的 OUT 参数)。当然,当传递给任何完成它们的函数时,它们必须是有效的,比如MPI_Wait
. 这些函数还将MPI_REQUEST_NULL
在完成时将变量设置为。
您甚至可以更进一步,使用持久通信请求。如果您在循环中有请求在多个调用中保留相同的参数列表。您可以将MPI_Send_init
etc. 与 . 一起使用MPI_Start
。这可以有更好的性能。请注意,对于持久请求,完成函数(例如MPI_Wait
)只会将请求标记为非活动状态,而不是将变量设置为MPI_REQUEST_NULL
。
推荐阅读
- python - 如何使用 utf8 字符作为对象的键
- json - 使用可以具有不同类型的字段的 JSON 反序列化(使用 Jackson 和 Scala)
- php - 访问另一个命名空间中的方法
- c - C中的UDP Socket Jumbograms
- tty - BSD系统上tty的配置
- sql-server - 格式化的搜索字段很慢
- java - 卡夫卡听众,不使用字符串?
- javascript - 自定义着色器材质需要永远初始化?
- typescript - 如何分解 TypeScript “Discriminated Union” 开关块并同时保持详尽
- frequency-analysis - 声音频率分析