gpt4 book ai didi

c - MPI 通信中出现奇怪的 double 值 - 内存问题?

转载 作者:太空宇宙 更新时间:2023-11-04 04:06:13 26 4
gpt4 key购买 nike

这实际上是 this question 的跟进,因为我认为我已经解决了原始问题提出的问题,但现在还有一些其他问题。

我有一些正在执行矩阵转置的 MPI 代码。它是通过使用 MPI_Isend 和 MPI_Irecv 的点对点非阻塞通信来实现的。我正在使用 double ,我所有的 MPI 代码都使用 MPI_DOUBLE 作为类型。但是,我似乎遇到了一些奇怪的内存问题——其中一个关键问题是在我的输出中包含了“无意义”的数字。例如:

Test Process (2, 1): 68.000000 78.000000 
Test Process (2, 1): 387323398486945739062068424931898425134839058804189460794109462554519403357109477747039490936107027309191462010675537134594564349232145421118587860238537662203953149049188364045280831238661272720084252520359127715290869606638545797120.000000 881150864511763756676254370742733018389256944202962553716402946507192139671624750374865205489904045881646541419557063427368973644261533211221769931916194052019466643963904.000000
Test Process (2, 1): 78.000000 88.000000

我可以猜到不知何故存在内存问题 - 我正在读取一些内存,但它不是 double ,或者当它不是 double 时,我将内存写入内存。知道如何调试它吗?

代码可用 here ,但我不希望对代码进行详 segmentation 析、关于使用 MPI 通信如何发生此类错误的更多提示,以及我可以采取哪些措施来追踪错误。

只是为了确认我尝试过的几件事:数组的初始化没有问题。我已经尝试将数组初始化为一个已知值 (999),但最后并没有出现在数组中,所以显然所有新值(包括疯狂的值)都来自 MPI 通信。

有什么想法吗?

最佳答案

一个潜在的问题是 array 的索引不一致。在第 223 行,看起来 i 和 j 可能是倒序的。 (我不确定在这个查看它的 iPod Touch 中,行号是否匹配。这是带有注释“计算偏移量”的循环) j 和 i 与其他循环相比,将行换成列。看来您已经在评论中以几种不同的方式进行了调整……所以这也许是意料之中的。我不能很好地看到整个代码,因为我目前使用的是 iPod touch,视野有限。但那部分似乎不正确。

最后的循环似乎也不正确。在那个循环中,j 和 i 与其他循环相比也是相反的。

关于c - MPI 通信中出现奇怪的 double 值 - 内存问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5608187/

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