导入任何与 pyqt 相关的内容后,我无法在 ipython 中使用调试器。
如果我不导入任何东西并调试像
$ ipython3
In [1]: abc
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-03cfd743661f> in <module>
----> 1 abc
NameError: name 'abc' is not defined
In [2]: %debug
> <ipython-input-1-03cfd743661f>(1)<module>()
----> 1 abc
ipdb>
Run Code Online (Sandbox Code Playgroud)
一切都很好,但是如果我使用 pyqt5 后端启动 ipython3,我会得到
$ ipython3 --pylab=qt5
In [1]: abc
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-03cfd743661f> in <module>
----> 1 abc
NameError: name 'abc' is not defined
In [2]: %debug
> <ipython-input-1-03cfd743661f>(1)<module>()
----> 1 abc
ipdb> QObject: Cannot create …Run Code Online (Sandbox Code Playgroud) 我cupy在一个接收numpy数组的函数中使用,将它推到 GPU 上,对其执行一些操作并返回它的cp.asnumpy副本。
问题:函数执行后内存未释放(如 中所示ndidia-smi)。
我知道cupy. 但是,这似乎仅适用于每个用户。当多个用户在同一个 GPU 服务器上进行计算时,他们会受到其他用户缓存内存的限制。
最后我还尝试cp._default_memory_pool.free_all_blocks()在函数内部调用。这似乎没有效果。导入cupy主代码并free_all_blocks“手动”调用有效,但我想将 GPU 内容封装在函数中,对用户不可见。
您能否完全释放函数内部使用的 GPU 内存,以便其他用户可以使用它?
最小的例子:
主要模块:
# dont import cupy here, only numpy
import numpy as np
# module in which cupy is imported and used
from memory_test_module import test_function
# host array
arr = np.arange(1000000)
# out is also on host, gpu stuff happens in test_function
out = test_function(arr)
# GPU …Run Code Online (Sandbox Code Playgroud)