我为我的 Python 代码构建了一个小型 C++ 扩展模块,它计算并返回几个
double
(浮点)数组。该代码应该无法生成 NaN,但有时仍然会生成 NaN。它也与运行隔离:通常当我启动应用程序时,它每次都工作,但有时当我启动应用程序时,它总是失败。
我在其他应用程序中使用该模块,并且从未失败。这个新应用程序使用了 pytorch,我过去没有使用过。
这让我相信可能正在发生以下事情之一:
torch==2.2.0+cu121
内内存泄漏?.bss
设置为零或以一种方式或另一种方式管理其他数据段?我没有看到任何迹象表明变量(或常量)未正确初始化。我不使用全局变量,接受一些我需要的静态变量,例如Python字符串等。我认为我不依赖于.bss
来初始化为零。Py_mod_create
和Py_mod_exec
中自动生成的东西之外我还需要做一些其他初始化。distutils
构建amd64-cpython-311
,distutils使用Visual Studio 2017 C++编译器。对我来说,上述情况都不太可能。由于它每次都能在不使用 pytorch 的其他应用程序中工作,这实际上是我的主要怀疑。
还有人见过这样的事情吗?或者对于它可能是什么有任何其他建议吗?非常感谢!
啊哈! numpy 使用 非 c 风格连续数组 (想想稀疏数据),所以你不能只是在 for 循环中从头到尾遍历它。