Python Cupy fft导致内存泄漏?
在我的python脚本中,我大量使用了fft和ifft。为了加快我的GTX 1060 6GB的速度,我使用了cupy库。在遇到内存不足的问题后,我发现内存泄漏是原因 我创建了以下代码来调查这个问题。调用Python Cupy fft导致内存泄漏?,python,cupy,Python,Cupy,在我的python脚本中,我大量使用了fft和ifft。为了加快我的GTX 1060 6GB的速度,我使用了cupy库。在遇到内存不足的问题后,我发现内存泄漏是原因 我创建了以下代码来调查这个问题。调用cupy.fft.fft后,将分配比输出大小更多的额外内存。删除该输出时,实际上只释放了该数量的内存,我不知道如何释放额外的内存。这是一只虫子还是我在监督什么 import cupy as cp t = cp.linspace(0, 1, 1000) print("t :&
cupy.fft.fft
后,将分配比输出大小更多的额外内存。删除该输出时,实际上只释放了该数量的内存,我不知道如何释放额外的内存。这是一只虫子还是我在监督什么
import cupy as cp
t = cp.linspace(0, 1, 1000)
print("t :", cp.get_default_memory_pool().used_bytes()/1024, "kB")
a = cp.sin(4 * t*2*3.1415)
print("t+a :", cp.get_default_memory_pool().used_bytes()/1024, "kB")
fft = cp.fft.fft(a)
print("fft :", fft.nbytes/1024, "kB")
print("t+a+fft:", cp.get_default_memory_pool().used_bytes()/1024, "kB")
del fft
cp.get_default_memory_pool().free_all_blocks()
cp.get_default_pinned_memory_pool().free_all_blocks()
print("t+a :", cp.get_default_memory_pool().used_bytes()/1024, "kB")
del t,a
print(" :", cp.get_default_memory_pool().used_bytes()/1024, "kB")
输出:
t : 8.0 kB
t+a : 16.0 kB
fft : 15.625 kB
t+a+fft: 48.0 kB
t+a : 32.0 kB
: 16.0 kB
我使用的是cupy-cuda101 8.1.0版Hi@MazzMan,直到现在我才注意到你的问题。正如我在中所回答的,这不是一个bug,而是预期的行为,因为在启动v8.0时,默认情况下我们缓存了cuFFT计划。这些计划作为工作区绑定到一些内存,因此除非删除计划/清除缓存,否则会有一些内存保留。例如,您可以在计划缓存中引用CuPy的文档并尝试禁用缓存 在您的情况下,您还可以在脚本之后运行以下行,以确认在清除缓存后释放内存 缓存=cp.fft.config.get\u plan\u cache() >>>cache.clear() >>>打印(“清除缓存后:”,cp.get_default_memory_pool()。used_bytes()/1024,“kB”) 清除缓存后:0.0 kB