我使用cudaMalloc((void**)&(storage->data), size * sizeof(float))
在GPU上分配一些浮点数组(相当大,即9,000,000个元素)。在我的程序结束时,我使用cudaFree(storage->data);
释放了这个内存。
问题是第一次释放非常缓慢,大约10秒,而其他的几乎是瞬间释放。
我的问题如下:可能导致这种差异的原因是什么? GPU上的释放内存通常会慢吗?
答案 0 :(得分:3)
正如在NVIDIA论坛上指出的那样,对于你的计时方式而不是cudaFree来说,这几乎肯定是一个问题。
答案 1 :(得分:1)
不应该那么慢,在Linux上使用cuda 2.2只需要几分之一秒。 您是否尝试过运行主机和设备分析器以确定为什么慢? 你执行了多少单独的分配?这确实有一些惩罚,但不是那么大。