為什麼cudaMemcpyDeviceToHost會很慢

你好:

我的程式分別跑 cudaMemcpyHostToDevice 和 kernel 和 cudaMemcpyDeviceToHost 時間分別為0.004秒,0.007秒,3.202秒
我想問的是為什麼cudaMemcpyDeviceToHost時間會很慢?比cudaMemcpyHostToDevice慢了很多。

樓主你好:

這是因為你往往是這樣的:
host → device copy (記為時間1)
kernel<<<>>>() (記為時間2)
device → host copy (記為時間3)

但實際上,您的時間3將包含kernel的執行時間和後續的傳輸時間的。
因為您的kernel將不等執行完畢就返回了。

您可以這樣:
host → device copy (記為時間1)
kernel<<<>>>() 再 cudaDeviceSynchronize() (記為總計時間2)
device → host copy (記為時間3)

這樣是比較客觀的.

您覺得呢?

恩 我在去試試看