gpt4 book ai didi

c - MPI 卡在持久调用上

转载 作者:太空宇宙 更新时间:2023-11-04 03:21:56 25 4
gpt4 key购买 nike

我正在尝试实现某种形式的持久调用。不知何故,下面的代码一直挂起——我猜我一定是引入了一个死锁,但我无法真正理解它……

MPI_Request r[4];
[...]
MPI_Send_init(&Arr[1][1], 1, MPI_DOUBLE, 1, A, MPI_COMM_WORLD, &r[0]);
MPI_Recv_init(&Arr[1][0], 1, MPI_DOUBLE, 0, A, MPI_COMM_WORLD, &r[1]);

MPI_Send_init(&Arr[2][1], 1, MPI_DOUBLE, 0, B, MPI_COMM_WORLD, &r[2]);
MPI_Recv_init(&Arr[2][0], 1, MPI_DOUBLE, 1, B, MPI_COMM_WORLD, &r[3]);
[...]
MPI_Startall(4, r);
MPI_Waitall(4, r, MPI_STATUSES_IGNORE);

我认为这是解决死锁的完美 Material - 如果我想初始化这些发送/接收消息并稍后使用 StartallWaitall< 调用进程,这里的补救方法是什么?

编辑:所以如果我这样做

MPI_Start(&r[0]);
MPI_Wait(&r[0], &status):

然后就不会挂了。调用类似的东西:

for (int k=0; k<1; k++)
{
MPI_Start(&r[k]);
MPI_Wait(&r[k], &status);
}

失败并挂起。如果有帮助

最佳答案

您的标签不匹配。

例如,排名 0 从其自身接收带有标签 A但它使用标签 B

发送给自己

关于c - MPI 卡在持久调用上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44863780/

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