2010-01-28 83 views
4

我分配使用cudaMalloc((void**)&(storage->data), size * sizeof(float)) GPU的一些浮陣列(相當大,即9000000元素)。在我的程序結束時,我使用cudaFree(storage->data);釋放了這個內存。釋放CUDA存儲器十分緩慢

的問題是,第一釋放實在是太慢了,10秒左右,而其他人幾乎是瞬間。

我的問題如下:什麼可能會導致這種差異? GPU上的解除分配內存通常很慢嗎?

回答

3

正如指出的NVIDIA論壇,它幾乎肯定與你計時的東西,而不是cudaFree的方式有問題。

+0

是的,這是問題所在。我詢問了SO和nVidia論壇,以確保有能幹的人會回答,並且我都希望我都願意;)!真棒傢伙!謝謝 ! – Wookai 2010-01-29 15:22:15

1

不應該是緩慢的,在CUDA的Linux 2.2需要幾分之一秒。 您是否嘗試過運行主機和設備配置文件來查看究竟爲什麼很慢? 你有多少單獨的分配?這確實有一些懲罰,但沒有那麼大。