释放CUDA内存非常缓慢

时间:2010-01-28 23:14:31

标签: c memory-management cuda

我使用cudaMalloc((void**)&(storage->data), size * sizeof(float))在GPU上分配一些浮点数组(相当大,即9,000,000个元素)。在我的程序结束时,我使用cudaFree(storage->data);释放了这个内存。

问题是第一次释放非常缓慢,大约10秒,而其他的几乎是瞬间释放。

我的问题如下:可能导致这种差异的原因是什么? GPU上的释放内存通常会慢吗?

2 个答案:

答案 0 :(得分:3)

正如在NVIDIA论坛上指出的那样,对于你的计时方式而不是cudaFree来说,这几乎肯定是一个问题。

答案 1 :(得分:1)

不应该那么慢,在Linux上使用cuda 2.2只需要几分之一秒。 您是否尝试过运行主机和设备分析器以确定为什么慢? 你执行了多少单独的分配?这确实有一些惩罚,但不是那么大。