gpt4 book ai didi

c - MPI 错误 : (Segmentation fault: 11)

转载 作者:行者123 更新时间:2023-11-30 18:49:42 24 4
gpt4 key购买 nike

我在这里看到了许多类似的线程,但我的问题是,我的程序实际上是针对不同的设置运行的。

例如:当我的矩阵为 1024x1024

对于 2 核:错误 11

对于 4、8、16 等来说效果很好。

矩阵2048x2048:

对于任何核心设置:错误 11。

我不明白为什么会发生这种情况,每个进程都需要 2048/(总进程) X 2028 矩阵来计算。它应该可以正常工作。

这就是我声明矩阵的方式:

int temp[wp][hp];

对于接收:

rc = MPI_Recv(&temp[0][0], wp*hp, MPI_INT, i, tag, MPI_COMM_WORLD, &status);

对于发送:

 rc = MPI_Send(&temp[0][0], wp*hp, MPI_INT, 0, tag, MPI_COMM_WORLD);

我不明白,它应该可以工作。您认为这可能是内存问题而不是与指针相关吗?

最佳答案

我将使用 malloc 创建数组

int *temp =(int*)malloc(wp * hp * sizeof(int));

然后我将其他行更改为

rc = MPI_Recv(temp, wp*hp, MPI_INT, i, tag, MPI_COMM_WORLD, &status);

rc = MPI_Send(temp, wp*hp, MPI_INT, 0, tag, MPI_COMM_WORLD);

当我使用完数组后,我释放它。

free(temp)

就像一位评论者已经说过的那样,按照你的方式分配数组在 c++ 中是不合法的。

编辑:

如果您想访问二维数组,请使用以下模式:

temp[rowToAccess * numberOfColumns + columnToAcess]

关于c - MPI 错误 : (Segmentation fault: 11),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42101028/

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