【发布时间】:2021-02-26 23:35:42
【问题描述】:
在我的 python 脚本中,我对 fft 和 ifft 进行了相当广泛的使用。为了加快我的 GTX 1060 6GB 的速度,我使用了 cupy 库。在遇到内存不足的问题后,我发现内存泄漏是原因。
我创建了以下代码来调查问题。在调用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
【问题讨论】: