Python mempool.used_字节和mempool.total_字节的差异导致cupy.cuda.memory.outOfMemory错误
我可以运行示例中提供的代码和Python mempool.used_字节和mempool.total_字节的差异导致cupy.cuda.memory.outOfMemory错误,python,cupy,Python,Cupy,我可以运行示例中提供的代码和 mempool.used\u bytes=mempool.total\u bytes 然而,当我尝试自己的代码时,它总是导致 mempool.total\u bytes>mempool.used\u bytes 我不知道所有的记忆都到哪里去了。我还使用了“del”和cp._default_memory_pool.free_all_blocks(),在每次迭代之后 我的代码创建了两个矩阵NxN x_1和x_2以及循环N x_1=cp.ones((N,N))+1 x_2
mempool.used\u bytes=mempool.total\u bytes
然而,当我尝试自己的代码时,它总是导致
mempool.total\u bytes>mempool.used\u bytes
我不知道所有的记忆都到哪里去了。我还使用了“del”和cp._default_memory_pool.free_all_blocks(),在每次迭代之后
我的代码创建了两个矩阵NxN x_1和x_2以及循环N
x_1=cp.ones((N,N))+1
x_2=cp.ones((N,N))+1
然后求第三个矩阵的值
y\u gpu=np.multiply(np.power(x\u gpu,2),np.power(x\u gpu,2))
因此,总的来说,所需的内存是3*8(每个数字的字节)*(N)^2
mempool.used_字节给我这个数字,但是mempool.total_字节>mempool.used_字节
例如,当N=5000时,mempool.used_字节=600m
但mempool.total_字节=1200m
N=6000时,mempool.used_字节将为864 M,但cupy.cuda.memory.outOfMemory错误将生效
有人能告诉我这里发生了什么吗?
谢谢
import cupy as cp
import numpy as np
from timeit import default_timer as timer
import time
def GPU(N):
t_gpu_1 = time.time()
x_1 = cp.ones((N,N))+1
x_2 = cp.ones((N,N))+1
t_gpu_2 = time.time()
y_gpu = cp.zeros((N,N))
y_gpu = cp.multiply( cp.power(x_1,2), cp.power(x_2,2) )
t_gpu_1 = time.time() - t_gpu_1
t_gpu_2 = time.time() - t_gpu_2
print("Alloc + Computo GPU ",t_gpu_1," Computo GPU ",t_gpu_2)
print("matrixes size >> ",y_gpu.nbytes * 3/1e6)
print("BEFORE DEL")
print("used Mbytes >> ",mempool.used_bytes()/1e6) #
print("total Mbytes >> ",mempool.total_bytes()/1e6)
time.sleep(3)
del x_1
del x_2
del y_gpu
cp._default_memory_pool.free_all_blocks()
print("AFTER DEL + FREE")
print("used Mbytes >> ",mempool.used_bytes()/1e6) #
print("total Mbytes >> ",mempool.total_bytes()/1e6)
if __name__ == "__main__":
mempool = cp.get_default_memory_pool()
print("Device >> ", cp.cuda.runtime.getDeviceCount())
#print("Limit >> ",mempool.get_limit())
for N in range(1,10,1):
print("N >> ",N*1e3)
#CPU(N*1e3)
GPU(int(N*1e3))
cp._default_memory_pool.free_all_blocks()