MPI_请求在MPI处理者中是全局的吗?

MPI_请求在MPI处理者中是全局的吗?,mpi,Mpi,如果我声明了一个MPI_请求表(每个CPU一个请求),那么在使用for MPI_Isend/MPI_Irecv???时,可以全局访问该表??(与初始化MPI环境后随处可访问的MPI_comm相比) 谢谢。我觉得这个问题有点困惑,也许你可以澄清一下MPI_请求是一种类型;如果您在一个进程上声明了此类型的值表,那么它仅对该进程可用,与声明的任何其他变量一致 MPI_REQUEST类型的数据通常用作即时发送和接收的句柄(ISend,Irecv),以允许发送和接收进程使用MPI_test或MPI_Wai

如果我声明了一个MPI_请求表(每个CPU一个请求),那么在使用for MPI_Isend/MPI_Irecv???时,可以全局访问该表??(与初始化MPI环境后随处可访问的MPI_comm相比)


谢谢。

我觉得这个问题有点困惑,也许你可以澄清一下<代码>MPI_请求是一种类型;如果您在一个进程上声明了此类型的值表,那么它仅对该进程可用,与声明的任何其他变量一致

MPI_REQUEST类型的数据通常用作即时发送和接收的句柄(
ISend
Irecv
),以允许发送和接收进程使用
MPI_test
MPI_Wait
/
MPI_Waitall
/
MPI_Waitany
测试消息是否已被接收


MPI_Comm
也是一种类型,但您可能是指默认的通讯器本身,它属于这种类型?所有进程都知道这一点,因为(有效地)创建默认通信器的MPI_Init是一个集体操作。

我觉得这个问题有点混乱,也许您可以澄清一下<代码>MPI_请求是一种类型;如果您在一个进程上声明了此类型的值表,那么它仅对该进程可用,与声明的任何其他变量一致

MPI_REQUEST类型的数据通常用作即时发送和接收的句柄(
ISend
Irecv
),以允许发送和接收进程使用
MPI_test
MPI_Wait
/
MPI_Waitall
/
MPI_Waitany
测试消息是否已被接收


MPI_Comm
也是一种类型,但您可能是指默认的通讯器本身,它属于这种类型?所有进程都知道这一点,因为创建默认通信器的
MPI\u Init
是一个集体操作。

谢谢您的回答,我问这个问题是因为MPI\u Isend和MPI\u Irecv将MPI\u请求类型作为参数。假设每个CPU都在它的世界中,并且MPI_请求类型不共享,那么它们如何知道请求与特定的MPI_Isend和MPI_Irecv匹配是通过
标记
参数的值来完成的,就像阻塞发送/接收一样。如果进程
i
发送带有目标
j
和标记
n
,则进程
j
将在其发送带有源
i
和标记
n
(或
MPI\u任意标记
)的接收时接收到它。消息传递后,MPI实现负责更新两个进程中的
MPI\u请求
对象的状态。感谢您的回答,我问这个问题是因为MPI\u Isend和MPI\u Irecv将MPI\u请求类型作为参数。假设每个CPU都在它的世界中,并且MPI_请求类型不共享,那么它们如何知道请求与特定的MPI_Isend和MPI_Irecv匹配是通过
标记
参数的值来完成的,就像阻塞发送/接收一样。如果进程
i
发送带有目标
j
和标记
n
,则进程
j
将在其发送带有源
i
和标记
n
(或
MPI\u任意标记
)的接收时接收到它。消息传递后,MPI实现负责更新两个进程中的
MPI\u请求
对象的状态。