释放CUDA内存的速度非常缓慢

4
我正在使用cudaMalloc((void**)&(storage->data), size * sizeof(float))在GPU上分配一些float数组(相当大,即900万个元素)。在程序结束时,我使用cudaFree(storage->data);释放此内存。

问题在于,第一次销毁非常缓慢,大约需要10秒钟,而其他销毁几乎瞬间完成。

我的问题是:这种差异可能是什么原因? GPU上的内存销毁通常如此缓慢吗?

2个回答

3

正如在NVIDIA论坛上指出的那样,几乎可以确定问题不在于cudaFree本身,而是与您计时的方式有关。


是的,那就是问题所在。我在SO和nVidia论坛上都发了帖子,以确保有能力的人会回答,结果我在两个论坛上都得到了我想要的答案!太棒了!谢谢! - Wookai

1

不应该这么慢,在Linux上使用cuda 2.2只需要几分之一秒的时间。您尝试过运行主机和设备分析器来确定为什么会变慢吗?您执行了多少个单独的分配操作?这确实会有一些惩罚,但并不是很大。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接