并行 Python-C++ 程序冻结(内存?)

Parallel Python-C++ program freezes (memory?)

我有一个 python 程序,它包含一个 python 包装的 C++ 核心。它是并行编写的,因为它在计算上非常昂贵,我目前正在 Ubuntu 16.04 平台上的远程服务器上制作它 运行。

我遇到的问题是,在我的测试用例达到一定数量的周期(假设为 2000 次)后,它会突然冻结,而不会给出错误消息或任何其他信息。我检测到它停止的代码部分是一个 python 函数,它没有任何 for 循环(所以我假设它没有陷入循环)。我试图简单地注释它被卡在代码之外的函数,因为它进行了较小的计算,现在,在完全相同的周期数下,它被卡在前面一点,这次是在 C++ 编写的部分。我开始假设可能是与服务器相关的内存问题。

当代码卡住时从终端执行 htop 我可以看到参与计算的单元已满载,因为它们当前参与了一些未知的计算。此外,进程中涉及的内存(至少当进程已经卡住时)并没有被完全占用,所以它也可能不是内存问题。

我还尝试大幅减少每个周期写入的输出数量(我承认,大小一致)但什么也没有。使用最佳数量的处理器,需要大约 20 分钟才能达到 2000 个周期的临界点,因此问题不容易重现。

我是第一次遇到这类问题,我还能做些什么来强调这个问题吗?

感谢您的回答

您可以尝试以下方法。 编写代码检查正在进行的迭代并在第 2000 次迭代开始时存储所有变量。

然后使用相同的变量集再次进行 运行 迭代。 它不会解决您的问题,但有助于减少测试时间,从而减少您发现问题所需的时间。

如果确实是内存问题,代码不会卡在 2000(这是你开始的地方),但会卡在 4000。

然后您可以在第 2000 次迭代时监视内存并复制它。