gpt4 book ai didi

c - 使用 MPI_Wait 获得的 MPI_Isend 状态有什么用?

转载 作者:太空宇宙 更新时间:2023-11-04 07:50:24 24 4
gpt4 key购买 nike

案例:1.使用MPI_Wait()获取的status有什么用

if(rank==0)
MPI_Isend(&buffer0, count, MPI_INT, 1, 0, MPI_COMM_WORLD, &request0);
if(rank==1)
MPI_Recv(&buffer1, count, MPI_INT, 0, 0, MPI_COMM_WORLD);

if(rank==0)
MPI_Wait(&request0, &status);
// Can i use status here to do something?
MPI_Finalize();

Case:2. status 的使用在这里说的很清楚(为了对比才加的)

if(rank==0)
MPI_Ssend(&buffer0, count, MPI_INT, 1, 0, MPI_COMM_WORLD);
if(rank==1)
MPI_Irecv(&buffer1, count, MPI_INT, 0, 0, MPI_COMM_WORLD, &request1);

if(rank==1)
MPI_Wait(&request1, &status);
printf("The source is %d", status.MPI_SOURCE);
MPI_Finalize();

最佳答案

通常 MPI_Status 用于获取接收消息的以下属性。

  1. 发件人的排名,(status.MPI_SOURCE) 在使用 MPI_ANY_SOURCE 时特别相关。
  2. 消息的标签,(status.MPI_TAG) 在使用 MPI_ANY_TAG 时特别相关
  3. 使用 MPI_Get_count发送的元素计数,这可能与发布的接收缓冲区不同。

对于发送消息,您可以使用状态来测试 MPI_Test_cancelled。此外,对于返回多个状态的函数,例如 MPI_Waitall,在出现错误的情况下,您可以使用 status[i].MPI_ERROR。在这种情况下,主等待函数将返回 MPI_ERR_IN_STATUS

如果您不需要任何这些,您可以传递 MPI_STATUS_IGNORE 而不是 MPI_Status*

关于c - 使用 MPI_Wait 获得的 MPI_Isend 状态有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54265687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com